[libfko] defensive coding update to quiet minor CLANG static analyzer false positives
authorMichael Rash <mbr@cipherdyne.org>
Thu, 20 Jun 2013 03:38:37 +0000 (23:38 -0400)
committerMichael Rash <mbr@cipherdyne.org>
Thu, 20 Jun 2013 03:38:37 +0000 (23:38 -0400)
lib/cipher_funcs.c
lib/fko_encryption.c

index 4d7e2c6..b6d7a0a 100644 (file)
@@ -277,6 +277,9 @@ rij_decrypt(unsigned char *in, size_t in_len,
     unsigned char      *pad_s;
     unsigned char      *ondx = out;
 
+    if(in == NULL || key == NULL || out == NULL)
+        return 0;
+
     rijndael_init(&ctx, key, key_len, in, encryption_mode);
 
     /* Remove the first block since it contains the salt (it was consumed
index 0de7c95..56524b9 100644 (file)
@@ -150,7 +150,7 @@ _rijndael_decrypt(fko_ctx_t ctx,
 {
     unsigned char  *ndx;
     unsigned char  *cipher;
-    int             cipher_len, pt_len, i, err = 0;
+    int             cipher_len, pt_len, i, err = 0, res = FKO_SUCCESS;
 
     if(key_len > RIJNDAEL_MAX_KEYSIZE)
         return(FKO_ERROR_INVALID_KEY_LEN);
@@ -159,7 +159,11 @@ _rijndael_decrypt(fko_ctx_t ctx,
      * encrypted data.
     */
     if(! ctx->added_salted_str)
-        add_salted_str(ctx);
+    {
+        res = add_salted_str(ctx);
+        if(res != FKO_SUCCESS)
+            return res;
+    }
 
     /* Create a bucket for the (base64) decoded encrypted data and get the
      * raw cipher data.
@@ -206,7 +210,7 @@ _rijndael_decrypt(fko_ctx_t ctx,
     /* The length of the decrypted data should be within 32 bytes of the
      * length of the encrypted version.
     */
-    if(pt_len < (cipher_len - 32))
+    if(pt_len < (cipher_len - 32) || pt_len <= 0)
         return(FKO_ERROR_DECRYPTION_SIZE);
 
     if(ctx->encoded_msg == NULL)