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.
diff --git a/src/sample.c b/src/sample.c
index 134ff76..8821750 100644
--- a/src/sample.c
+++ b/src/sample.c
@@ -666,11 +666,14 @@
case SMP_T_STR:
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)
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;
smp->data.u.str = *trash;
break;