]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
rlm_sql_db2: three bugs in query execution — wrong diagnostic handle, inverted unique...
authorAlexander Bainbridge-Sedivy <alex.bainbridge@inkbridge.io>
Wed, 13 May 2026 16:58:33 +0000 (12:58 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Wed, 27 May 2026 20:23:34 +0000 (16:23 -0400)
src/modules/rlm_sql/drivers/rlm_sql_db2/rlm_sql_db2.c

index b09efc0d7e67dfa76d3e72c18228147ece9cea65..a9d8df99e34ceca41fef7a21ec4f64d1aeb980d5 100644 (file)
@@ -142,9 +142,9 @@ static void sql_trunk_request_mux(UNUSED fr_event_list_t *el, trunk_connection_t
                SQLCHAR         state[6];
                SQLSMALLINT     len;
 
-               SQLGetDiagField(SQL_HANDLE_STMT, sql_conn->dbc_handle, 1, SQL_DIAG_SQLSTATE, state, sizeof(state), &len);
+               SQLGetDiagField(SQL_HANDLE_STMT, sql_conn->stmt, 1, SQL_DIAG_SQLSTATE, state, sizeof(state), &len);
 
-               if (strncmp((char *)state, SQL_CONSTR_INDEX_UNIQUE, 5)) {
+               if (strncmp((char *)state, SQL_CONSTR_INDEX_UNIQUE, 5) == 0) {
                        query_ctx->rcode = RLM_SQL_ALT_QUERY;
                        goto finish;
                }
@@ -180,7 +180,7 @@ static sql_rcode_t sql_fields(char const **out[], fr_sql_query_t *query_ctx, UNU
        for (i = 0; i < fields; i++) {
                char *p;
 
-               switch (SQLColAttribute(conn->stmt, i, SQL_DESC_BASE_COLUMN_NAME,
+               switch (SQLColAttribute(conn->stmt, i + 1, SQL_DESC_BASE_COLUMN_NAME,
                                        field, sizeof(field), &len, NULL)) {
                case SQL_INVALID_HANDLE:
                case SQL_ERROR: