diff options
author | Anatol Belski <ab@php.net> | 2017-07-09 01:32:07 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2017-07-09 01:32:07 +0200 |
commit | 176b45fa3ae0bd83d52718e943bbc008f21e83b9 (patch) | |
tree | 07fd32366692aa987eeb51c994cb03fb9ce6059c /ext/sqlite3/sqlite3.c | |
parent | 7bb696dc49efbe9354e6940c8d5a59105b29cc61 (diff) | |
parent | 02cc492015078b28c14d74b7eb0aad0442375550 (diff) | |
download | php-git-176b45fa3ae0bd83d52718e943bbc008f21e83b9.tar.gz |
Merge branch 'PHP-7.1'
* PHP-7.1:
Fixed bug #74883 SQLite3::__construct() produces "out of memory" exception with invalid flags
Diffstat (limited to 'ext/sqlite3/sqlite3.c')
-rw-r--r-- | ext/sqlite3/sqlite3.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index 04c98d836d..a74ff8d971 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -103,6 +103,7 @@ PHP_METHOD(sqlite3, open) char *filename, *encryption_key, *fullpath; size_t filename_len, encryption_key_len = 0; zend_long flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE; + int rc; db_obj = Z_SQLITE3_DB_P(object); @@ -133,11 +134,13 @@ PHP_METHOD(sqlite3, open) } #if SQLITE_VERSION_NUMBER >= 3005000 - if (sqlite3_open_v2(fullpath, &(db_obj->db), flags, NULL) != SQLITE_OK) { + rc = sqlite3_open_v2(fullpath, &(db_obj->db), flags, NULL); #else - if (sqlite3_open(fullpath, &(db_obj->db)) != SQLITE_OK) { + rc = sqlite3_open(fullpath, &(db_obj->db)); #endif - zend_throw_exception_ex(zend_ce_exception, 0, "Unable to open database: %s", sqlite3_errmsg(db_obj->db)); + if (rc != SQLITE_OK) { + zend_throw_exception_ex(zend_ce_exception, 0, "Unable to open database: %s", + db_obj->db ? sqlite3_errmsg(db_obj->db) : sqlite3_errstr(rc)); if (fullpath != filename) { efree(fullpath); } |