lkml.org 
[lkml]   [2019]   [Apr]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 39/53] dm integrity: change memcmp to strncmp in dm_integrity_ctr
    Date
    From: Mikulas Patocka <mpatocka@redhat.com>

    commit 0d74e6a3b6421d98eeafbed26f29156d469bc0b5 upstream.

    If the string opt_string is small, the function memcmp can access bytes
    that are beyond the terminating nul character. In theory, it could cause
    segfault, if opt_string were located just below some unmapped memory.

    Change from memcmp to strncmp so that we don't read bytes beyond the end
    of the string.

    Cc: stable@vger.kernel.org # v4.12+
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/md/dm-integrity.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    --- a/drivers/md/dm-integrity.c
    +++ b/drivers/md/dm-integrity.c
    @@ -2917,17 +2917,17 @@ static int dm_integrity_ctr(struct dm_ta
    goto bad;
    }
    ic->sectors_per_block = val >> SECTOR_SHIFT;
    - } else if (!memcmp(opt_string, "internal_hash:", strlen("internal_hash:"))) {
    + } else if (!strncmp(opt_string, "internal_hash:", strlen("internal_hash:"))) {
    r = get_alg_and_key(opt_string, &ic->internal_hash_alg, &ti->error,
    "Invalid internal_hash argument");
    if (r)
    goto bad;
    - } else if (!memcmp(opt_string, "journal_crypt:", strlen("journal_crypt:"))) {
    + } else if (!strncmp(opt_string, "journal_crypt:", strlen("journal_crypt:"))) {
    r = get_alg_and_key(opt_string, &ic->journal_crypt_alg, &ti->error,
    "Invalid journal_crypt argument");
    if (r)
    goto bad;
    - } else if (!memcmp(opt_string, "journal_mac:", strlen("journal_mac:"))) {
    + } else if (!strncmp(opt_string, "journal_mac:", strlen("journal_mac:"))) {
    r = get_alg_and_key(opt_string, &ic->journal_mac_alg, &ti->error,
    "Invalid journal_mac argument");
    if (r)

    \
     
     \ /
      Last update: 2019-04-30 14:03    [W:4.082 / U:0.236 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site