diff options
author | dan <Dan Kennedy> | 2024-05-06 11:27:47 +0000 |
---|---|---|
committer | dan <Dan Kennedy> | 2024-05-06 11:27:47 +0000 |
commit | 1002bcff43697e6facff465d36d36ca822a8c5a1 (patch) | |
tree | e90b3e39a56dc20c652b5aedb1d190b4ad107685 /ext/misc/sqlar.c | |
parent | 1aa94b58213bb39fc7252e04ba867c766460871c (diff) | |
download | sqlite-1002bcff43697e6facff465d36d36ca822a8c5a1.tar.gz sqlite-1002bcff43697e6facff465d36d36ca822a8c5a1.zip |
Fix problem in sqlar_uncompress() when being used to extract symbolic links.
FossilOrigin-Name: 4d90c3f179a3d7355b6b0202faf56f0be4be56986920576e528208cb84daa4af
Diffstat (limited to 'ext/misc/sqlar.c')
-rw-r--r-- | ext/misc/sqlar.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/ext/misc/sqlar.c b/ext/misc/sqlar.c index be079a546..9f726f0b8 100644 --- a/ext/misc/sqlar.c +++ b/ext/misc/sqlar.c @@ -81,7 +81,7 @@ static void sqlarUncompressFunc( sqlite3_value **argv ){ uLong nData; - uLongf sz; + sqlite3_int64 sz; assert( argc==2 ); sz = sqlite3_value_int(argv[1]); @@ -89,14 +89,15 @@ static void sqlarUncompressFunc( if( sz<=0 || sz==(nData = sqlite3_value_bytes(argv[0])) ){ sqlite3_result_value(context, argv[0]); }else{ + uLongf szf = sz; const Bytef *pData= sqlite3_value_blob(argv[0]); Bytef *pOut = sqlite3_malloc(sz); if( pOut==0 ){ sqlite3_result_error_nomem(context); - }else if( Z_OK!=uncompress(pOut, &sz, pData, nData) ){ + }else if( Z_OK!=uncompress(pOut, &szf, pData, nData) ){ sqlite3_result_error(context, "error in uncompress()", -1); }else{ - sqlite3_result_blob(context, pOut, sz, SQLITE_TRANSIENT); + sqlite3_result_blob(context, pOut, szf, SQLITE_TRANSIENT); } sqlite3_free(pOut); } |