[hackers] [sbase] Audit mkfifo(1) || FRIGN

From: <git_AT_suckless.org>
Date: Tue, 3 Mar 2015 14:32:26 +0100 (CET)

commit 55179690324d3ef8456b381a80820da9b4676994
Author: FRIGN <dev_AT_frign.de>
Date: Mon Mar 2 17:25:29 2015 +0100

    Audit mkfifo(1)
    
    1) Fix usage()
    2) Group local variables
    3) Idiomatic argv-loop
    4) BUGFIX: When the m-flag is specified, POSIX clearly says:
       "Set the file permission bits of the newly-created FIFO to the specified mode
       value."
       This means, that if mkfifo() fails for some reason, it should not try to
       chmod() the given path (which has been fixed with the "else if")
       A simple testcase is:
    
       $ touch testfile; mkfifo -m 000 testfile;
    
       GNU mkfifo(1): ls -l testfile
       -rw-r--r-- 1 testfile
    
       sbase mkfifo(1): ls -l testfile
       ---------- 1 testfile
    5) Add blank line before return

diff --git a/README b/README
index cc19a7f..a73d8b7 100644
--- a/README
+++ b/README
_AT_@ -44,7 +44,7 @@ The following tools are implemented ('*' == finished, '#' == UTF-8 support,
 = ls no (-C), -S, -f, -m, -s, -x
 =*| md5sum non-posix none
 =* mkdir yes none
-=* mkfifo yes none
+=*| mkfifo yes none
 =* mktemp non-posix none
 =* mv yes none (-i)
 =*| nice yes none
diff --git a/mkfifo.c b/mkfifo.c
index cc6209c..fb04418 100644
--- a/mkfifo.c
+++ b/mkfifo.c
_AT_@ -8,16 +8,14 @@
 static void
 usage(void)
 {
- eprintf("usage: %s [-m mode] name...\n", argv0);
+ eprintf("usage: %s [-m mode] name ...\n", argv0);
 }
 
 int
 main(int argc, char *argv[])
 {
- mode_t mode = 0;
- mode_t mask;
- int mflag = 0;
- int ret = 0;
+ mode_t mode = 0, mask;
+ int mflag = 0, ret = 0;
 
         ARGBEGIN {
         case 'm':
_AT_@ -29,21 +27,21 @@ main(int argc, char *argv[])
                 usage();
         } ARGEND;
 
- if (argc < 1)
+ if (!argc)
                 usage();
 
- for (; argc > 0; argc--, argv++) {
- if (mkfifo(argv[0], S_IRUSR | S_IWUSR |
- S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) < 0) {
- weprintf("mkfifo %s:", argv[0]);
+ for (; *argv; argc--, argv++) {
+ if (mkfifo(*argv, S_IRUSR | S_IWUSR | S_IRGRP |
+ S_IWGRP | S_IROTH | S_IWOTH) < 0) {
+ weprintf("mkfifo %s:", *argv);
                         ret = 1;
- }
- if (mflag) {
- if (chmod(argv[0], mode) < 0) {
- weprintf("chmod %s:", argv[0]);
+ } else if (mflag) {
+ if (chmod(*argv, mode) < 0) {
+ weprintf("chmod %s:", *argv);
                                 ret = 1;
                         }
                 }
         }
+
         return ret;
 }
Received on Tue Mar 03 2015 - 14:32:26 CET

This archive was generated by hypermail 2.3.0 : Tue Mar 03 2015 - 14:36:29 CET