From: Arran Cudbard-Bell Date: Sun, 3 Sep 2023 17:09:28 +0000 (-0600) Subject: Fix a large number of invalid ctx uses in fr_value_box* functions X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9554cbf8d400ce0ebed50da3a76a4343e99db6fd;p=thirdparty%2Ffreeradius-server.git Fix a large number of invalid ctx uses in fr_value_box* functions --- diff --git a/src/lib/eap_aka_sim/xlat.c b/src/lib/eap_aka_sim/xlat.c index 9c04c222d6e..1805a8f34cf 100644 --- a/src/lib/eap_aka_sim/xlat.c +++ b/src/lib/eap_aka_sim/xlat.c @@ -140,7 +140,7 @@ static xlat_action_t aka_sim_xlat_id_type_xlat(TALLOC_CTX *ctx, fr_dcursor_t *ou } MEM(vb = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL)); - fr_value_box_bstrndup(ctx, vb, NULL, type, strlen(type), false); + fr_value_box_bstrndup(vb, vb, NULL, type, strlen(type), false); fr_dcursor_append(out, vb); return XLAT_ACTION_DONE; @@ -490,7 +490,7 @@ static xlat_action_t aka_sim_3gpp_temporary_id_encrypt_xlat(TALLOC_CTX *ctx, fr_ } MEM(vb = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL)); - fr_value_box_bstrndup(ctx, vb, NULL, encrypted, strlen(encrypted), false); + fr_value_box_bstrndup(vb, vb, NULL, encrypted, strlen(encrypted), false); fr_dcursor_append(out, vb); return XLAT_ACTION_DONE; diff --git a/src/lib/json/json.c b/src/lib/json/json.c index 222aff3c33b..46b67ba264a 100644 --- a/src/lib/json/json.c +++ b/src/lib/json/json.c @@ -125,7 +125,7 @@ int fr_json_object_to_value_box(TALLOC_CTX *ctx, fr_value_box_t *out, json_objec /* * Just copy the string to the box. */ - fr_value_box_bstrndup(ctx, out, NULL, value, len, tainted); + fr_value_box_bstrndup(out, out, NULL, value, len, tainted); } break; @@ -178,7 +178,7 @@ int fr_json_object_to_value_box(TALLOC_CTX *ctx, fr_value_box_t *out, json_objec { char const *value = json_object_to_json_string(object); - fr_value_box_bstrndup(ctx, out, NULL, value, strlen(value), tainted); + fr_value_box_bstrndup(out, out, NULL, value, strlen(value), tainted); } break; } diff --git a/src/lib/ldap/util.c b/src/lib/ldap/util.c index a6e1531b77a..1f16b141c98 100644 --- a/src/lib/ldap/util.c +++ b/src/lib/ldap/util.c @@ -69,7 +69,6 @@ static const bool escapes[UINT8_MAX + 1] = { */ size_t fr_ldap_escape_func(UNUSED request_t *request, char *out, size_t outlen, char const *in, UNUSED void *arg) { - size_t left = outlen; if (*in && ((*in == ' ') || (*in == '#'))) goto encode; diff --git a/src/lib/redis/redis.c b/src/lib/redis/redis.c index 47b6a6f7ef5..99ad53042dd 100644 --- a/src/lib/redis/redis.c +++ b/src/lib/redis/redis.c @@ -281,7 +281,7 @@ int fr_redis_reply_to_value_box(TALLOC_CTX *ctx, fr_value_box_t *out, redisReply if (shallow) { fr_value_box_bstrndup_shallow(to_cast, NULL, reply->str, reply->len, true); } else { - if (fr_value_box_bstrndup(ctx, to_cast, NULL, reply->str, reply->len, true) < 0) return -1; + if (fr_value_box_bstrndup(to_cast, to_cast, NULL, reply->str, reply->len, true) < 0) return -1; } break; @@ -297,7 +297,7 @@ int fr_redis_reply_to_value_box(TALLOC_CTX *ctx, fr_value_box_t *out, redisReply fr_strerror_const("Out of memory"); return -1; } - if (fr_value_box_bstrndup(ctx, verb, NULL, reply->str, reply->len, true) < 0) return -1; + if (fr_value_box_bstrndup(verb, verb, NULL, reply->str, reply->len, true) < 0) return -1; fr_value_box_list_insert_head(&out->vb_group, verb); vtype = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL); diff --git a/src/lib/server/main_config.c b/src/lib/server/main_config.c index c0961e73f46..eafc60bce60 100644 --- a/src/lib/server/main_config.c +++ b/src/lib/server/main_config.c @@ -576,7 +576,7 @@ static xlat_action_t xlat_config(TALLOC_CTX *ctx, fr_dcursor_t *out, if (!value) return XLAT_ACTION_DONE; MEM(vb = fr_value_box_alloc_null(ctx)); - fr_value_box_bstrndup(ctx, vb, NULL, value, strlen(value), false); + fr_value_box_bstrndup(vb, vb, NULL, value, strlen(value), false); fr_dcursor_append(out, vb); return XLAT_ACTION_DONE; diff --git a/src/lib/server/tmpl_eval.c b/src/lib/server/tmpl_eval.c index 90eca0de5d0..86586953439 100644 --- a/src/lib/server/tmpl_eval.c +++ b/src/lib/server/tmpl_eval.c @@ -723,7 +723,7 @@ ssize_t _tmpl_to_atype(TALLOC_CTX *ctx, void *out, MEM(*vb_out = fr_value_box_alloc_null(ctx)); - ret = needs_dup ? fr_value_box_copy(ctx, *vb_out, to_cast) : fr_value_box_steal(ctx, *vb_out, to_cast); + ret = needs_dup ? fr_value_box_copy(*vb_out, *vb_out, to_cast) : fr_value_box_steal(*vb_out, *vb_out, to_cast); talloc_free(tmp_ctx); if (ret < 0) { RPEDEBUG("Failed copying data to output box"); diff --git a/src/lib/server/trigger.c b/src/lib/server/trigger.c index 229ff8ea880..862f18d069b 100644 --- a/src/lib/server/trigger.c +++ b/src/lib/server/trigger.c @@ -97,7 +97,7 @@ xlat_action_t trigger_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, } MEM(vb = fr_value_box_alloc_null(ctx)); - fr_value_box_copy(ctx, vb, &vp->data); + fr_value_box_copy(vb, vb, &vp->data); fr_dcursor_append(out, vb); return XLAT_ACTION_DONE; } diff --git a/src/lib/unlang/edit.c b/src/lib/unlang/edit.c index 38be510931f..91086559b33 100644 --- a/src/lib/unlang/edit.c +++ b/src/lib/unlang/edit.c @@ -1074,7 +1074,7 @@ static int check_lhs_value(request_t *request, unlang_frame_state_edit_t *state, data: MEM(box = fr_value_box_alloc_null(state)); - if (fr_value_box_copy(state, box, tmpl_value(vpt)) < 0) return -1; + if (fr_value_box_copy(box, box, tmpl_value(vpt)) < 0) return -1; fr_value_box_list_insert_tail(¤t->parent->rhs.result, box); @@ -1098,7 +1098,7 @@ static int check_lhs_value(request_t *request, unlang_frame_state_edit_t *state, vp = tmpl_dcursor_init(NULL, request, &cc, &cursor, request, vpt); while (vp) { MEM(box = fr_value_box_alloc_null(state)); - if (fr_value_box_copy(state, box, &vp->data) < 0) return -1; + if (fr_value_box_copy(box, box, &vp->data) < 0) return -1; fr_value_box_list_insert_tail(¤t->parent->rhs.result, box); diff --git a/src/lib/unlang/foreach.c b/src/lib/unlang/foreach.c index 10ada1dfef3..15630b79db6 100644 --- a/src/lib/unlang/foreach.c +++ b/src/lib/unlang/foreach.c @@ -263,7 +263,7 @@ static xlat_action_t unlang_foreach_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, fr_assert(vp != NULL); MEM(vb = fr_value_box_alloc_null(ctx)); - fr_value_box_copy(ctx, vb, &vp->data); + fr_value_box_copy(vb, vb, &vp->data); fr_dcursor_append(out, vb); return XLAT_ACTION_DONE; } diff --git a/src/lib/unlang/xlat_builtin.c b/src/lib/unlang/xlat_builtin.c index a4384d46d7c..3e04906634a 100644 --- a/src/lib/unlang/xlat_builtin.c +++ b/src/lib/unlang/xlat_builtin.c @@ -512,7 +512,7 @@ static xlat_action_t xlat_func_explode(TALLOC_CTX *ctx, fr_dcursor_t *out, if (fr_sbuff_behind(&m_start) == 0) goto advance; MEM(vb = fr_value_box_alloc_null(ctx)); - fr_value_box_bstrndup(ctx, vb, NULL, fr_sbuff_current(&m_start), + fr_value_box_bstrndup(vb, vb, NULL, fr_sbuff_current(&m_start), fr_sbuff_behind(&m_start), string->tainted); fr_dcursor_append(out, vb); @@ -523,7 +523,7 @@ static xlat_action_t xlat_func_explode(TALLOC_CTX *ctx, fr_dcursor_t *out, } fr_sbuff_set_to_end(&sbuff); MEM(vb = fr_value_box_alloc_null(ctx)); - fr_value_box_bstrndup(ctx, vb, NULL, fr_sbuff_current(&m_start), + fr_value_box_bstrndup(vb, vb, NULL, fr_sbuff_current(&m_start), fr_sbuff_behind(&m_start), string->tainted); fr_dcursor_append(out, vb); break; @@ -709,7 +709,7 @@ static xlat_action_t xlat_func_integer(TALLOC_CTX *ctx, fr_dcursor_t *out, fr_snprint_uint128(buff, sizeof(buff), ntohlll(ipv6int)); MEM(vb = fr_value_box_alloc_null(ctx)); - fr_value_box_bstrndup(ctx, vb, NULL, buff, strlen(buff), false); + fr_value_box_bstrndup(vb, vb, NULL, buff, strlen(buff), false); fr_dcursor_append(out, vb); talloc_free(in_vb); return XLAT_ACTION_DONE; diff --git a/src/lib/unlang/xlat_eval.c b/src/lib/unlang/xlat_eval.c index e9b0d9ddb95..9dc83597f7a 100644 --- a/src/lib/unlang/xlat_eval.c +++ b/src/lib/unlang/xlat_eval.c @@ -1149,7 +1149,7 @@ xlat_action_t xlat_frame_eval(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_exp_head_ * because references aren't threadsafe. */ MEM(value = fr_value_box_alloc_null(ctx)); - if (fr_value_box_copy(ctx, value, &node->data) < 0) goto fail; + if (fr_value_box_copy(value, value, &node->data) < 0) goto fail; fr_dcursor_append(out, value); continue; diff --git a/src/modules/rlm_cache/rlm_cache.c b/src/modules/rlm_cache/rlm_cache.c index efdf9b81790..364281174f5 100644 --- a/src/modules/rlm_cache/rlm_cache.c +++ b/src/modules/rlm_cache/rlm_cache.c @@ -872,7 +872,7 @@ xlat_action_t cache_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, (tmpl_list(map->lhs) != tmpl_list(target))) continue; MEM(vb = fr_value_box_alloc_null(ctx)); - fr_value_box_copy(ctx, vb, tmpl_value(map->rhs)); + fr_value_box_copy(vb, vb, tmpl_value(map->rhs)); fr_dcursor_append(out, vb); break; } diff --git a/src/modules/rlm_dict/rlm_dict.c b/src/modules/rlm_dict/rlm_dict.c index 2e8c8bd6293..49d82dd8797 100644 --- a/src/modules/rlm_dict/rlm_dict.c +++ b/src/modules/rlm_dict/rlm_dict.c @@ -53,7 +53,7 @@ static xlat_action_t xlat_dict_attr_by_num(TALLOC_CTX *ctx, fr_dcursor_t *out, MEM(vb = fr_value_box_alloc_null(ctx)); - if (fr_value_box_bstrndup(ctx, vb, NULL, da->name, strlen(da->name), false) < 0) { + if (fr_value_box_bstrndup(vb, vb, NULL, da->name, strlen(da->name), false) < 0) { talloc_free(vb); return XLAT_ACTION_FAIL; } @@ -92,7 +92,7 @@ static xlat_action_t xlat_dict_attr_by_oid(TALLOC_CTX *ctx, fr_dcursor_t *out, MEM(vb = fr_value_box_alloc_null(ctx)); - if (fr_value_box_bstrndup(ctx, vb, NULL, da->name, strlen(da->name), false) < 0) { + if (fr_value_box_bstrndup(vb, vb, NULL, da->name, strlen(da->name), false) < 0) { talloc_free(vb); return XLAT_ACTION_FAIL; } @@ -126,7 +126,7 @@ static xlat_action_t xlat_vendor(TALLOC_CTX *ctx, fr_dcursor_t *out, MEM(vb = fr_value_box_alloc_null(ctx)); - if (fr_value_box_bstrndup(ctx, vb, NULL, vendor->name, strlen(vendor->name), false) < 0) { + if (fr_value_box_bstrndup(vb, vb, NULL, vendor->name, strlen(vendor->name), false) < 0) { talloc_free(vb); return XLAT_ACTION_FAIL; } @@ -181,7 +181,7 @@ static xlat_action_t xlat_attr(TALLOC_CTX *ctx, fr_dcursor_t *out, MEM(vb = fr_value_box_alloc_null(ctx)); - if (fr_value_box_bstrndup(ctx, vb, NULL, vp->da->name, strlen(vp->da->name), false) < 0) { + if (fr_value_box_bstrndup(vb, vb, NULL, vp->da->name, strlen(vp->da->name), false) < 0) { talloc_free(vb); return XLAT_ACTION_FAIL; } diff --git a/src/modules/rlm_ldap/rlm_ldap.c b/src/modules/rlm_ldap/rlm_ldap.c index 343563f114b..202ecd902f1 100644 --- a/src/modules/rlm_ldap/rlm_ldap.c +++ b/src/modules/rlm_ldap/rlm_ldap.c @@ -515,7 +515,7 @@ static xlat_action_t ldap_xlat_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, count = ldap_count_values_len(values); for (i = 0; i < count; i++) { MEM(vb = fr_value_box_alloc_null(ctx)); - if (fr_value_box_bstrndup(ctx, vb, NULL, values[i]->bv_val, values[i]->bv_len, true) < 0) { + if (fr_value_box_bstrndup(vb, vb, NULL, values[i]->bv_val, values[i]->bv_len, true) < 0) { talloc_free(vb); RPERROR("Failed creating value from LDAP response"); break; diff --git a/src/modules/rlm_perl/rlm_perl.c b/src/modules/rlm_perl/rlm_perl.c index 4760b4d4a88..1c344ea7220 100644 --- a/src/modules/rlm_perl/rlm_perl.c +++ b/src/modules/rlm_perl/rlm_perl.c @@ -343,7 +343,7 @@ static int perl_sv_to_vblist(TALLOC_CTX *ctx, fr_value_box_list_t *list, request DEBUG3("String returned"); tmp = SvPVutf8(sv, len); MEM(vb = fr_value_box_alloc_null(ctx)); - if (fr_value_box_bstrndup(ctx, vb, NULL, tmp, len, SvTAINTED(sv)) < 0) { + if (fr_value_box_bstrndup(vb, vb, NULL, tmp, len, SvTAINTED(sv)) < 0) { talloc_free(vb); RPEDEBUG("Failed to allocate %ld for output", len); return -1; @@ -378,7 +378,7 @@ static int perl_sv_to_vblist(TALLOC_CTX *ctx, fr_value_box_list_t *list, request * Add key first */ MEM(vb = fr_value_box_alloc_null(ctx)); - if (fr_value_box_bstrndup(ctx, vb, NULL, tmp, sv_len, SvTAINTED(hv_sv)) < 0) { + if (fr_value_box_bstrndup(vb, vb, NULL, tmp, sv_len, SvTAINTED(hv_sv)) < 0) { talloc_free(vb); RPEDEBUG("Failed to allocate %d for output", sv_len); return -1; diff --git a/src/modules/rlm_test/rlm_test.c b/src/modules/rlm_test/rlm_test.c index 49c7042258b..c93d97723e5 100644 --- a/src/modules/rlm_test/rlm_test.c +++ b/src/modules/rlm_test/rlm_test.c @@ -389,7 +389,7 @@ static xlat_action_t test_xlat_passthrough(TALLOC_CTX *ctx, fr_dcursor_t *out, fr_value_box_list_foreach(in, vb_p) { MEM(vb = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL)); - if (fr_value_box_copy(ctx, vb, vb_p) < 0) { + if (fr_value_box_copy(vb, vb, vb_p) < 0) { talloc_free(vb); return XLAT_ACTION_FAIL; }