Fix stupid bugs. update was segfaulting. mknod minor # was always 0
authorErik Andersen <andersen@codepoet.org>
Fri, 28 Apr 2000 22:10:34 +0000 (22:10 -0000)
committerErik Andersen <andersen@codepoet.org>
Fri, 28 Apr 2000 22:10:34 +0000 (22:10 -0000)
due to a parsing bug.  Oops.
 -Erik

Changelog
coreutils/mknod.c
miscutils/update.c
mknod.c
update.c

index b7e40e624ccccea10ac616c2fd4aef8db63f15b9..f185e9017f4570c94b2daa34beb8688d185f2a56 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -4,6 +4,8 @@
        * Added mktemp, contributed by Daniel Jacobowitz <dan@debian.org>
        * Fix for ping warnings from Sascha Ziemann <szi@aibon.ping.de>
        * More doc updates
+       * Fixed update segfault
+       * Fixed mknod -- minor number was always 0
 
 
 0.43
index 0c93df64da3483e9c191513edc95f293942965d2..caa234f1fedba82b816cb1cf889645a9300b6c42 100644 (file)
@@ -58,6 +58,7 @@ int mknod_main(int argc, char **argv)
                        argc--;
                        argv++;
                        parse_mode(*argv, &perm);
+                       umask(0);
                        break;
                default:
                        usage(mknod_usage);
@@ -87,7 +88,7 @@ int mknod_main(int argc, char **argv)
        }
 
        if (mode == S_IFCHR || mode == S_IFBLK) {
-               dev = (atoi(argv[2]) << 8) | atoi(argv[1]);
+               dev = (atoi(argv[2]) << 8) | atoi(argv[3]);
        }
 
        mode |= perm;
index 1e3e032fde066414533a97779a0b191c53565dc4..18b13e8c96ac224c12bd1d654971e6be7439ccd2 100644 (file)
@@ -52,7 +52,7 @@ extern int update_main(int argc, char **argv)
 
        argc--;
        argv++;
-       while (**argv == '-') {
+       while (argc>0 && **argv == '-') {
                while (*++(*argv)) {
                        switch (**argv) {
                        case 'S':
diff --git a/mknod.c b/mknod.c
index 0c93df64da3483e9c191513edc95f293942965d2..caa234f1fedba82b816cb1cf889645a9300b6c42 100644 (file)
--- a/mknod.c
+++ b/mknod.c
@@ -58,6 +58,7 @@ int mknod_main(int argc, char **argv)
                        argc--;
                        argv++;
                        parse_mode(*argv, &perm);
+                       umask(0);
                        break;
                default:
                        usage(mknod_usage);
@@ -87,7 +88,7 @@ int mknod_main(int argc, char **argv)
        }
 
        if (mode == S_IFCHR || mode == S_IFBLK) {
-               dev = (atoi(argv[2]) << 8) | atoi(argv[1]);
+               dev = (atoi(argv[2]) << 8) | atoi(argv[3]);
        }
 
        mode |= perm;
index 1e3e032fde066414533a97779a0b191c53565dc4..18b13e8c96ac224c12bd1d654971e6be7439ccd2 100644 (file)
--- a/update.c
+++ b/update.c
@@ -52,7 +52,7 @@ extern int update_main(int argc, char **argv)
 
        argc--;
        argv++;
-       while (**argv == '-') {
+       while (argc>0 && **argv == '-') {
                while (*++(*argv)) {
                        switch (**argv) {
                        case 'S':