From: Arran Cudbard-Bell Date: Tue, 16 Sep 2014 01:59:11 +0000 (-0400) Subject: Check for null leaf values when parsing JSON structures. Fixes #790 X-Git-Tag: release_3_0_5~546 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=630189e43dee9484f5afdbc9cc1cc82facd785c3;p=thirdparty%2Ffreeradius-server.git Check for null leaf values when parsing JSON structures. Fixes #790 --- diff --git a/src/modules/rlm_rest/rest.c b/src/modules/rlm_rest/rest.c index 3cc984b8a30..789320865b0 100644 --- a/src/modules/rlm_rest/rest.c +++ b/src/modules/rlm_rest/rest.c @@ -1129,12 +1129,23 @@ static VALUE_PAIR *json_pairmake_leaf(UNUSED rlm_rest_t *instance, UNUSED rlm_re VALUE_PAIR *vp; + if (json_object_is_type(leaf, json_type_null)) { + RDEBUG3("Got null value for attribute \"%s\", skipping...", da->name); + + return NULL; + } + /* * Should encode any nested JSON structures into JSON strings. * * "I knew you liked JSON so I put JSON in your JSON!" */ value = json_object_get_string(leaf); + if (!value) { + RWDEBUG("Failed getting string value for attribute \"%s\", skipping...", da->name); + + return NULL; + } RDEBUG3("\tType : %s", fr_int2str(dict_attr_types, da->type, "")); RDEBUG3("\tLength : %zu", strlen(value)); @@ -1152,7 +1163,7 @@ static VALUE_PAIR *json_pairmake_leaf(UNUSED rlm_rest_t *instance, UNUSED rlm_re vp = pairalloc(ctx, da); if (!vp) { - RWDEBUG("Failed creating valuepair, skipping..."); + RWDEBUG("Failed creating valuepair for attribute \"%s\", skipping...", da->name); talloc_free(expanded); return NULL; @@ -1163,7 +1174,7 @@ static VALUE_PAIR *json_pairmake_leaf(UNUSED rlm_rest_t *instance, UNUSED rlm_re ret = pairparsevalue(vp, to_parse, 0); talloc_free(expanded); if (ret < 0) { - RWDEBUG("Incompatible value assignment, skipping..."); + RWDEBUG("Incompatible value assignment for attribute \"%s\", skipping...", da->name); talloc_free(vp); return NULL;