lkml.org 
[lkml]   [2009]   [Oct]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[019/136] eCryptfs: Handle unrecognized tag 3 cipher codes
    2.6.31-stable review patch.  If anyone has any objections, please let us know.

    ------------------
    From: Tyler Hicks <tyhicks@linux.vnet.ibm.com>

    commit b0105eaefa7cce8f4a941d0fc6354b250d30e745 upstream.

    Returns an error when an unrecognized cipher code is present in a tag 3
    packet or an ecryptfs_crypt_stat cannot be initialized. Also sets an
    crypt_stat->tfm error pointer to NULL to ensure that it will not be
    incorrectly freed in ecryptfs_destroy_crypt_stat().

    Acked-by: Serge Hallyn <serue@us.ibm.com>
    Cc: ecryptfs-devel@lists.launchpad.net
    Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    fs/ecryptfs/crypto.c | 1 +
    fs/ecryptfs/keystore.c | 10 +++++++---
    2 files changed, 8 insertions(+), 3 deletions(-)

    --- a/fs/ecryptfs/crypto.c
    +++ b/fs/ecryptfs/crypto.c
    @@ -797,6 +797,7 @@ int ecryptfs_init_crypt_ctx(struct ecryp
    kfree(full_alg_name);
    if (IS_ERR(crypt_stat->tfm)) {
    rc = PTR_ERR(crypt_stat->tfm);
    + crypt_stat->tfm = NULL;
    ecryptfs_printk(KERN_ERR, "cryptfs: init_crypt_ctx(): "
    "Error initializing cipher [%s]\n",
    crypt_stat->cipher);
    --- a/fs/ecryptfs/keystore.c
    +++ b/fs/ecryptfs/keystore.c
    @@ -1316,8 +1316,10 @@ parse_tag_3_packet(struct ecryptfs_crypt
    rc = -EINVAL;
    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
    * sizes; see RFC2440 */
    switch(data[(*packet_size)++]) {
    @@ -1328,7 +1330,9 @@ parse_tag_3_packet(struct ecryptfs_crypt
    crypt_stat->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)) {
    printk(KERN_WARNING "Only S2K ID 3 is currently supported\n");
    rc = -ENOSYS;



    \
     
     \ /
      Last update: 2009-10-02 04:05    [W:0.023 / U:121.508 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site