From: Willy Tarreau Date: Tue, 25 Feb 2020 07:37:37 +0000 (+0100) Subject: BUG/MINOR: sample: fix the json converter's endian-sensitivity X-Git-Tag: v2.2-dev3~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5715da269d6ec1e178b04d1c7aa25982e10873d7;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/sample.c b/src/sample.c index eb903ec6d3..0fb5f9aa79 100644 --- a/src/sample.c +++ b/src/sample.c @@ -2058,7 +2058,8 @@ static int sample_conv_json(const struct arg *arg_p, struct sample *smp, void *p } else { len = 1; - str = (char *)&c; + _str[0] = c; + str = _str; } /* Check length */