From: drh Date: Tue, 24 Apr 2018 10:57:10 +0000 (+0000) Subject: Fix a memory leak following failure to open an external CSV file in the X-Git-Tag: version-3.24.0~105 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d3e61403af9a31f2afc71d5618c96de9705ea7c;p=thirdparty%2Fsqlite.git Fix a memory leak following failure to open an external CSV file in the csv.c extension. FossilOrigin-Name: 526ee07d19dbc8fd1af3a02a8da12b337020a4be40e045da9a19d0a7c2b6ab54 --- diff --git a/ext/misc/csv.c b/ext/misc/csv.c index c634ab3a4d..e0afdd5d22 100644 --- a/ext/misc/csv.c +++ b/ext/misc/csv.c @@ -132,6 +132,7 @@ static int csv_reader_open( } p->in = fopen(zFilename, "rb"); if( p->in==0 ){ + sqlite3_free(p->zIn); csv_reader_reset(p); csv_errmsg(p, "cannot open '%s' for reading", zFilename); return 1; diff --git a/manifest b/manifest index 5599c6fe47..ace22be5a0 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C In\sEXPLAIN\sQUERY\sPLAN\soutput,\sdo\snot\sshow\san\sEXECUTE\sLIST\sSUBQUERY\sline\sfor\nIN\soperators\swhere\sthe\sRHS\sis\sa\slist\sand\snot\sa\ssubquery,\ssince\sin\sthat\scase\nthere\sis\sno\sSUBQUERY\sto\sexecute. -D 2018-04-24T01:10:12.734 +C Fix\sa\smemory\sleak\sfollowing\sfailure\sto\sopen\san\sexternal\sCSV\sfile\sin\sthe\ncsv.c\sextension. +D 2018-04-24T10:57:10.809 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in 5ce9343cba9c189046f1afe6d2bcc1f68079439febc05267b98aec6ecc752439 @@ -274,7 +274,7 @@ F ext/misc/carray.c ed96c218ea940b85c9a274c4d9c59fe9491c299147a38a8bba537687bd6c F ext/misc/closure.c 0d2a038df8fbae7f19de42e7c7d71f2e4dc88704 F ext/misc/completion.c 0d0bd16378415b982e7119baddef52a0d2cc25860c238a9d2832b0cc6a84a16d F ext/misc/compress.c dd4f8a6d0baccff3c694757db5b430f3bbd821d8686d1fc24df55cf9f035b189 -F ext/misc/csv.c 1a009b93650732e22334edc92459c4630b9fa703397cbb3c8ca279921a36ca11 +F ext/misc/csv.c d1e324fac3f87f818d684a3d752d1ef76dbcd4fc0db6746ac4034c19d0bcda21 F ext/misc/dbdump.c 22018e00eb50e9ebf9067c92d4e7162dc5006a3efc4e0c19bc3829825a1043b0 F ext/misc/eval.c 6ea9b22a5fa0dd973b67ca4e53555be177bc0b7b263aadf1024429457c82c0e3 F ext/misc/fileio.c 48c7751c78fc4cdd29d8c862fd2f3f98bbfefa2a3cf1ca1496df4bf02eb8cded @@ -737,7 +737,7 @@ F test/crashM.test d95f59046fa749b0d0822edf18a717788c8f318d F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2 F test/createtab.test b5de160630b209c4b8925bdcbbaf48cc90b67fe8 F test/cse.test 277350a26264495e86b1785f34d2d0c8600e021c -F test/csv01.test 526fc6aefd052badd5a0283f86b4b395c3df76bfe98d96c801f494f5e2c7836c +F test/csv01.test b99db7e57ee66fb3aa6e5d25af119003bee90bf679c5885711cbf7374f025b73 F test/ctime.test 78749e6c9a5f0010d67985be80788f841e3cd2da18114e2ed6010399a7d807f3 F test/cursorhint.test 7bc346788390475e77a345da2b92270d04d35856 F test/cursorhint2.test 0078ae1ded4afcf5eb80d06e3a72b6e1c3f1a646aab26eeb583b0a9ec6f0d56e @@ -1725,7 +1725,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P c7e6e848fa91f61bc980a031a17d4cd4784f93a1c9ffee35665efa1a59f2982a -R aaaeedf1405d5c0bde908df2cbf86e60 +P 8bc0207abdeeb3ffac003703e78826759f07994698f6cdf40c89c3443ba22a47 +R 3ef6679417716a25fa739b5485cde10d U drh -Z c37a6d6188daf1d034fa603dc2f986bf +Z 13fd8bb0e940e8192f126732a8d4f0af diff --git a/manifest.uuid b/manifest.uuid index 18122c4456..ee4ec399d4 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -8bc0207abdeeb3ffac003703e78826759f07994698f6cdf40c89c3443ba22a47 \ No newline at end of file +526ee07d19dbc8fd1af3a02a8da12b337020a4be40e045da9a19d0a7c2b6ab54 \ No newline at end of file diff --git a/test/csv01.test b/test/csv01.test index 2f45f24d77..e8bafbd151 100644 --- a/test/csv01.test +++ b/test/csv01.test @@ -140,5 +140,12 @@ do_catchsql_test 4.2 { ); } {1 {vtable constructor failed: t5}} +# 2018-04-24 +# Memory leak reported on the sqlite-users mailing list by Ralf Junker. +# +do_catchsql_test 4.3 { + CREATE VIRTUAL TABLE IF NOT EXISTS temp.t1 + USING csv(filename='FileDoesNotExist.csv'); +} {1 {cannot open 'FileDoesNotExist.csv' for reading}} finish_test