@@ -625,12 +625,19 @@ int sqlcipher_codec_ctx_set_pass(codec_ctx *ctx, const void *zKey, int nKey, int
625625 cipher_ctx * c_ctx = for_ctx ? ctx -> write_ctx : ctx -> read_ctx ;
626626 int rc ;
627627
628- if ((rc = sqlcipher_cipher_ctx_set_pass (c_ctx , zKey , nKey )) != SQLITE_OK ) return rc ;
628+ if ((rc = sqlcipher_cipher_ctx_set_pass (c_ctx , zKey , nKey )) != SQLITE_OK ) {
629+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_set_pass: error %d from sqlcipher_cipher_ctx_set_pass" , rc );
630+ return rc ;
631+ }
632+
629633 c_ctx -> derive_key = 1 ;
630634
631- if (for_ctx == 2 )
632- if ((rc = sqlcipher_cipher_ctx_copy (ctx , for_ctx ? ctx -> read_ctx : ctx -> write_ctx , c_ctx )) != SQLITE_OK )
633- return rc ;
635+ if (for_ctx == 2 ) {
636+ if ((rc = sqlcipher_cipher_ctx_copy (ctx , for_ctx ? ctx -> read_ctx : ctx -> write_ctx , c_ctx )) != SQLITE_OK ) {
637+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_set_pass: error %d from sqlcipher_cipher_ctx_copy" , rc );
638+ return rc ;
639+ }
640+ }
634641
635642 return SQLITE_OK ;
636643}
@@ -828,9 +835,12 @@ int sqlcipher_codec_ctx_set_kdf_salt(codec_ctx *ctx, unsigned char *salt, int si
828835int sqlcipher_codec_ctx_get_kdf_salt (codec_ctx * ctx , void * * salt ) {
829836 int rc = SQLITE_OK ;
830837 if (ctx -> need_kdf_salt ) {
831- rc = sqlcipher_codec_ctx_init_kdf_salt (ctx );
838+ if ((rc = sqlcipher_codec_ctx_init_kdf_salt (ctx )) != SQLITE_OK ) {
839+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_get_kdf_salt: error %d from sqlcipher_codec_ctx_init_kdf_salt" , rc );
840+ }
832841 }
833842 * salt = ctx -> kdf_salt ;
843+
834844 return rc ;
835845}
836846
@@ -933,8 +943,10 @@ int sqlcipher_codec_ctx_init(codec_ctx **iCtx, Db *pDb, Pager *pPager, const voi
933943 sqlite3_mutex_leave (sqlcipher_mutex (SQLCIPHER_MUTEX_PROVIDER ));
934944 sqlcipher_log (SQLCIPHER_LOG_TRACE , "sqlcipher_codec_ctx_init: left SQLCIPHER_MUTEX_PROVIDER" );
935945
936- sqlcipher_log (SQLCIPHER_LOG_DEBUG , "sqlcipher_codec_ctx_init: calling provider ctx_init" );
937- if ((rc = ctx -> provider -> ctx_init (& ctx -> provider_ctx )) != SQLITE_OK ) return rc ;
946+ if ((rc = ctx -> provider -> ctx_init (& ctx -> provider_ctx )) != SQLITE_OK ) {
947+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_init: error %d returned from ctx_init" , rc );
948+ return rc ;
949+ }
938950
939951 ctx -> key_sz = ctx -> provider -> get_key_sz (ctx -> provider_ctx );
940952 ctx -> iv_sz = ctx -> provider -> get_iv_sz (ctx -> provider_ctx );
@@ -950,45 +962,67 @@ int sqlcipher_codec_ctx_init(codec_ctx **iCtx, Db *pDb, Pager *pPager, const voi
950962 in encrypted and thus sqlite can't effectively determine the pagesize. this causes an issue in
951963 cases where bytes 16 & 17 of the page header are a power of 2 as reported by John Lehman
952964 */
953- sqlcipher_log (SQLCIPHER_LOG_DEBUG , "sqlcipher_codec_ctx_init: calling sqlcipher_codec_ctx_set_pagesize with %d" , default_page_size );
954- if ((rc = sqlcipher_codec_ctx_set_pagesize (ctx , default_page_size )) != SQLITE_OK ) return rc ;
965+ if ((rc = sqlcipher_codec_ctx_set_pagesize (ctx , default_page_size )) != SQLITE_OK ) {
966+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_init: error %d returned from sqlcipher_codec_ctx_set_pagesize with %d" , rc , default_page_size );
967+ return rc ;
968+ }
955969
956970 /* establish settings for the KDF iterations and fast (HMAC) KDF iterations */
957- sqlcipher_log (SQLCIPHER_LOG_DEBUG , "sqlcipher_codec_ctx_init: setting default_kdf_iter" );
958- if ((rc = sqlcipher_codec_ctx_set_kdf_iter (ctx , default_kdf_iter )) != SQLITE_OK ) return rc ;
971+ if ((rc = sqlcipher_codec_ctx_set_kdf_iter (ctx , default_kdf_iter )) != SQLITE_OK ) {
972+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_init: error %d setting default_kdf_iter %d" , rc , default_kdf_iter );
973+ return rc ;
974+ }
959975
960- sqlcipher_log (SQLCIPHER_LOG_DEBUG , "sqlcipher_codec_ctx_init: setting fast_kdf_iter" );
961- if ((rc = sqlcipher_codec_ctx_set_fast_kdf_iter (ctx , FAST_PBKDF2_ITER )) != SQLITE_OK ) return rc ;
976+ if ((rc = sqlcipher_codec_ctx_set_fast_kdf_iter (ctx , FAST_PBKDF2_ITER )) != SQLITE_OK ) {
977+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_init: error %d setting fast_kdf_iter to %d" , rc , FAST_PBKDF2_ITER );
978+ return rc ;
979+ }
962980
963981 /* set the default HMAC and KDF algorithms which will determine the reserve size */
964- sqlcipher_log (SQLCIPHER_LOG_DEBUG , "sqlcipher_codec_ctx_init: calling sqlcipher_codec_ctx_set_hmac_algorithm with %d" , default_hmac_algorithm );
965- if ((rc = sqlcipher_codec_ctx_set_hmac_algorithm (ctx , default_hmac_algorithm )) != SQLITE_OK ) return rc ;
982+ if ((rc = sqlcipher_codec_ctx_set_hmac_algorithm (ctx , default_hmac_algorithm )) != SQLITE_OK ) {
983+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_init: error %d setting sqlcipher_codec_ctx_set_hmac_algorithm with %d" , rc , default_hmac_algorithm );
984+ return rc ;
985+ }
966986
967987 /* Note that use_hmac is a special case that requires recalculation of page size
968988 so we call set_use_hmac to perform setup */
969- sqlcipher_log (SQLCIPHER_LOG_DEBUG , "sqlcipher_codec_ctx_init: setting use_hmac" );
970- if ((rc = sqlcipher_codec_ctx_set_use_hmac (ctx , default_flags & CIPHER_FLAG_HMAC )) != SQLITE_OK ) return rc ;
989+ if ((rc = sqlcipher_codec_ctx_set_use_hmac (ctx , default_flags & CIPHER_FLAG_HMAC )) != SQLITE_OK ) {
990+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_init: error %d setting use_hmac %d" , rc , default_flags & CIPHER_FLAG_HMAC );
991+ return rc ;
992+ }
971993
972- sqlcipher_log (SQLCIPHER_LOG_DEBUG , "sqlcipher_codec_ctx_init: calling sqlcipher_codec_ctx_set_kdf_algorithm with %d" , default_kdf_algorithm );
973- if ((rc = sqlcipher_codec_ctx_set_kdf_algorithm (ctx , default_kdf_algorithm )) != SQLITE_OK ) return rc ;
994+ if ((rc = sqlcipher_codec_ctx_set_kdf_algorithm (ctx , default_kdf_algorithm )) != SQLITE_OK ) {
995+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_init: error %d setting sqlcipher_codec_ctx_set_kdf_algorithm with %d" , rc , default_kdf_algorithm );
996+ return rc ;
997+ }
974998
975999 /* setup the default plaintext header size */
976- sqlcipher_log (SQLCIPHER_LOG_DEBUG , "sqlcipher_codec_ctx_init: calling sqlcipher_codec_ctx_set_plaintext_header_size with %d" , default_plaintext_header_sz );
977- if ((rc = sqlcipher_codec_ctx_set_plaintext_header_size (ctx , default_plaintext_header_sz )) != SQLITE_OK ) return rc ;
1000+ if ((rc = sqlcipher_codec_ctx_set_plaintext_header_size (ctx , default_plaintext_header_sz )) != SQLITE_OK ) {
1001+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_init: error %d setting sqlcipher_codec_ctx_set_plaintext_header_size with %d" , rc , default_plaintext_header_sz );
1002+ return rc ;
1003+ }
9781004
9791005 /* initialize the read and write sub-contexts. this must happen after key_sz is established */
980- sqlcipher_log (SQLCIPHER_LOG_DEBUG , "sqlcipher_codec_ctx_init: initializing read_ctx" );
981- if ((rc = sqlcipher_cipher_ctx_init (ctx , & ctx -> read_ctx )) != SQLITE_OK ) return rc ;
1006+ if ((rc = sqlcipher_cipher_ctx_init (ctx , & ctx -> read_ctx )) != SQLITE_OK ) {
1007+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_init: error %d initializing read_ctx" , rc );
1008+ return rc ;
1009+ }
9821010
983- sqlcipher_log (SQLCIPHER_LOG_DEBUG , "sqlcipher_codec_ctx_init: initializing write_ctx" );
984- if ((rc = sqlcipher_cipher_ctx_init (ctx , & ctx -> write_ctx )) != SQLITE_OK ) return rc ;
1011+ if ((rc = sqlcipher_cipher_ctx_init (ctx , & ctx -> write_ctx )) != SQLITE_OK ) {
1012+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_init: error %d initializing write_ctx" , rc );
1013+ return rc ;
1014+ }
9851015
9861016 /* set the key material on one of the sub cipher contexts and sync them up */
987- sqlcipher_log (SQLCIPHER_LOG_DEBUG , "sqlcipher_codec_ctx_init: setting pass key" );
988- if ((rc = sqlcipher_codec_ctx_set_pass (ctx , zKey , nKey , 0 )) != SQLITE_OK ) return rc ;
1017+ if ((rc = sqlcipher_codec_ctx_set_pass (ctx , zKey , nKey , 0 )) != SQLITE_OK ) {
1018+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_init: error %d setting pass key" , rc );
1019+ return rc ;
1020+ }
9891021
990- sqlcipher_log (SQLCIPHER_LOG_DEBUG , "sqlcipher_codec_ctx_init: copying write_ctx to read_ctx" );
991- if ((rc = sqlcipher_cipher_ctx_copy (ctx , ctx -> write_ctx , ctx -> read_ctx )) != SQLITE_OK ) return rc ;
1022+ if ((rc = sqlcipher_cipher_ctx_copy (ctx , ctx -> write_ctx , ctx -> read_ctx )) != SQLITE_OK ) {
1023+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_codec_ctx_init: error %d copying write_ctx to read_ctx" , rc );
1024+ return rc ;
1025+ }
9921026
9931027 return SQLITE_OK ;
9941028}
@@ -1158,7 +1192,10 @@ static int sqlcipher_cipher_ctx_key_derive(codec_ctx *ctx, cipher_ctx *c_ctx) {
11581192
11591193 /* if necessary, initialize the salt from the header or random source */
11601194 if (ctx -> need_kdf_salt ) {
1161- if ((rc = sqlcipher_codec_ctx_init_kdf_salt (ctx )) != SQLITE_OK ) return rc ;
1195+ if ((rc = sqlcipher_codec_ctx_init_kdf_salt (ctx )) != SQLITE_OK ) {
1196+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_cipher_ctx_key_derive: error %d from sqlcipher_codec_ctx_init_kdf_salt" , rc );
1197+ return rc ;
1198+ }
11621199 }
11631200
11641201 if (c_ctx -> pass_sz == ((ctx -> key_sz * 2 ) + 3 ) && sqlite3StrNICmp ((const char * )c_ctx -> pass ,"x'" , 2 ) == 0 && cipher_isHex (c_ctx -> pass + 2 , ctx -> key_sz * 2 )) {
@@ -1182,7 +1219,10 @@ static int sqlcipher_cipher_ctx_key_derive(codec_ctx *ctx, cipher_ctx *c_ctx) {
11821219 }
11831220
11841221 /* set the context "keyspec" containing the hex-formatted key and salt to be used when attaching databases */
1185- if ((rc = sqlcipher_cipher_ctx_set_keyspec (ctx , c_ctx , c_ctx -> key )) != SQLITE_OK ) return rc ;
1222+ if ((rc = sqlcipher_cipher_ctx_set_keyspec (ctx , c_ctx , c_ctx -> key )) != SQLITE_OK ) {
1223+ sqlcipher_log (SQLCIPHER_LOG_ERROR , "sqlcipher_cipher_ctx_key_derive: error %d from sqlcipher_cipher_ctx_set_keyspec" , rc );
1224+ return rc ;
1225+ }
11861226
11871227 /* if this context is setup to use hmac checks, generate a seperate and different
11881228 key for HMAC. In this case, we use the output of the previous KDF as the input to
0 commit comments