aboutsummaryrefslogtreecommitdiff
path: root/src/vdbeblob.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2017-01-25 04:41:34 +0000
committerdrh <drh@noemail.net>2017-01-25 04:41:34 +0000
commit210b0d0eb311e2fc2ece5c71a196811479f5f349 (patch)
tree21e167978fcfb6849b8c0334c92837236918958f /src/vdbeblob.c
parentd1b2566b07744604a96593ea174f82e174eaa7f4 (diff)
downloadsqlite-210b0d0eb311e2fc2ece5c71a196811479f5f349.tar.gz
sqlite-210b0d0eb311e2fc2ece5c71a196811479f5f349.zip
Ensure that sqlite3_blob_reopen() correctly handles short rows.
Proposed fix for ticket [e6e962d6b0f06f46e]. Further testing needed. FossilOrigin-Name: 57d8dad35c2a9ab635e954dce7f3986ae1ca8ed2
Diffstat (limited to 'src/vdbeblob.c')
-rw-r--r--src/vdbeblob.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/vdbeblob.c b/src/vdbeblob.c
index 1efd4c924..810f78860 100644
--- a/src/vdbeblob.c
+++ b/src/vdbeblob.c
@@ -77,7 +77,9 @@ static int blobSeekToRow(Incrblob *p, sqlite3_int64 iRow, char **pzErr){
}
if( rc==SQLITE_ROW ){
VdbeCursor *pC = v->apCsr[0];
- u32 type = pC->aType[p->iCol];
+ u32 type = pC->nHdrParsed>p->iCol ? pC->aType[p->iCol] : 0;
+ testcase( pC->nHdrParsed==p->iCol );
+ testcase( pC->nHdrParsed==p->iCol+1 );
if( type<12 ){
zErr = sqlite3MPrintf(p->db, "cannot open value of type %s",
type==0?"null": type==7?"real": "integer"