BUG/MEDIUM: http: don't store url_decode() result in the samples's length

By convenience or laziness we used to store url_decode()'s return code
into smp->data.u.str.data. The result checks applied there compare it
to 0 while it's now unsigned since commit 843b7cb ("MEDIUM: chunks: make
the chunk struct's fields match the buffer struct "). Let's clean this up
and test the result itself without storing it first.

No backport is needed.
This commit is contained in:
Willy Tarreau 2018-08-22 05:08:57 +02:00
parent 6e27be1a5d
commit 9c768fdca1

View File

@ -11827,6 +11827,8 @@ expect_comma:
/* This fetch url-decode any input string. */
static int sample_conv_url_dec(const struct arg *args, struct sample *smp, void *private)
{
int len;
/* If the constant flag is set or if not size is avalaible at
* the end of the buffer, copy the string in other buffer
* before decoding.
@ -11841,8 +11843,11 @@ static int sample_conv_url_dec(const struct arg *args, struct sample *smp, void
/* Add final \0 required by url_decode(), and convert the input string. */
smp->data.u.str.area[smp->data.u.str.data] = '\0';
smp->data.u.str.data = url_decode(smp->data.u.str.area);
return (smp->data.u.str.data >= 0);
len = url_decode(smp->data.u.str.area);
if (len < 0)
return 0;
smp->data.u.str.data = len;
return 1;
}
static int smp_conv_req_capture(const struct arg *args, struct sample *smp, void *private)