diff options
author | larrybr <larrybr@noemail.net> | 2023-10-13 01:39:47 +0000 |
---|---|---|
committer | larrybr <larrybr@noemail.net> | 2023-10-13 01:39:47 +0000 |
commit | 99d43979d37b1aad05407f8b5523cfd44d9e64f3 (patch) | |
tree | 7e5363c1610664d2f34e25fa145459c78c38de1c | |
parent | 5dc4a405c59a2a8fe171efaf3bd25b1013c160c4 (diff) | |
download | sqlite-99d43979d37b1aad05407f8b5523cfd44d9e64f3.tar.gz sqlite-99d43979d37b1aad05407f8b5523cfd44d9e64f3.zip |
Avoid potential overflow in hex(). [forum:/forumpost/7ac0c9c5ea|See forum post 7ac0c9c5ea.]
FossilOrigin-Name: 2e968114fd0e60eebcc088dec02684e10b06ac1ec42d6bedb5287362f5cbf032
-rw-r--r-- | manifest | 16 | ||||
-rw-r--r-- | manifest.uuid | 2 | ||||
-rw-r--r-- | src/func.c | 3 | ||||
-rw-r--r-- | test/unhex.test | 2 |
4 files changed, 13 insertions, 10 deletions
@@ -1,5 +1,5 @@ -C Make\ssure\svirtual\stables\shave\sbeen\sconnected\sbefore\strying\sto\sinvoke\nthe\sxIntegrity\smethod\sduring\sPRAGMA\sintegrity_check. -D 2023-10-12T20:51:17.229 +C Avoid\spotential\soverflow\sin\shex().\s[forum:/forumpost/7ac0c9c5ea|See\sforum\spost\s7ac0c9c5ea.] +D 2023-10-13T01:39:47.068 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -667,7 +667,7 @@ F src/delete.c cb766727c78e715f9fb7ec8a7d03658ed2a3016343ca687acfcec9083cdca500 F src/expr.c 8a5045ac7aae5ecebe7236ec05841693b5a0012af70a4d73933333172546c50d F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c a7fcbf7e66d14dbb73cf49f31489ebf66d0e6006c62b95246924a3bae9f37b36 -F src/func.c 490341f0ad2d0a937ce03c9fd3d9396fd3be9b5a6b90228011830b3a7bf0dca2 +F src/func.c e8d7b3587a225f4f1116f720b72090511fe9feb936e960bd26a053cea6a17a63 F src/global.c 29f56a330ed9d1b5cd9b79ac0ca36f97ac3afc730ff8bfa987b0db9e559d684d F src/hash.c 9ee4269fb1d6632a6fecfb9479c93a1f29271bddbbaf215dd60420bcb80c7220 F src/hash.h 3340ab6e1d13e725571d7cee6d3e3135f0779a7d8e76a9ce0a85971fa3953c51 @@ -1834,7 +1834,7 @@ F test/tt3_vacuum.c 71b254cde1fc49d6c8c44efd54f4668f3e57d7b3a8f4601ade069f75a999 F test/types.test bf816ce73c7dfcfe26b700c19f97ef4050d194ff F test/types2.test 1aeb81976841a91eef292723649b5c4fe3bc3cac F test/types3.test 99e009491a54f4dc02c06bdbc0c5eea56ae3e25a -F test/unhex.test 47b547f4b35e4f6525ecac7c7839bd3ae4eb4613d4e8932592eff55da83308f1 +F test/unhex.test 777af0bad767e4ab6219e6086ea073f8836d8c34de12f9507bd39c442e89fcf2 F test/unionall.test eb9afa030897af75fd2f0dd28354ef63c8a5897b6c76aa1f15acae61a12eabcf F test/unionall2.test 71e8fa08d5699d50dc9f9dc0c9799c2e7a6bb7931a330d369307a4df7f157fa1 F test/unionallfault.test 652bfbb630e6c43135965dc1e8f0a9a791da83aec885d626a632fe1909c56f73 @@ -2128,8 +2128,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 579aea0c28e01a79620ac758edc02db3a01baaa073e7773b8f0b6f610479520b -R f6cfb323187380b15d71317c15cb2d7b -U drh -Z b1397a2832808c4669dcf4c9bd643e96 +P 4a4eccb681741917c6771101d4e329f91eae9b035f4d345218e522bb55fff6da +R b8db52c4af481f11a25564ae1b4169f0 +U larrybr +Z e40ad0deba084d2d357f307fa10fdd72 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index bfa8f6202..1d7dc6eb7 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -4a4eccb681741917c6771101d4e329f91eae9b035f4d345218e522bb55fff6da
\ No newline at end of file +2e968114fd0e60eebcc088dec02684e10b06ac1ec42d6bedb5287362f5cbf032
\ No newline at end of file diff --git a/src/func.c b/src/func.c index dcf195f98..eed67941b 100644 --- a/src/func.c +++ b/src/func.c @@ -1256,7 +1256,8 @@ static void hexFunc( *(z++) = hexdigits[c&0xf]; } *z = 0; - sqlite3_result_text(context, zHex, n*2, sqlite3_free); + sqlite3_result_text64(context, zHex, (u64)(z-zHex), + sqlite3_free, SQLITE_UTF8); } } diff --git a/test/unhex.test b/test/unhex.test index f41e906a8..d97438f0d 100644 --- a/test/unhex.test +++ b/test/unhex.test @@ -55,6 +55,8 @@ do_catchsql_test 3.1 { #-------------------------------------------------------------------------- # Test the 2-argument version. # +# Zap global x array set in some previous test. +if {[array exists x]} {array unset x} foreach {tn hex} { 1 "FFFF ABCD" 2 "FFFF ABCD" |