]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
return the VP only if the allocate_update was successful
authorAlan T. DeKok <aland@freeradius.org>
Fri, 19 Nov 2021 15:38:26 +0000 (10:38 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 19 Nov 2021 20:36:59 +0000 (15:36 -0500)
src/modules/rlm_sqlippool/rlm_sqlippool.c

index 8486b3ab5b252bf1d411c4f2e4f64b1b272d57a3..9bffb266acbf30655ec7de27bed08e4bf1fdcda9 100644 (file)
@@ -504,7 +504,7 @@ static unlang_action_t CC_HINT(nonnull) mod_alloc(rlm_rcode_t *p_result, module_
        rlm_sqlippool_t         *inst = talloc_get_type_abort(mctx->inst->data, rlm_sqlippool_t);
        char                    allocation[FR_MAX_STRING_LEN];
        int                     allocation_len;
-       fr_pair_t               *vp;
+       fr_pair_t               *vp = NULL;
        rlm_sql_handle_t        *handle;
 
        /*
@@ -644,21 +644,22 @@ static unlang_action_t CC_HINT(nonnull) mod_alloc(rlm_rcode_t *p_result, module_
                return do_logging(p_result, inst, request, inst->log_failed, RLM_MODULE_NOOP);
        }
 
-       RDEBUG2("Allocated IP %s", allocation);
-       fr_pair_append(&request->reply_pairs, vp);
-
        /*
         *      UPDATE
         */
        if (sqlippool_command(inst->alloc_update, &handle, inst, request,
                              allocation, allocation_len) < 0) {
        error:
+               talloc_free(vp);
                if (handle) fr_pool_connection_release(inst->sql_inst->pool, request, handle);
                RETURN_MODULE_FAIL;
        }
 
        DO_PART(alloc_commit);
 
+       RDEBUG2("Allocated IP %s", allocation);
+       fr_pair_append(&request->reply_pairs, vp);
+
        if (handle) fr_pool_connection_release(inst->sql_inst->pool, request, handle);
 
        return do_logging(p_result, inst, request, inst->log_success, RLM_MODULE_OK);