]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Use OCIStmtPrepare2 to prepare Oracle queires. Fixes #5540
authorNick Porter <nick@portercomputing.co.uk>
Thu, 24 Apr 2025 09:26:54 +0000 (10:26 +0100)
committerNick Porter <nick@portercomputing.co.uk>
Thu, 24 Apr 2025 09:30:25 +0000 (10:30 +0100)
src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c

index bfddcc5dea45d46b23cd63b49fda7d502a773c94..db1b49f913498dc0702db46ba0a0bd41452a7a02 100644 (file)
@@ -132,7 +132,6 @@ static int sql_check_error(rlm_sql_handle_t *handle, rlm_sql_config_t *config)
 static int _sql_socket_destructor(rlm_sql_oracle_conn_t *conn)
 {
        if (conn->ctx) OCILogoff(conn->ctx, conn->error);
-       if (conn->query) OCIHandleFree((dvoid *)conn->query, OCI_HTYPE_STMT);
        if (conn->error) OCIHandleFree((dvoid *)conn->error, OCI_HTYPE_ERROR);
        if (conn->env) OCIHandleFree((dvoid *)conn->env, OCI_HTYPE_ENV);
 
@@ -166,16 +165,6 @@ static sql_rcode_t sql_socket_init(rlm_sql_handle_t *handle, rlm_sql_config_t *c
                return RLM_SQL_ERROR;
        }
 
-       /*
-        *      Allocate handles for select and update queries
-        */
-       if (OCIHandleAlloc((dvoid *)conn->env, (dvoid **)&conn->query, OCI_HTYPE_STMT, 0, NULL)) {
-               ERROR("rlm_sql_oracle: Couldn't init Oracle query handles: %s",
-                     (sql_prints_error(errbuff, sizeof(errbuff), handle, config) == 0) ? errbuff : "unknown");
-
-               return RLM_SQL_ERROR;
-       }
-
        /*
         *      Login to the oracle server
         */
@@ -219,8 +208,8 @@ static sql_rcode_t sql_query(rlm_sql_handle_t *handle, rlm_sql_config_t *config,
                return RLM_SQL_RECONNECT;
        }
 
-       if (OCIStmtPrepare(conn->query, conn->error, oracle_query, strlen(query),
-                          OCI_NTV_SYNTAX, OCI_DEFAULT)) {
+       if (OCIStmtPrepare2(conn->ctx, &conn->query, conn->error, oracle_query, strlen(query),
+                          NULL, 0, OCI_NTV_SYNTAX, OCI_DEFAULT)) {
                ERROR("rlm_sql_oracle: prepare failed in sql_query");
 
                return RLM_SQL_ERROR;
@@ -259,8 +248,8 @@ static sql_rcode_t sql_select_query(rlm_sql_handle_t *handle, rlm_sql_config_t *
 
        memcpy(&oracle_query, &query, sizeof(oracle_query));
 
-       if (OCIStmtPrepare(conn->query, conn->error, oracle_query, strlen(query), OCI_NTV_SYNTAX,
-                          OCI_DEFAULT)) {
+       if (OCIStmtPrepare2(conn->ctx, &conn->query, conn->error, oracle_query, strlen(query),
+                           NULL, 0, OCI_NTV_SYNTAX, OCI_DEFAULT)) {
                ERROR("rlm_sql_oracle: prepare failed in sql_select_query");
 
                return RLM_SQL_ERROR;