86 lines
2.6 KiB
Diff
86 lines
2.6 KiB
Diff
From d8bdd16779b4b7de6e73fb680f793e43921bfcd0 Mon Sep 17 00:00:00 2001
|
|
From: g00525463 <guoshipeng@huawei.com>
|
|
Date: Tue, 22 Jun 2021 16:13:54 +0800
|
|
Subject: [PATCH 1/2] [Huawei]add null-dereference check
|
|
|
|
Offering: GaussDB Kernel
|
|
|
|
More detail: check null cases to avoid crash
|
|
---
|
|
DriverManager/SQLGetDiagField.c | 6 +++++-
|
|
DriverManager/SQLGetStmtAttr.c | 4 ++++
|
|
DriverManager/SQLGetStmtOption.c | 4 ++++
|
|
DriverManager/SQLParamOptions.c | 4 ++++
|
|
4 files changed, 17 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/DriverManager/SQLGetDiagField.c b/DriverManager/SQLGetDiagField.c
|
|
index 58a253c..a0cc2b7 100644
|
|
--- a/DriverManager/SQLGetDiagField.c
|
|
+++ b/DriverManager/SQLGetDiagField.c
|
|
@@ -701,12 +701,16 @@ static SQLRETURN extract_sql_error_field( EHEAD *head,
|
|
{
|
|
strcpy( diag_info_ptr, str );
|
|
}
|
|
- else
|
|
+ else if (buffer_length > 0)
|
|
{
|
|
ret = SQL_SUCCESS_WITH_INFO;
|
|
memcpy( diag_info_ptr, str, buffer_length - 1 );
|
|
(( char * ) diag_info_ptr )[ buffer_length - 1 ] = '\0';
|
|
}
|
|
+ else
|
|
+ {
|
|
+ return SQL_ERROR;
|
|
+ }
|
|
}
|
|
if ( string_length_ptr )
|
|
{
|
|
diff --git a/DriverManager/SQLGetStmtAttr.c b/DriverManager/SQLGetStmtAttr.c
|
|
index a03e1f8..30e2bed 100644
|
|
--- a/DriverManager/SQLGetStmtAttr.c
|
|
+++ b/DriverManager/SQLGetStmtAttr.c
|
|
@@ -188,6 +188,10 @@ SQLRETURN SQLGetStmtAttr( SQLHSTMT statement_handle,
|
|
SQLRETURN ret;
|
|
SQLCHAR s1[ 100 + LOG_MESSAGE_LEN ];
|
|
|
|
+ if (value == NULL) {
|
|
+ return SQL_ERROR;
|
|
+ }
|
|
+
|
|
/*
|
|
* check statement
|
|
*/
|
|
diff --git a/DriverManager/SQLGetStmtOption.c b/DriverManager/SQLGetStmtOption.c
|
|
index 04fcdc8..d2ca7a9 100644
|
|
--- a/DriverManager/SQLGetStmtOption.c
|
|
+++ b/DriverManager/SQLGetStmtOption.c
|
|
@@ -132,6 +132,10 @@ SQLRETURN SQLGetStmtOption( SQLHSTMT statement_handle,
|
|
* check statement
|
|
*/
|
|
|
|
+ if (value == NULL) {
|
|
+ return SQL_ERROR;
|
|
+ }
|
|
+
|
|
if ( !__validate_stmt( statement ))
|
|
{
|
|
dm_log_write( __FILE__,
|
|
diff --git a/DriverManager/SQLParamOptions.c b/DriverManager/SQLParamOptions.c
|
|
index cffa233..9efea1c 100644
|
|
--- a/DriverManager/SQLParamOptions.c
|
|
+++ b/DriverManager/SQLParamOptions.c
|
|
@@ -141,6 +141,10 @@ SQLRETURN SQLParamOptions(
|
|
* check statement
|
|
*/
|
|
|
|
+ if (statement->connection->driver_act_ver != SQL_OV_ODBC2) {
|
|
+ return SQL_ERROR;
|
|
+ }
|
|
+
|
|
if ( !__validate_stmt( statement ))
|
|
{
|
|
dm_log_write( __FILE__,
|
|
--
|
|
2.23.0
|
|
|