diff options
author | larrybr <larrybr@noemail.net> | 2023-04-25 02:44:53 +0000 |
---|---|---|
committer | larrybr <larrybr@noemail.net> | 2023-04-25 02:44:53 +0000 |
commit | 21461407f64ef6b81b3d76ab4a23f07ececd0c1d (patch) | |
tree | 28a5db779b8ffd99bc819f6e54d3adf2d0a3356b /ext/misc/base85.c | |
parent | 7eff609d8a87c61eed915c6a43ef58dc023b000a (diff) | |
download | sqlite-21461407f64ef6b81b3d76ab4a23f07ececd0c1d.tar.gz sqlite-21461407f64ef6b81b3d76ab4a23f07ececd0c1d.zip |
Check for OOM sqlite_value_x() returns in base64, base85 extensions.
FossilOrigin-Name: e6f9c0b1f963033a8e17d13935c5c6b12d263fe10c585035a3d1f1154c6ba5d6
Diffstat (limited to 'ext/misc/base85.c')
-rw-r--r-- | ext/misc/base85.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/ext/misc/base85.c b/ext/misc/base85.c index 5ec136dbc..8e7ea7631 100644 --- a/ext/misc/base85.c +++ b/ext/misc/base85.c @@ -297,9 +297,16 @@ static void base85(sqlite3_context *context, int na, sqlite3_value *av[]){ sqlite3_result_error(context, "blob expanded to base85 too big", -1); return; } + bBuf = (u8*)sqlite3_value_blob(av[0]); + if( !bBuf ){ + if( SQLITE_NOMEM==sqlite3_errcode(sqlite3_context_db_handle(context)) ){ + goto memFail; + } + sqlite3_result_text(context,"",-1,SQLITE_STATIC); + break; + } cBuf = sqlite3_malloc(nc); if( !cBuf ) goto memFail; - bBuf = (u8*)sqlite3_value_blob(av[0]); nc = (int)(toBase85(bBuf, nb, cBuf, "\n") - cBuf); sqlite3_result_text(context, cBuf, nc, sqlite3_free); break; @@ -312,9 +319,16 @@ static void base85(sqlite3_context *context, int na, sqlite3_value *av[]){ }else if( nb<1 ){ nb = 1; } + cBuf = (char *)sqlite3_value_text(av[0]); + if( !cBuf ){ + if( SQLITE_NOMEM==sqlite3_errcode(sqlite3_context_db_handle(context)) ){ + goto memFail; + } + sqlite3_result_zeroblob(context, 0); + break; + } bBuf = sqlite3_malloc(nb); if( !bBuf ) goto memFail; - cBuf = (char *)sqlite3_value_text(av[0]); nb = (int)(fromBase85(cBuf, nc, bBuf) - bBuf); sqlite3_result_blob(context, bBuf, nb, sqlite3_free); break; |