]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
When log messages with 'write' function it could be an inconsistency between the... 167/head
authorDanil Korotenko <danil.korotenko@gmail.com>
Fri, 2 Apr 2021 14:59:24 +0000 (17:59 +0300)
committerDanil Korotenko <danil.korotenko@gmail.com>
Fri, 2 Apr 2021 15:00:38 +0000 (18:00 +0300)
To avoid this situation, added 'backendMessage' function that will count the log message string length automatically.

backend/backend-private.h
backend/ipp.c
backend/snmp.c
backend/testbackend.c
backend/usb-darwin.c

index 85fb8aef8ae36f5ef2cc664d888d2e45601065e0..9b656ebd4b16e89fd9586486c35daf4fadc81146 100644 (file)
@@ -320,6 +320,12 @@ extern int         backendSNMPSupplies(int snmp_fd, http_addr_t *addr,
 extern int             backendWaitLoop(int snmp_fd, http_addr_t *addr,
                                        int use_bc, _cups_sccb_t side_cb);
 
+/*
+ * Used to log messages in backend.
+ * This was done to avoid a mismatch between the message string and the length of the string to write.
+ */
+#define CUPS_BACKEND_LOG_MESSAGE_SIZE 2048
+#define backendMessage(msg) {const char *s=msg; write(2, s, strnlen(s, CUPS_BACKEND_LOG_MESSAGE_SIZE));}
 
 #  ifdef __cplusplus
 }
index 3a84d14e41d9b8d906b4fc53e1c7c0fa0673aa24..63353a66df48f6ae6075a0617286222134079204 100644 (file)
@@ -3418,7 +3418,7 @@ sigterm_handler(int sig)          /* I - Signal */
 {
   (void)sig;   /* remove compiler warnings... */
 
-  write(2, "DEBUG: Got SIGTERM.\n", 20);
+  backendMessage("DEBUG: Got SIGTERM.\n");
 
 #if defined(HAVE_GSSAPI) && defined(HAVE_XPC)
   if (child_pid)
@@ -3434,7 +3434,7 @@ sigterm_handler(int sig)          /* I - Signal */
     * Flag that the job should be canceled...
     */
 
-    write(2, "DEBUG: sigterm_handler: job_canceled = 1.\n", 42);
+    backendMessage("DEBUG: sigterm_handler: job_canceled = 1.\n");
 
     job_canceled = 1;
     return;
index 9572822a8e412c6e775f770ce50298621fbfd7a5..084c6f5118a28388c31000c68b6741ba40c38455 100644 (file)
@@ -424,7 +424,7 @@ alarm_handler(int sig)                      /* I - Signal number */
 #endif /* !HAVE_SIGSET && !HAVE_SIGACTION */
 
   if (DebugLevel)
-    write(2, "DEBUG: ALARM!\n", 14);
+    backendMessage("DEBUG: ALARM!\n");
 }
 
 
index 6dbd0abee691651678b3ca330e9cddec835a3c1f..6412a022b766fbda099b681d9d25150d1ca306f0 100644 (file)
@@ -19,6 +19,7 @@
 #include <fcntl.h>
 #include <sys/wait.h>
 #include <signal.h>
+#include "backend-private.h"
 
 
 /*
@@ -395,7 +396,7 @@ main(int  argc,                             /* I - Number of command-line args */
          data = ps_data;
 
         write(1, data, strlen(data));
-       write(2, "DEBUG: START\n", 13);
+       backendMessage("DEBUG: START\n");
        timeout = 60.0;
         while ((bytes = cupsBackChannelRead(buffer, sizeof(buffer),
                                            timeout)) > 0)
@@ -403,7 +404,7 @@ main(int  argc,                             /* I - Number of command-line args */
          write(2, buffer, (size_t)bytes);
          timeout = 5.0;
        }
-       write(2, "\nDEBUG: END\n", 12);
+       backendMessage("\nDEBUG: END\n");
       }
 
       exit(0);
index 0b69967621e38675676fc9136ee9522f845530df..25e58cdda0d505d9a49ca67a61fdfa559748e994 100644 (file)
@@ -2231,7 +2231,7 @@ sigterm_handler(int sig)          /* I - Signal */
       _exit(0);
     else
     {
-      write(2, "DEBUG: Child crashed.\n", 22);
+      backendMessage("DEBUG: Child crashed.\n");
       _exit(CUPS_BACKEND_STOP);
     }
   }