From: Felipe Pena Date: Thu, 14 May 2009 17:25:51 +0000 (+0000) Subject: - MFH: Improved fix for #42414 X-Git-Tag: php-5.2.10RC1~78 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5f6b9cf5f6791dd87d02072c3438772a32af7221;p=php - MFH: Improved fix for #42414 --- diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 6a747cbd90..b7f2c26c41 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -2863,7 +2863,7 @@ PHP_FUNCTION(odbc_setoption) PHP_FUNCTION(odbc_tables) { zval **pv_conn, **pv_cat, **pv_schema, **pv_table, **pv_type; - odbc_result *result = NULL; + odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema = NULL, *table = NULL, *type = NULL; RETCODE rc; @@ -2884,8 +2884,10 @@ PHP_FUNCTION(odbc_tables) convert_to_string_ex(pv_schema); schema = Z_STRVAL_PP(pv_schema); case 2: - convert_to_string_ex(pv_cat); - cat = Z_STRVAL_PP(pv_cat); + if (Z_TYPE_PP(pv_cat) != IS_NULL) { + convert_to_string_ex(pv_cat); + cat = Z_STRVAL_PP(pv_cat); + } } ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); @@ -2967,9 +2969,11 @@ PHP_FUNCTION(odbc_columns) schema = Z_STRVAL_PP(pv_schema); schema_len = Z_STRLEN_PP(pv_schema); case 2: - convert_to_string_ex(pv_cat); - cat = Z_STRVAL_PP(pv_cat); - cat_len = Z_STRLEN_PP(pv_cat); + if (Z_TYPE_PP(pv_cat) != NULL) { + convert_to_string_ex(pv_cat); + cat = Z_STRVAL_PP(pv_cat); + cat_len = Z_STRLEN_PP(pv_cat); + } } ZEND_FETCH_RESOURCE2(conn, odbc_connection *, pv_conn, -1, "ODBC-Link", le_conn, le_pconn); @@ -2994,10 +2998,6 @@ PHP_FUNCTION(odbc_columns) */ if (table && strlen(table) && schema && !strlen(schema)) schema = NULL; - if (cat && cat_len == 0) { - cat = NULL; - } - rc = SQLColumns(result->stmt, cat, cat_len, schema, schema_len, @@ -3044,8 +3044,10 @@ PHP_FUNCTION(odbc_columnprivileges) if (zend_get_parameters_ex(5, &pv_conn, &pv_cat, &pv_schema, &pv_table, &pv_column) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_string_ex(pv_cat); - cat = Z_STRVAL_PP(pv_cat); + if (Z_TYPE_PP(pv_cat) != IS_NULL) { + convert_to_string_ex(pv_cat); + cat = Z_STRVAL_PP(pv_cat); + } convert_to_string_ex(pv_schema); schema = Z_STRVAL_PP(pv_schema); convert_to_string_ex(pv_table); @@ -3072,10 +3074,6 @@ PHP_FUNCTION(odbc_columnprivileges) efree(result); RETURN_FALSE; } - - if (cat_len == 0) { - cat = NULL; - } rc = SQLColumnPrivileges(result->stmt, cat, SAFE_SQL_NTS(cat), @@ -3114,7 +3112,7 @@ PHP_FUNCTION(odbc_foreignkeys) { zval **pv_conn, **pv_pcat, **pv_pschema, **pv_ptable; zval **pv_fcat, **pv_fschema, **pv_ftable; - odbc_result *result = NULL; + odbc_result *result = NULL; odbc_connection *conn; char *pcat = NULL, *pschema = NULL, *ptable = NULL; char *fcat = NULL, *fschema = NULL, *ftable = NULL; @@ -3127,8 +3125,10 @@ PHP_FUNCTION(odbc_foreignkeys) &pv_fcat, &pv_fschema, &pv_ftable) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_string_ex(pv_pcat); - pcat = Z_STRVAL_PP(pv_pcat); + if (Z_TYPE_PP(pv_pcat) != IS_NULL) { + convert_to_string_ex(pv_pcat); + pcat = Z_STRVAL_PP(pv_pcat); + } convert_to_string_ex(pv_pschema); pschema = Z_STRVAL_PP(pv_pschema); convert_to_string_ex(pv_ptable); @@ -3170,10 +3170,6 @@ PHP_FUNCTION(odbc_foreignkeys) efree(result); RETURN_FALSE; } - - if (pcat_len == 0) { - pcat = NULL; - } rc = SQLForeignKeys(result->stmt, pcat, SAFE_SQL_NTS(pcat), @@ -3291,8 +3287,10 @@ PHP_FUNCTION(odbc_primarykeys) if (zend_get_parameters_ex(4, &pv_conn, &pv_cat, &pv_schema, &pv_table) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_string_ex(pv_cat); - cat = Z_STRVAL_PP(pv_cat); + if (Z_TYPE_PP(pv_cat) != IS_NULL) { + convert_to_string_ex(pv_cat); + cat = Z_STRVAL_PP(pv_cat); + } convert_to_string_ex(pv_schema); schema = Z_STRVAL_PP(pv_schema); convert_to_string_ex(pv_table); @@ -3317,10 +3315,6 @@ PHP_FUNCTION(odbc_primarykeys) efree(result); RETURN_FALSE; } - - if (cat_len == 0) { - cat = NULL; - } rc = SQLPrimaryKeys(result->stmt, cat, SAFE_SQL_NTS(cat), @@ -3513,7 +3507,7 @@ PHP_FUNCTION(odbc_specialcolumns) { zval **pv_conn, **pv_type, **pv_cat, **pv_schema, **pv_name; zval **pv_scope, **pv_nullable; - odbc_result *result = NULL; + odbc_result *result = NULL; odbc_connection *conn; char *cat = NULL, *schema = NULL, *name = NULL; SQLUSMALLINT type; @@ -3529,8 +3523,10 @@ PHP_FUNCTION(odbc_specialcolumns) } convert_to_long_ex(pv_type); type = (SQLUSMALLINT) Z_LVAL_PP(pv_type); - convert_to_string_ex(pv_cat); - cat = Z_STRVAL_PP(pv_cat); + if (Z_TYPE_PP(pv_cat) != IS_NULL) { + convert_to_string_ex(pv_cat); + cat = Z_STRVAL_PP(pv_cat); + } convert_to_string_ex(pv_schema); schema = Z_STRVAL_PP(pv_schema); convert_to_string_ex(pv_name); @@ -3559,10 +3555,6 @@ PHP_FUNCTION(odbc_specialcolumns) efree(result); RETURN_FALSE; } - - if (cat_len == 0) { - cat = NULL; - } rc = SQLSpecialColumns(result->stmt, type, @@ -3614,8 +3606,10 @@ PHP_FUNCTION(odbc_statistics) &pv_name, &pv_unique, &pv_reserved) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_string_ex(pv_cat); - cat = Z_STRVAL_PP(pv_cat); + if (Z_TYPE_PP(pv_cat) != IS_NULL) { + convert_to_string_ex(pv_cat); + cat = Z_STRVAL_PP(pv_cat); + } convert_to_string_ex(pv_schema); schema = Z_STRVAL_PP(pv_schema); convert_to_string_ex(pv_name); @@ -3644,10 +3638,6 @@ PHP_FUNCTION(odbc_statistics) efree(result); RETURN_FALSE; } - - if (cat_len == 0) { - cat = NULL; - } rc = SQLStatistics(result->stmt, cat, SAFE_SQL_NTS(cat), @@ -3722,10 +3712,6 @@ PHP_FUNCTION(odbc_tableprivileges) efree(result); RETURN_FALSE; } - - if (cat_len == 0) { - cat = NULL; - } rc = SQLTablePrivileges(result->stmt, cat, SAFE_SQL_NTS(cat),