• Nathan Chancellor's avatar
    ecryptfs: Fix up bad backport of fe2e082f · c15b1373
    Nathan Chancellor authored
    BugLink: https://bugs.launchpad.net/bugs/1868628
    
    When doing the 4.9 merge into certain Android trees, I noticed a warning
    from Android's deprecated GCC 4.9.4, which causes a build failure in
    those trees due to basically -Werror:
    
    fs/ecryptfs/keystore.c: In function 'ecryptfs_parse_packet_set':
    fs/ecryptfs/keystore.c:1357:2: warning: 'auth_tok_list_item' may be used
    uninitialized in this function [-Wmaybe-uninitialized]
      memset(auth_tok_list_item, 0,
      ^
    fs/ecryptfs/keystore.c:1260:38: note: 'auth_tok_list_item' was declared
    here
      struct ecryptfs_auth_tok_list_item *auth_tok_list_item;
                                          ^
    
    GCC 9.2.0 was not able to pick up this warning when I tested it.
    
    Turns out that Clang warns as well when -Wuninitialized is used, which
    is not the case in older stable trees at the moment (but shows value in
    potentially backporting the various warning fixes currently in upstream
    to get more coverage).
    
    fs/ecryptfs/keystore.c:1284:6: warning: variable 'auth_tok_list_item' is
    used uninitialized whenever 'if' condition is true
    [-Wsometimes-uninitialized]
            if (data[(*packet_size)++] != ECRYPTFS_TAG_1_PACKET_TYPE) {
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    fs/ecryptfs/keystore.c:1360:4: note: uninitialized use occurs here
                            auth_tok_list_item);
                            ^~~~~~~~~~~~~~~~~~
    fs/ecryptfs/keystore.c:1284:2: note: remove the 'if' if its condition is
    always false
            if (data[(*packet_size)++] != ECRYPTFS_TAG_1_PACKET_TYPE) {
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    fs/ecryptfs/keystore.c:1260:56: note: initialize the variable
    'auth_tok_list_item' to silence this warning
            struct ecryptfs_auth_tok_list_item *auth_tok_list_item;
                                                                  ^
                                                                   = NULL
    1 warning generated.
    
    Somehow, commit fe2e082f ("ecryptfs: fix a memory leak bug in
    parse_tag_1_packet()") upstream was not applied in the correct if block
    in 4.4.215, 4.9.215, and 4.14.172, which will indeed lead to use of
    uninitialized memory. Fix it up by undoing the bad backport in those
    trees then reapplying the patch in the proper location.
    Signed-off-by: default avatarNathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: default avatarKhalid Elmously <khalid.elmously@canonical.com>
    Signed-off-by: default avatarKelsey Skunberg <kelsey.skunberg@canonical.com>
    c15b1373
keystore.c 79.2 KB