From: Olivier Houchard Date: Fri, 7 Dec 2018 14:23:41 +0000 (+0100) Subject: BUG/MEDIUM: sample: Don't treat SMP_T_METH as SMP_T_STR. X-Git-Tag: v1.9-dev10~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4468f1cacbe833a04701fcd846be959bc07803f5;p=thirdparty%2Fhaproxy.git 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 134ff76f5f..88217501d4 100644 --- a/src/sample.c +++ b/src/sample.c @@ -666,11 +666,14 @@ int smp_dup(struct sample *smp) 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;