ecryptfs: fix string overflow on long cipher names
PATCH 1/1 ecryptfs: fix string overflow on long cipher names
Passing a cipher name > 32 chars on mount results in an overflow when the cipher name is printed, because the last character in the struct ecryptfs_key_tfm's cipher_name string was never zeroed.
Signed-off-by Eric Sandeen <[email protected]>
---
fs/ecryptfs/crypto.c +1 -0
@@ -1847,6 +1847,7 @@ ecryptfs_add_new_key_tfm(struct ecryptfsmutex_init (&tmp_tfm->key_tfm_mutex);strncpy (tmp_tfm->cipher_name, cipher_name,ECRYPTFS_MAX_CIPHER_NAME_SIZE ); + tmp_tfm->cipher_name[ECRYPTFS_MAX_CIPHER_NAME_SIZE ] ='\0' ; tmp_tfm->key_size = key_size; rc = ecryptfs_process_key_cipher(&tmp_tfm->key_tfm, tmp_tfm->cipher_name,
Quoted 6 lines · Eric Sandeen
Passing a cipher name > 32 chars on mount results in an overflow when the cipher name is printed, because the last character in the struct ecryptfs_key_tfm's
cipher_namestring was never zeroed.Signed-off-by Eric Sandeen <[email protected]>
Acked-by Michael Halcrow <[email protected]>
I don't think this causes any issues outside of a couple of printk's on error paths, but this should definitely go into the next -rc.
Quoted 17 lines
---
Index:
linux-2.6.24-rc3/fs/ecryptfs/crypto.c
===================================================================fs/ecryptfs/crypto.c +1
-0@@ -1847,6 +1847,7 @@ ecryptfs_add_new_key_tfm(struct ecryptfsmutex_init (&tmp_tfm->key_tfm_mutex);strncpy (tmp_tfm->cipher_name, cipher_name,ECRYPTFS_MAX_CIPHER_NAME_SIZE ); + tmp_tfm->cipher_name[ECRYPTFS_MAX_CIPHER_NAME_SIZE ] ='\0' ; tmp_tfm->key_size = key_size; rc = ecryptfs_process_key_cipher(&tmp_tfm->key_tfm, tmp_tfm->cipher_name,