]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
parser_json: Fix synproxy object mss/wscale parsing
authorPhil Sutter <phil@nwl.cc>
Wed, 20 Sep 2023 17:40:11 +0000 (19:40 +0200)
committerPhil Sutter <phil@nwl.cc>
Fri, 22 Sep 2023 08:55:25 +0000 (10:55 +0200)
The fields are 16 and 8 bits in size, introduce temporary variables to
parse into.

Fixes: f44ab88b1088e ("src: add synproxy stateful object support")
Signed-off-by: Phil Sutter <phil@nwl.cc>
src/parser_json.c

index ddd9c496b57f7f010588e75406eb5998b0ed2ed0..6d8e5c625367b6850baf0b57fd2b2e1c129899d2 100644 (file)
@@ -3447,7 +3447,7 @@ static struct cmd *json_parse_cmd_add_object(struct json_ctx *ctx,
 {
        const char *family, *tmp, *rate_unit = "packets", *burst_unit = "bytes";
        uint32_t l3proto = NFPROTO_UNSPEC;
-       int inv = 0, flags = 0, i;
+       int inv = 0, flags = 0, i, j;
        struct handle h = { 0 };
        struct obj *obj;
        json_t *jflags;
@@ -3634,11 +3634,12 @@ static struct cmd *json_parse_cmd_add_object(struct json_ctx *ctx,
        case CMD_OBJ_SYNPROXY:
                obj->type = NFT_OBJECT_SYNPROXY;
                if (json_unpack_err(ctx, root, "{s:i, s:i}",
-                                   "mss", &obj->synproxy.mss,
-                                   "wscale", &obj->synproxy.wscale)) {
+                                   "mss", &i, "wscale", &j)) {
                        obj_free(obj);
                        return NULL;
                }
+               obj->synproxy.mss = i;
+               obj->synproxy.wscale = j;
                obj->synproxy.flags |= NF_SYNPROXY_OPT_MSS;
                obj->synproxy.flags |= NF_SYNPROXY_OPT_WSCALE;
                if (!json_unpack(root, "{s:o}", "flags", &jflags)) {