diff options
author | drh <drh@noemail.net> | 2016-12-30 15:16:20 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2016-12-30 15:16:20 +0000 |
commit | 1d081ab39e8296a46e1254278464c11aec582b51 (patch) | |
tree | 5121ec8568bc52eea4b95907cf0a76fb810c7ac0 /src | |
parent | 5f4ade0473f2d76361a91120a2c4fe9489feaee8 (diff) | |
download | sqlite-1d081ab39e8296a46e1254278464c11aec582b51.tar.gz sqlite-1d081ab39e8296a46e1254278464c11aec582b51.zip |
Strengthen the defense against OOM in the instr() SQL function.
FossilOrigin-Name: a0971e713682a73d8c7c20511db256c20d2f6388
Diffstat (limited to 'src')
-rw-r--r-- | src/func.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/func.c b/src/func.c index 37f7cd615..1f80392ba 100644 --- a/src/func.c +++ b/src/func.c @@ -204,13 +204,14 @@ static void instrFunc( if( typeHaystack==SQLITE_BLOB && typeNeedle==SQLITE_BLOB ){ zHaystack = sqlite3_value_blob(argv[0]); zNeedle = sqlite3_value_blob(argv[1]); + assert( zNeedle!=0 ); + assert( zHaystack!=0 || nHaystack==0 ); isText = 0; }else{ zHaystack = sqlite3_value_text(argv[0]); zNeedle = sqlite3_value_text(argv[1]); isText = 1; - if( zNeedle==0 ) return; - assert( zHaystack ); + if( zHaystack==0 || zNeedle==0 ) return; } while( nNeedle<=nHaystack && memcmp(zHaystack, zNeedle, nNeedle)!=0 ){ N++; |