]> git.ipfire.org Git - thirdparty/HylaFAX.git/commitdiff
FIFO sending utilities must send NUL character at the end of commands
authorPatrice Fournier <pfournier@ifax.com>
Wed, 24 Oct 2012 16:12:53 +0000 (12:12 -0400)
committerPatrice Fournier <patrice.fournier@ifax.com>
Tue, 30 Jul 2024 01:34:18 +0000 (21:34 -0400)
Without NUL character, calling utilities in succession has chances of
concatenating different commands in a single invalid one.

util/faxconfig.c
util/faxmodem.c
util/faxstate.c

index c15773198d10c4e7625d93158c35e7175ad7d362..ccacb8d8e79dc2edb5a97abe9a72c22a8d71ecac 100644 (file)
@@ -128,7 +128,8 @@ main(int argc, char** argv)
                 cmdlen = snprintf(cmd, cmdsize, "C%s%s:%s",
                     isQueuer ? ":" : "", argv[optind], argv[optind+1]);
             }
-            if (cmdlen < 0 || cmdlen >= cmdsize || write(fifo, cmd, cmdlen) != cmdlen) {
+            cmdlen++;              /* Include NUL character */
+            if (cmdlen < 1 || cmdlen > cmdsize || write(fifo, cmd, cmdlen) != cmdlen) {
                 fatal("%s: FIFO write failed for command (%s)",
                    argv[0], strerror(errno));
             }
index 9bbcc57f48baffaa4703f6f116f5574c672aae2b..dcee79e17439939bf5ba18eee6eb2a626c70479d 100644 (file)
@@ -315,7 +315,8 @@ main(int argc, char** argv)
     } else {
         cmdlen = snprintf(cmd, sizeof(cmd), "+%s:R%c%08x", devname, canpoll, caps);
     }
-    if (cmdlen < 0 || cmdlen > sizeof(cmd) || write(fifo, cmd, cmdlen) != cmdlen) {
+    cmdlen++;              /* Include NUL character */
+    if (cmdlen < 1 || cmdlen > sizeof(cmd) || write(fifo, cmd, cmdlen) != cmdlen) {
         fatal("%s: FIFO write failed for command (%s)",
             argv[0], strerror(errno));
     }
index 6756d27f3d6889ce37cca4c404739805e10c55a7..45d243bdc3402e9fe8bdee3df89757ee2491ed85 100644 (file)
@@ -135,7 +135,8 @@ main(int argc, char** argv)
             fatal("%s: open: %s", FAX_FIFO, strerror(errno));
         }
         cmdlen = snprintf(cmd, sizeof(cmd), "+%s:%s", devid, arg);
-        if (cmdlen < 0 || cmdlen >= sizeof(cmd) || write(fifo, cmd, cmdlen) != cmdlen) {
+        cmdlen++;              /* Include NUL character */
+        if (cmdlen < 1 || cmdlen >= sizeof(cmd) || write(fifo, cmd, cmdlen) != cmdlen) {
             fatal("FIFO write failed for command (%s)", strerror(errno));
         }
     } else {
@@ -146,7 +147,8 @@ main(int argc, char** argv)
             fatal("%s: open: %s", fifoname, strerror(errno));
         }
         cmdlen = snprintf(cmd, sizeof(cmd), "S%s", arg);
-        if (cmdlen < 0 || cmdlen >= sizeof(cmd) || write(fifo, cmd, cmdlen) != cmdlen) {
+        cmdlen++;              /* Include NUL character */
+        if (cmdlen < 1 || cmdlen >= sizeof(cmd) || write(fifo, cmd, cmdlen) != cmdlen) {
             fatal("FIFO write failed for command (%s)", strerror(errno));
         }
     }