|
@@ -1316,8 +1316,10 @@ parse_tag_3_packet(struct ecryptfs_crypt_stat *crypt_stat,
|
|
rc = -EINVAL;
|
|
rc = -EINVAL;
|
|
goto out_free;
|
|
goto out_free;
|
|
}
|
|
}
|
|
- ecryptfs_cipher_code_to_string(crypt_stat->cipher,
|
|
|
|
- (u16)data[(*packet_size)]);
|
|
|
|
|
|
+ rc = ecryptfs_cipher_code_to_string(crypt_stat->cipher,
|
|
|
|
+ (u16)data[(*packet_size)]);
|
|
|
|
+ if (rc)
|
|
|
|
+ goto out_free;
|
|
/* A little extra work to differentiate among the AES key
|
|
/* A little extra work to differentiate among the AES key
|
|
* sizes; see RFC2440 */
|
|
* sizes; see RFC2440 */
|
|
switch(data[(*packet_size)++]) {
|
|
switch(data[(*packet_size)++]) {
|
|
@@ -1328,7 +1330,9 @@ parse_tag_3_packet(struct ecryptfs_crypt_stat *crypt_stat,
|
|
crypt_stat->key_size =
|
|
crypt_stat->key_size =
|
|
(*new_auth_tok)->session_key.encrypted_key_size;
|
|
(*new_auth_tok)->session_key.encrypted_key_size;
|
|
}
|
|
}
|
|
- ecryptfs_init_crypt_ctx(crypt_stat);
|
|
|
|
|
|
+ rc = ecryptfs_init_crypt_ctx(crypt_stat);
|
|
|
|
+ if (rc)
|
|
|
|
+ goto out_free;
|
|
if (unlikely(data[(*packet_size)++] != 0x03)) {
|
|
if (unlikely(data[(*packet_size)++] != 0x03)) {
|
|
printk(KERN_WARNING "Only S2K ID 3 is currently supported\n");
|
|
printk(KERN_WARNING "Only S2K ID 3 is currently supported\n");
|
|
rc = -ENOSYS;
|
|
rc = -ENOSYS;
|