BUG/MINOR: sample: fix the json converter's endian-sensitivity

About every time there's a pointer cast in the code, there's a hidden
bug, and this one was no exception, as it passes the first octet of the
native representation of an integer as a single-character string, which
obviously only works on little endian machines. On big-endian machines,
something as simple as "str(foo),json" only returns zeroes.

This bug was introduced with the JSON converter in 1.6-dev1 by commit
317e1c4f1e ("MINOR: sample: add "json" converter"), the fix may be
backported to all stable branches.
This commit is contained in:
Willy Tarreau 2020-02-25 08:37:37 +01:00
parent 908071171b
commit 5715da269d

View File

@ -2058,7 +2058,8 @@ static int sample_conv_json(const struct arg *arg_p, struct sample *smp, void *p
} }
else { else {
len = 1; len = 1;
str = (char *)&c; _str[0] = c;
str = _str;
} }
/* Check length */ /* Check length */