aboutsummaryrefslogtreecommitdiff
path: root/src/func.c
diff options
context:
space:
mode:
authordan <dan@noemail.net>2017-03-16 12:11:07 +0000
committerdan <dan@noemail.net>2017-03-16 12:11:07 +0000
commit116b56a2ccb5671bd6ff668ad3aec104d8b4b9a9 (patch)
treefe8e0796d5bd03fe0f37bfc5ccac5534dcad3677 /src/func.c
parent6f25936c9c12c93a95aad4277964a82b2f18b07a (diff)
downloadsqlite-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.c6
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]);