diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2005-10-17 14:30:35 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2005-10-17 14:30:35 +0000 |
commit | b0f1719ee5a2179f47a5630281809ee9133fb680 (patch) | |
tree | 057eb29b85ee4cb18f6c31e647cf397555642638 /ext/sqlite/sqlite.c | |
parent | cc50a961391fab97ef33e590434d0746c9c432d1 (diff) | |
download | php-git-b0f1719ee5a2179f47a5630281809ee9133fb680.tar.gz |
MFH: Fixed bug #34884 (Possible crash in ext/sqlite when sqlite.assoc_case
is being used).
Diffstat (limited to 'ext/sqlite/sqlite.c')
-rw-r--r-- | ext/sqlite/sqlite.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/ext/sqlite/sqlite.c b/ext/sqlite/sqlite.c index cc9fc6f0be..68574ef3ed 100644 --- a/ext/sqlite/sqlite.c +++ b/ext/sqlite/sqlite.c @@ -1440,14 +1440,13 @@ next_row: /* first row - lets copy the column names */ rres->col_names = safe_emalloc(rres->ncolumns, sizeof(char *), 0); for (i = 0; i < rres->ncolumns; i++) { - colname = (char*)colnames[i]; + rres->col_names[i] = estrdup((char*)colnames[i]); if (SQLITE_G(assoc_case) == 1) { - php_sqlite_strtoupper(colname); + php_sqlite_strtoupper(rres->col_names[i]); } else if (SQLITE_G(assoc_case) == 2) { - php_sqlite_strtolower(colname); + php_sqlite_strtolower(rres->col_names[i]); } - rres->col_names[i] = estrdup(colname); } if (!rres->buffered) { /* non buffered mode - also fetch memory for on single row */ @@ -1686,16 +1685,17 @@ PHP_FUNCTION(sqlite_fetch_column_types) array_init(return_value); for (i = 0; i < ncols; i++) { - char *colname = (char *)colnames[i]; + if (result_type == PHPSQLITE_ASSOC) { + char *colname = estrdup((char *)colnames[i]); - if (SQLITE_G(assoc_case) == 1) { - php_sqlite_strtoupper(colname); - } else if (SQLITE_G(assoc_case) == 2) { - php_sqlite_strtolower(colname); - } + if (SQLITE_G(assoc_case) == 1) { + php_sqlite_strtoupper(colname); + } else if (SQLITE_G(assoc_case) == 2) { + php_sqlite_strtolower(colname); + } - if (result_type == PHPSQLITE_ASSOC) { add_assoc_string(return_value, colname, colnames[ncols + i] ? (char *)colnames[ncols + i] : "", 1); + efree(colname); } if (result_type == PHPSQLITE_NUM) { add_index_string(return_value, i, colnames[ncols + i] ? (char *)colnames[ncols + i] : "", 1); |