iliaa           Sat Mar  6 13:14:55 2004 EDT

  Modified files:              
    /php-src/ext/sqlite sqlite.c 
  Log:
  Fixed a possible memory leaks inside sqlite_popen() & 
  sqlite_fetch_column_types().
  Resolve the file path inside sqlite_factory().
  
  
http://cvs.php.net/diff.php/php-src/ext/sqlite/sqlite.c?r1=1.126&r2=1.127&ty=u
Index: php-src/ext/sqlite/sqlite.c
diff -u php-src/ext/sqlite/sqlite.c:1.126 php-src/ext/sqlite/sqlite.c:1.127
--- php-src/ext/sqlite/sqlite.c:1.126   Thu Feb 26 19:29:09 2004
+++ php-src/ext/sqlite/sqlite.c Sat Mar  6 13:14:54 2004
@@ -17,7 +17,7 @@
    |          Marcus Boerger <[EMAIL PROTECTED]>                              |
    +----------------------------------------------------------------------+
 
-   $Id: sqlite.c,v 1.126 2004/02/27 00:29:09 iliaa Exp $ 
+   $Id: sqlite.c,v 1.127 2004/03/06 18:14:54 iliaa Exp $ 
 */
 
 #ifdef HAVE_CONFIG_H
@@ -1054,7 +1054,7 @@
 {
        php_info_print_table_start();
        php_info_print_table_header(2, "SQLite support", "enabled");
-       php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " 
$Id: sqlite.c,v 1.126 2004/02/27 00:29:09 iliaa Exp $");
+       php_info_print_table_row(2, "PECL Module version", PHP_SQLITE_MODULE_VERSION " 
$Id: sqlite.c,v 1.127 2004/03/06 18:14:54 iliaa Exp $");
        php_info_print_table_row(2, "SQLite Library", sqlite_libversion());
        php_info_print_table_row(2, "SQLite Encoding", sqlite_libencoding());
        php_info_print_table_end();
@@ -1192,18 +1192,17 @@
                        }
 
                        /* all set */
-                       efree(fullpath);
-                       efree(hashkey);
-                       return;
+                       goto done;
                }
 
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Some other type of 
persistent resource is using this hash key!?");
-               RETURN_FALSE;
+               RETVAL_FALSE;
+               goto done;
        }
 
        /* now we need to open the database */
        php_sqlite_open(fullpath, (int)mode, hashkey, return_value, errmsg, NULL 
TSRMLS_CC);
-
+done:
        efree(fullpath);
        efree(hashkey);
 }
@@ -1252,6 +1251,7 @@
                                RETURN_FALSE;
                        }
                }
+
        }
 
        php_sqlite_open(fullpath ? fullpath : filename, (int)mode, NULL, return_value, 
errmsg, object TSRMLS_CC);
@@ -1268,7 +1268,7 @@
 PHP_FUNCTION(sqlite_factory)
 {
        long mode = 0666;
-       char *filename;
+       char *filename, *fullname = NULL;
        long filename_len;
        zval *errmsg = NULL;
 
@@ -1283,19 +1283,26 @@
        }
 
        if (strncmp(filename, ":memory:", sizeof(":memory:") - 1)) {
-               if (PG(safe_mode) && (!php_checkuid(filename, NULL, 
CHECKUID_CHECK_FILE_AND_DIR))) {
+               /* resolve the fully-qualified path name to use as the hash key */
+               fullpath = expand_filepath(filename, NULL TSRMLS_CC);
+       
+               if (PG(safe_mode) && (!php_checkuid(fullpath, NULL, 
CHECKUID_CHECK_FILE_AND_DIR))) {
+                       efree(fullpath);
                        php_std_error_handling();
                        RETURN_NULL();
                }
        
-               if (php_check_open_basedir(filename TSRMLS_CC)) {
+               if (php_check_open_basedir(fullpath TSRMLS_CC)) {
+                       efree(fullpath);
                        php_std_error_handling();
                        RETURN_NULL();
                }
        }
 
-       php_sqlite_open(filename, (int)mode, NULL, return_value, errmsg, return_value 
TSRMLS_CC);
-
+       php_sqlite_open(fullpath ? fullpath : filename, (int)mode, NULL, return_value, 
errmsg, return_value TSRMLS_CC);
+       if (fullpath) {
+               efree(fullpath);
+       }
        php_std_error_handling();
 }
 /* }}} */
@@ -1575,7 +1582,7 @@
                RETURN_FALSE;
        }
 
-       sqlite_exec(db->db, "PRAGMA show_datatypes = ON", NULL, NULL, &errtext);
+       sqlite_exec(db->db, "PRAGMA show_datatypes = ON", NULL, NULL, NULL);
 
        db->last_err_code = sqlite_compile(db->db, sql, &tail, &res.vm, &errtext);
 
@@ -1605,7 +1612,7 @@
        }
 
 done:
-       sqlite_exec(db->db, "PRAGMA show_datatypes = OFF", NULL, NULL, &errtext);
+       sqlite_exec(db->db, "PRAGMA show_datatypes = OFF", NULL, NULL, NULL);
 }
 /* }}} */
 

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to