]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
mount-util: don't clobber return value in umount_recursive()
authorLennart Poettering <lennart@poettering.net>
Mon, 25 Mar 2019 15:54:48 +0000 (16:54 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 25 Mar 2019 18:33:55 +0000 (19:33 +0100)
We shouldn't override 'r' with the result of cunescape(), since we use
it to return the last error of umount().

src/shared/mount-util.c

index 9fa995f69355746bd0babeefca89992eac2c0880..8af90a5e31d8b452520365f81fdab7d311855851 100644 (file)
@@ -29,8 +29,8 @@
 #include "strv.h"
 
 int umount_recursive(const char *prefix, int flags) {
-        bool again;
         int n = 0, r;
+        bool again;
 
         /* Try to umount everything recursively below a
          * directory. Also, take care of stacked mounts, and keep
@@ -73,9 +73,9 @@ int umount_recursive(const char *prefix, int flags) {
                                 continue;
                         }
 
-                        r = cunescape(path, UNESCAPE_RELAX, &p);
-                        if (r < 0)
-                                return r;
+                        k = cunescape(path, UNESCAPE_RELAX, &p);
+                        if (k < 0)
+                                return k;
 
                         if (!path_startswith(p, prefix))
                                 continue;
@@ -95,7 +95,7 @@ int umount_recursive(const char *prefix, int flags) {
 
         } while (again);
 
-        return r ? r : n;
+        return r < 0 ? r : n;
 }
 
 static int get_mount_flags(const char *path, unsigned long *flags) {