From: Alan T. DeKok Date: Wed, 2 Apr 2025 01:04:08 +0000 (-0400) Subject: use fr_value_box_strdup_shallow_replace X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb59726a8dd07bd9751c0cbd63d23a56e591697b;p=thirdparty%2Ffreeradius-server.git use fr_value_box_strdup_shallow_replace which is less work than the alternatives --- diff --git a/src/lib/ldap/util.c b/src/lib/ldap/util.c index 15a5ca2a3c6..7bdabe81179 100644 --- a/src/lib/ldap/util.c +++ b/src/lib/ldap/util.c @@ -112,12 +112,10 @@ int fr_ldap_box_escape(fr_value_box_t *vb, UNUSED void *uctx) fr_sbuff_t sbuff; fr_sbuff_uctx_talloc_t sbuff_ctx; size_t len; - fr_value_box_entry_t entry; - if (fr_value_box_is_safe_for(vb, fr_ldap_box_escape)) return 0; + fr_assert(!fr_value_box_is_safe_for(vb, fr_ldap_box_escape)); if ((vb->type != FR_TYPE_STRING) && (fr_value_box_cast_in_place(vb, vb, FR_TYPE_STRING, NULL) < 0)) { - fr_value_box_clear_value(vb); return -1; } @@ -134,15 +132,10 @@ int fr_ldap_box_escape(fr_value_box_t *vb, UNUSED void *uctx) if (len == vb->vb_length) { talloc_free(fr_sbuff_buff(&sbuff)); } else { - entry = vb->entry; fr_sbuff_trim_talloc(&sbuff, len); - fr_value_box_clear_value(vb); - fr_value_box_strdup_shallow(vb, NULL, fr_sbuff_buff(&sbuff), vb->tainted); - vb->entry = entry; + fr_value_box_strdup_shallow_replace(vb, fr_sbuff_buff(&sbuff), len); } - fr_value_box_mark_safe_for(vb, fr_ldap_box_escape); - return 0; } diff --git a/src/modules/rlm_ldap/rlm_ldap.c b/src/modules/rlm_ldap/rlm_ldap.c index 03da5252b8c..35b5a75d66c 100644 --- a/src/modules/rlm_ldap/rlm_ldap.c +++ b/src/modules/rlm_ldap/rlm_ldap.c @@ -531,8 +531,7 @@ static int ldap_uri_part_escape(fr_value_box_t *vb, UNUSED void *uctx) len = fr_ldap_uri_escape_func(NULL, fr_sbuff_buff(&sbuff), vb->vb_length * 3 + 1, vb->vb_strvalue, NULL); fr_sbuff_trim_talloc(&sbuff, len); - fr_value_box_clear_value(vb); - fr_value_box_strdup_shallow(vb, NULL, fr_sbuff_buff(&sbuff), vb->tainted); + fr_value_box_strdup_shallow_replace(vb, fr_sbuff_buff(&sbuff), len); return 0; } diff --git a/src/modules/rlm_sql/rlm_sql.c b/src/modules/rlm_sql/rlm_sql.c index 70e3cfb3259..a0cfdd6ca28 100644 --- a/src/modules/rlm_sql/rlm_sql.c +++ b/src/modules/rlm_sql/rlm_sql.c @@ -350,7 +350,6 @@ static int CC_HINT(nonnull(2,3)) sql_xlat_escape(request_t *request, fr_value_bo void *arg = NULL; rlm_sql_escape_uctx_t *ctx = uctx; rlm_sql_t const *inst = talloc_get_type_abort_const(ctx->sql, rlm_sql_t); - fr_value_box_entry_t entry; rlm_sql_thread_t *thread = talloc_get_type_abort(module_thread(inst->mi)->data, rlm_sql_thread_t); /* @@ -399,13 +398,8 @@ static int CC_HINT(nonnull(2,3)) sql_xlat_escape(request_t *request, fr_value_bo len = inst->sql_escape_func(request, fr_sbuff_buff(&sbuff), vb->vb_length * 3 + 1, vb->vb_strvalue, arg); if (len < 0) goto error; - /* - * fr_value_box_strdup_shallow resets the dlist entries - take a copy - */ - entry = vb->entry; fr_sbuff_trim_talloc(&sbuff, len); - fr_value_box_clear_value(vb); - fr_value_box_strdup_shallow(vb, NULL, fr_sbuff_buff(&sbuff), vb->tainted); + fr_value_box_strdup_shallow_replace(vb, fr_sbuff_buff(&sbuff), len); /* * Different databases have slightly different ideas as @@ -414,7 +408,6 @@ static int CC_HINT(nonnull(2,3)) sql_xlat_escape(request_t *request, fr_value_bo * cross-contaminate "safe" values across databases. */ fr_value_box_mark_safe_for(vb, inst->driver); - vb->entry = entry; return 0; }