summaryrefslogtreecommitdiff
path: root/sbin/mount_ntfs/mount_ntfs.c
diff options
context:
space:
mode:
authorPedro Martelletto <pedro@cvs.openbsd.org>2007-04-09 20:22:42 +0000
committerPedro Martelletto <pedro@cvs.openbsd.org>2007-04-09 20:22:42 +0000
commitb77de0322bb373112a4d0b239571875c9e07e9be (patch)
treed2988b2c01827ad28c2294c5f9fd7e9a382b030c /sbin/mount_ntfs/mount_ntfs.c
parente515e43c91d2bebfc1e01aa1063d1b20fa538415 (diff)
Correctly handle option '-m', okay mickey@ grunk@
Diffstat (limited to 'sbin/mount_ntfs/mount_ntfs.c')
-rw-r--r--sbin/mount_ntfs/mount_ntfs.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/sbin/mount_ntfs/mount_ntfs.c b/sbin/mount_ntfs/mount_ntfs.c
index 4e17130d29f..c223e187bf6 100644
--- a/sbin/mount_ntfs/mount_ntfs.c
+++ b/sbin/mount_ntfs/mount_ntfs.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mount_ntfs.c,v 1.10 2006/12/15 12:53:59 jmc Exp $ */
+/* $OpenBSD: mount_ntfs.c,v 1.11 2007/04/09 20:22:41 pedro Exp $ */
/* $NetBSD: mount_ntfs.c,v 1.9 2003/05/03 15:37:08 christos Exp $ */
/*
@@ -65,6 +65,7 @@ static const struct mntopt mopts[] = {
#endif
static void usage(void) __dead2;
+mode_t a_mask(char *);
int main(int, char **);
int
@@ -89,7 +90,7 @@ main(int argc, char *argv[])
set_gid = 1;
break;
case 'm':
- args.mode = atoi(optarg);
+ args.mode = a_mask(optarg);
set_mask = 1;
break;
case 'i':
@@ -146,6 +147,22 @@ main(int argc, char *argv[])
exit (0);
}
+mode_t
+a_mask(char *s)
+{
+ int done, rv;
+ char *ep;
+
+ done = 0;
+ if (*s >= '0' && *s <= '7') {
+ done = 1;
+ rv = strtol(optarg, &ep, 8);
+ }
+ if (!done || rv < 0 || *ep)
+ errx(1, "invalid file mode: %s", s);
+ return (rv);
+}
+
static void
usage(void)
{