]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
fs/zfs/zfscrypt.c: fix memory leaks.
authorAndrei Borzenkov <arvidjaar@gmail.com>
Tue, 27 Jan 2015 18:12:19 +0000 (21:12 +0300)
committerAndrei Borzenkov <arvidjaar@gmail.com>
Tue, 27 Jan 2015 18:12:19 +0000 (21:12 +0300)
Found by: Coverity scan.

grub-core/fs/zfs/zfscrypt.c

index 91a0af64ce12d5fec567f15286d136981b5945c0..834f858a07ee631a4cd4c8c71d02a33eea9ad0cb 100644 (file)
@@ -354,6 +354,7 @@ grub_zfs_load_key_real (const struct grub_zfs_key *key,
       if (err)
        {
          grub_errno = GRUB_ERR_NONE;
+         grub_crypto_cipher_close (cipher);
          continue;
        }
                    
@@ -362,6 +363,7 @@ grub_zfs_load_key_real (const struct grub_zfs_key *key,
       if (err)
        {
          grub_errno = GRUB_ERR_NONE;
+         grub_crypto_cipher_close (cipher);
          continue;
        }
       
@@ -372,6 +374,7 @@ grub_zfs_load_key_real (const struct grub_zfs_key *key,
        {
          grub_dprintf ("zfs", "key loading failed\n");
          grub_errno = GRUB_ERR_NONE;
+         grub_crypto_cipher_close (cipher);
          continue;
        }
 
@@ -381,12 +384,14 @@ grub_zfs_load_key_real (const struct grub_zfs_key *key,
        {
          grub_dprintf ("zfs", "key loading failed\n");
          grub_errno = GRUB_ERR_NONE;
+         grub_crypto_cipher_close (cipher);
          continue;
        }
       ret = grub_crypto_cipher_open (GRUB_CIPHER_AES);
       if (!ret)
        {
          grub_errno = GRUB_ERR_NONE;
+         grub_crypto_cipher_close (cipher);
          continue;
        }
       err = grub_crypto_cipher_set_key (ret, decrypted, keylen);
@@ -394,8 +399,10 @@ grub_zfs_load_key_real (const struct grub_zfs_key *key,
        {
            grub_errno = GRUB_ERR_NONE;
            grub_crypto_cipher_close (ret);
+           grub_crypto_cipher_close (cipher);
            continue;
          }
+      grub_crypto_cipher_close (cipher);
       return ret;
     }
   return NULL;