]> granicus.if.org Git - php/commitdiff
- MFH: Improved fix for #42414
authorFelipe Pena <felipe@php.net>
Thu, 14 May 2009 17:25:51 +0000 (17:25 +0000)
committerFelipe Pena <felipe@php.net>
Thu, 14 May 2009 17:25:51 +0000 (17:25 +0000)
ext/odbc/php_odbc.c

index 6a747cbd90dfe181e9ab16475049086772e5dfcc..b7f2c26c41c99f7b2ce74a1417463897e830e8a1 100644 (file)
@@ -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),