diff options
author | dan <dan@noemail.net> | 2017-03-16 12:11:07 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2017-03-16 12:11:07 +0000 |
commit | 116b56a2ccb5671bd6ff668ad3aec104d8b4b9a9 (patch) | |
tree | fe8e0796d5bd03fe0f37bfc5ccac5534dcad3677 /src/func.c | |
parent | 6f25936c9c12c93a95aad4277964a82b2f18b07a (diff) | |
download | sqlite-116b56a2ccb5671bd6ff668ad3aec104d8b4b9a9.tar.gz sqlite-116b56a2ccb5671bd6ff668ad3aec104d8b4b9a9.zip |
Fix a crash that could follow an OOM condition in the instr() SQL function.
FossilOrigin-Name: 6e59e903e4e956617bddef0b94e5cae02d724ac8145940b57ab5b0f628759736
Diffstat (limited to 'src/func.c')
-rw-r--r-- | src/func.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/func.c b/src/func.c index 885725bc6..181032a5e 100644 --- a/src/func.c +++ b/src/func.c @@ -204,9 +204,11 @@ 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; + /* The following condition may be true if the arguments passed to this + ** function are values returned by zeroblob() or similar and an OOM + ** occurs while expanding the blob value. */ + if( zNeedle==0 || (nHaystack && zHaystack==0) ) return; }else{ zHaystack = sqlite3_value_text(argv[0]); zNeedle = sqlite3_value_text(argv[1]); |