]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Don't pass PRESENTATION format string data into json-c
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 6 Apr 2021 15:42:38 +0000 (16:42 +0100)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Tue, 6 Apr 2021 15:42:38 +0000 (16:42 +0100)
Else we'll get all kinds of horrible double escaping

src/lib/json/json.c

index 84670702485f778247b2a8a9e10fb2c15fb78cab..4331340af1a9331c44ce637fa84e6b662153d5e3 100644 (file)
@@ -212,12 +212,18 @@ json_object *json_object_from_value_box(TALLOC_CTX *ctx, fr_value_box_t const *d
                fr_value_box_aprint(ctx, &p, data, NULL);
                if (!p) return NULL;
 
-               obj = json_object_new_string(p);
+               obj = json_object_new_string_len(p, talloc_array_length(p) - 1);
                talloc_free(p);
 
                return obj;
        }
 
+       case FR_TYPE_STRING:
+               return json_object_new_string_len(data->vb_strvalue, data->vb_length);
+
+       case FR_TYPE_OCTETS:
+               return json_object_new_string_len((char *)data->vb_octets, data->vb_length);
+
        case FR_TYPE_BOOL:
                return json_object_new_boolean(data->vb_uint8);