From: Arran Cudbard-Bell Date: Sat, 11 Feb 2023 03:00:15 +0000 (-0600) Subject: json: Fix typo... Don't mis-cast integers X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1308ed1bfaa4260b3b23901939a8f9a3ee49521c;p=thirdparty%2Ffreeradius-server.git json: Fix typo... Don't mis-cast integers --- diff --git a/src/lib/json/json.c b/src/lib/json/json.c index dee76bdf715..2f39d37bc4f 100644 --- a/src/lib/json/json.c +++ b/src/lib/json/json.c @@ -156,9 +156,9 @@ int fr_json_object_to_value_box(TALLOC_CTX *ctx, fr_value_box_t *out, json_objec } else if (num > UINT16_MAX) { /* 32bit unsigned */ fr_value_box(out, (uint32_t)num, tainted); } else if (num > UINT8_MAX) { /* 16bit unsigned */ - fr_value_box(out, (int16_t)num, tainted); + fr_value_box(out, (uint16_t)num, tainted); } else { /* 8bit unsigned */ - fr_value_box(out, (int8_t)num, tainted); + fr_value_box(out, (uint8_t)num, tainted); } } break; diff --git a/src/tests/modules/json/regression02.unlang b/src/tests/modules/json/regression02.unlang new file mode 100644 index 00000000000..fb4c990b5a8 --- /dev/null +++ b/src/tests/modules/json/regression02.unlang @@ -0,0 +1,28 @@ +# An error string from Azure AD, try and access all the bits +&Tmp-String-0 := "{\"error\":\"invalid_grant\",\"error_description\":\"AADSTS50126: Error validating credentials due to invalid username or password.\\r\\nTrace ID: 20bb60a5-5504-4a6b-ab40-a353a95c2500\\r\\nCorrelation ID: e58bb567-ad15-4a46-8341-cc6e800dd817\\r\\nTimestamp: 2023-02-11 02:32:40Z\",\"error_codes\":[50126],\"timestamp\":\"2023-02-11 02:32:40Z\",\"trace_id\":\"20bb60a5-5504-4a6b-ab40-a353a95c2500\",\"correlation_id\":\"e58bb567-ad15-4a46-8341-cc6e800dd817\",\"error_uri\":\"https://login.microsoftonline.com/error?code=50126\"}" + +map json &Tmp-String-0 { + &Tmp-String-0 := '$.error' + &Tmp-String-1 := '$.error_description' + &Tmp-String-2 := '$.error_uri' + &Tmp-Integer-0 := '$.error_codes[0]' +} + +if (&Tmp-String-0 != 'invalid_grant') { + test_fail +} + +if (&Tmp-String-1 != "AADSTS50126: Error validating credentials due to invalid username or password.\r\nTrace ID: 20bb60a5-5504-4a6b-ab40-a353a95c2500\r\nCorrelation ID: e58bb567-ad15-4a46-8341-cc6e800dd817\r\nTimestamp: 2023-02-11 02:32:40Z") { + test_fail +} + +if (&Tmp-String-2 != 'https://login.microsoftonline.com/error?code=50126') { + test_fail +} + +# This was being parsed as a negative integer +if (&Tmp-Integer-0 != 50126) { + test_fail +} + +test_pass