]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Detect and report oversized records constructed from multiple zeroblobs.
authordrh <drh@noemail.net>
Sat, 11 Apr 2015 02:08:48 +0000 (02:08 +0000)
committerdrh <drh@noemail.net>
Sat, 11 Apr 2015 02:08:48 +0000 (02:08 +0000)
FossilOrigin-Name: 9e139afd92116ebc593114ed63b57c8f469653f6

manifest
manifest.uuid
src/vdbe.c
test/zeroblob.test

index d9f7505d75433bf65f3c2c237512251ec3317e1e..71aafa2cb1b431903952b691f6f50c8f809ab1af 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Minor\sbuild\senhancements\sfor\sMSVC.
-D 2015-04-10T21:16:11.659
+C Detect\sand\sreport\soversized\srecords\sconstructed\sfrom\smultiple\szeroblobs.
+D 2015-04-11T02:08:48.265
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 5f78b1ab81b64e7c57a75d170832443e66c0880a
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -293,7 +293,7 @@ F src/update.c 3c4ecc282accf12d39edb8d524cf089645e55a13
 F src/utf.c fc6b889ba0779b7722634cdeaa25f1930d93820c
 F src/util.c 98a7627ca48ad3265b6940915a1d08355eb3fc7e
 F src/vacuum.c 9460b9de7b2d4e34b0d374894aa6c8a0632be8ec
-F src/vdbe.c 86ae6f4774410868af41bd839b72b7081ff03e78
+F src/vdbe.c 06cc2cf42daf8b0c397f69a6fb1818124f3cd93a
 F src/vdbe.h 6fc69d9c5e146302c56e163cb4b31d1ee64a18c3
 F src/vdbeInt.h 9cbaa84f53ddd2d09a0cf61a94337a3a035d08a0
 F src/vdbeapi.c 583d56b129dd27f12bed518270de9ebe521e6a75
@@ -1194,7 +1194,7 @@ F test/without_rowid4.test 4e08bcbaee0399f35d58b5581881e7a6243d458a
 F test/without_rowid5.test 61256715b686359df48ca1742db50cc7e3e7b862
 F test/without_rowid6.test db0dbf03c49030aa3c1ba5f618620334bd2baf5f
 F test/wordcount.c 9915e06cb33d8ca8109b8700791afe80d305afda
-F test/zeroblob.test caaecfb4f908f7bc086ed238668049f96774d688
+F test/zeroblob.test fb3c0e4ab172d386954deda24c03f500e121d80d
 F test/zerodamage.test cf6748bad89553cc1632be51a6f54e487e4039ac
 F tool/build-all-msvc.bat 72e05bc8deca39a547884485c086b915f50a91ed x
 F tool/build-shell.sh 950f47c6174f1eea171319438b93ba67ff5bf367
@@ -1250,7 +1250,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 860e4f8a94901d451fac3954960c1d2f589e8882
-R d724f3837aa2139b84d99a7758232948
-U mistachkin
-Z add6515d666dc387abaf063a7b8f0157
+P 40c417a7efb17221cec4a0a703863854bcab8db2
+R fd7ff5723f566045f2ba0751ddce0467
+U drh
+Z f6419661cff2a502b477cceb45bb8fdd
index 5d2f5e3cb54230d64d376f399098b20c603ee1c5..c8b77b78ce1c31b9697dbcd6de381c708949ea05 100644 (file)
@@ -1 +1 @@
-40c417a7efb17221cec4a0a703863854bcab8db2
\ No newline at end of file
+9e139afd92116ebc593114ed63b57c8f469653f6
\ No newline at end of file
index f2de90d14c17de2a8a4741bd19cb3c856e73e92e..8e7247a1e8574471efdd3a44cf8924789021b408 100644 (file)
@@ -2578,7 +2578,7 @@ case OP_MakeRecord: {
   u64 nData;             /* Number of bytes of data space */
   int nHdr;              /* Number of bytes of header space */
   i64 nByte;             /* Data space required for this record */
-  int nZero;             /* Number of zero bytes at the end of the record */
+  i64 nZero;             /* Number of zero bytes at the end of the record */
   int nVarint;           /* Number of bytes in a varint */
   u32 serial_type;       /* Type field */
   Mem *pData0;           /* First field to be combined into the record */
@@ -2670,7 +2670,7 @@ case OP_MakeRecord: {
     if( nVarint<sqlite3VarintLen(nHdr) ) nHdr++;
   }
   nByte = nHdr+nData;
-  if( nByte>db->aLimit[SQLITE_LIMIT_LENGTH] ){
+  if( nByte+nZero>db->aLimit[SQLITE_LIMIT_LENGTH] ){
     goto too_big;
   }
 
index f4a195083696a4e3227e1dc6076e1a944115a175..e70fd0b748491d36a01b1656f0915dba0320d8f1 100644 (file)
@@ -255,5 +255,14 @@ do_test zeroblob-9.8 {
   db eval {SELECT zeroblob(2) IN (zeroblob(2))}
 } {1}
 
+# Oversized zeroblob records
+#
+do_test zeroblob-10.1 {
+  db eval {
+    CREATE TABLE t10(a,b,c);
+  }
+  catchsql {INSERT INTO t10 VALUES(zeroblob(1e9),zeroblob(1e9),zeroblob(1e9))}
+} {1 {string or blob too big}}
+
 
 finish_test