]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
bugfix: fix possible segfault during umount -a
authorRichard Fuchs <rfuchs@sipwise.com>
Tue, 17 Apr 2018 13:40:20 +0000 (09:40 -0400)
committerKarel Zak <kzak@redhat.com>
Wed, 18 Apr 2018 08:01:01 +0000 (10:01 +0200)
mnt_context_get_mtab() doesn't set its return **tb argument on error,
and so in mnt_context_next_umount() mtab will remain uninitialized on
error, later resulting in cxt->mtab containing garbage, possibly
resulting in segfault on exit.

libmount/src/context_umount.c

index 45651b58e3b239e683a782a5aaa7520407088ee3..240ec3be69db77e097872e4102f453ed39fcf4aa 100644 (file)
@@ -1003,11 +1003,12 @@ int mnt_context_next_umount(struct libmnt_context *cxt,
        rc = mnt_context_get_mtab(cxt, &mtab);
        cxt->mtab = NULL;               /* do not reset mtab */
        mnt_reset_context(cxt);
-       cxt->mtab = mtab;
 
        if (rc)
                return rc;
 
+       cxt->mtab = mtab;
+
        do {
                rc = mnt_table_next_fs(mtab, itr, fs);
                if (rc != 0)