]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
mkfs.bfs: validate numeric user inputs
authorSami Kerola <kerolasa@iki.fi>
Mon, 11 Jul 2011 19:08:12 +0000 (21:08 +0200)
committerSami Kerola <kerolasa@iki.fi>
Mon, 11 Jul 2011 19:11:49 +0000 (21:11 +0200)
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
disk-utils/Makefile.am
disk-utils/mkfs.bfs.c

index 7d018b57ddbe01e783fb0c916a5380fd4856e824..604a65c3f4a80aea310bc6ec09d959c7623ee0f2 100644 (file)
@@ -17,7 +17,7 @@ sbin_PROGRAMS = mkfs mkswap fsck.minix mkfs.minix mkfs.bfs
 
 fsck_minix_SOURCES = fsck.minix.c minix.h $(top_srcdir)/lib/ismounted.c
 mkfs_minix_SOURCES = mkfs.minix.c minix.h mkfs.h $(utils_common) $(top_srcdir)/lib/strutils.c
-mkfs_bfs_SOURCES = mkfs.bfs.c $(utils_common)
+mkfs_bfs_SOURCES = mkfs.bfs.c $(utils_common) $(top_srcdir)/lib/strutils.c
 
 swaplabel_SOURCES = swaplabel.c $(utils_common)
 swaplabel_LDADD = $(uuid_ldadd)
index 02e4f8b7d7023df66575e2669abce75e7634ef3c..67b118fb63081c8057c5b5523821b75c960cdb79 100644 (file)
@@ -19,6 +19,7 @@
 #include "c.h"
 #include "nls.h"
 #include "blkdev.h"
+#include "strutils.h"
 #include "xalloc.h"
 
 #define BFS_ROOT_INO           2
@@ -93,7 +94,7 @@ static void __attribute__ ((__noreturn__)) print_version(void)
 int
 main(int argc, char *argv[]) {
        char *device, *volume, *fsname;
-       int inodes;
+       long inodes;
        unsigned long long total_blocks, ino_bytes, ino_blocks, data_blocks;
        unsigned long long user_specified_total_blocks = 0;
        int verbose = 0;
@@ -128,7 +129,7 @@ main(int argc, char *argv[]) {
        while ((c = getopt_long(argc, argv, "N:V:F:vhcl", longopts, NULL)) != -1) {
                switch (c) {
                case 'N':
-                       inodes = atol(optarg);
+                       inodes = strtol_or_err(optarg, _("invalid number of inodes"));
                        break;
 
                case 'V':
@@ -179,7 +180,7 @@ main(int argc, char *argv[]) {
                err(EXIT_FAILURE, _("cannot open %s"), device);
 
        if (optind == argc-1)
-               user_specified_total_blocks = atoll(argv[optind]);
+               user_specified_total_blocks = strtoll_or_err(argv[optind], _("invalid block-count"));
        else if (optind != argc)
                usage(stderr);
 
@@ -230,10 +231,10 @@ main(int argc, char *argv[]) {
                fprintf(stderr, _("FSname: <%-6s>\n"), fsname);
                fprintf(stderr, _("BlockSize: %d\n"), BFS_BLOCKSIZE);
                if (ino_blocks==1)
-                       fprintf(stderr, _("Inodes: %d (in 1 block)\n"),
+                       fprintf(stderr, _("Inodes: %lu (in 1 block)\n"),
                                inodes);
                else
-                       fprintf(stderr, _("Inodes: %d (in %lld blocks)\n"),
+                       fprintf(stderr, _("Inodes: %lu (in %llu blocks)\n"),
                                inodes, ino_blocks);
                fprintf(stderr, _("Blocks: %lld\n"), total_blocks);
                fprintf(stderr, _("Inode end: %d, Data end: %d\n"),