]> err.no Git - util-linux/commitdiff
umount: use strtosize() for offset=
authorKarel Zak <kzak@redhat.com>
Thu, 7 Oct 2010 06:58:00 +0000 (08:58 +0200)
committerKarel Zak <kzak@redhat.com>
Thu, 7 Oct 2010 06:58:00 +0000 (08:58 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
mount/Makefile.am
mount/umount.c

index 83e1fcdd8a992ecda6fba933895d6e196202265d..235cceb06e4de9d89b172d1282866d9afcc1754f 100644 (file)
@@ -33,7 +33,7 @@ mount_CFLAGS = $(SUID_CFLAGS) $(cflags_common)
 mount_LDFLAGS = $(SUID_LDFLAGS) $(AM_LDFLAGS)
 mount_LDADD = $(ldadd_common)
 
-umount_SOURCES = umount.c $(srcs_mount)
+umount_SOURCES = umount.c $(srcs_mount) $(top_srcdir)/lib/strtosize.c
 umount_CFLAGS = $(SUID_CFLAGS) $(cflags_common)
 umount_LDFLAGS = $(SUID_LDFLAGS) $(AM_LDFLAGS)
 umount_LDADD = $(ldadd_common)
index 0ad7c5f98233b18787a178fd4023c41705e12051..49741a51929a3e5756b28f75c5de76e98e3bf1dd 100644 (file)
@@ -20,6 +20,7 @@
 #include "fstab.h"
 #include "env.h"
 #include "nls.h"
+#include "strtosize.h"
 
 #if defined(MNT_FORCE)
 /* Interesting ... it seems libc knows about MNT_FORCE and presumably
@@ -463,7 +464,7 @@ get_value(const char *list, const char *s) {
 static int
 is_valid_loop(struct mntentchn *mc, struct mntentchn *fs)
 {
-       unsigned long long offset = 0;
+       uintmax_t offset = 0;
        char *p;
 
        /* check if it begins with /dev/loop */
@@ -477,8 +478,11 @@ is_valid_loop(struct mntentchn *mc, struct mntentchn *fs)
 
        /* check for offset option in fstab */
        p = get_value(fs->m.mnt_opts, "offset=");
-       if (p)
-               offset = strtoull(p, NULL, 10);
+       if (p && strtosize(p, &offset)) {
+               if (verbose > 1)
+                       printf(_("failed to parse 'offset=%s' options\n"), p);
+               return 0;
+       }
 
        /* check association */
        if (loopfile_used_with((char *) mc->m.mnt_fsname,