From: Nick Porter Date: Thu, 24 Apr 2025 09:26:54 +0000 (+0100) Subject: Use OCIStmtPrepare2 to prepare Oracle queires. Fixes #5540 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c9138bbb15c98097ae4ec0bb40e909f10a7c558;p=thirdparty%2Ffreeradius-server.git Use OCIStmtPrepare2 to prepare Oracle queires. Fixes #5540 --- diff --git a/src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c b/src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c index bfddcc5dea..db1b49f913 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c @@ -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;