BUG/MEDIUM: sample: Don't treat SMP_T_METH as SMP_T_STR.
In smp_dup(), don't consider a SMP_T_METH with an unknown method the same as SMP_T_STR. The string and string length aren't stored at the same place. This should be backported to 1.8.
This commit is contained in:
parent
4d58ba79dd
commit
4468f1cacb
|
@ -666,11 +666,14 @@ int smp_dup(struct sample *smp)
|
||||||
|
|
||||||
case SMP_T_STR:
|
case SMP_T_STR:
|
||||||
trash = get_trash_chunk();
|
trash = get_trash_chunk();
|
||||||
trash->data = smp->data.u.str.data;
|
trash->data = smp->data.type == SMP_T_STR ?
|
||||||
|
smp->data.u.str.data : smp->data.u.meth.str.data;
|
||||||
if (trash->data > trash->size - 1)
|
if (trash->data > trash->size - 1)
|
||||||
trash->data = trash->size - 1;
|
trash->data = trash->size - 1;
|
||||||
|
|
||||||
memcpy(trash->area, smp->data.u.str.area, trash->data);
|
memcpy(trash->area, smp->data.type == SMP_T_STR ?
|
||||||
|
smp->data.u.str.area : smp->data.u.meth.str.area,
|
||||||
|
trash->data);
|
||||||
trash->area[trash->data] = 0;
|
trash->area[trash->data] = 0;
|
||||||
smp->data.u.str = *trash;
|
smp->data.u.str = *trash;
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue