few more snprintf fixes
authorJeroen van der Heijden <jeroen@transceptor.technology>
Thu, 21 Feb 2019 08:53:49 +0000 (09:53 +0100)
committerJeroen van der Heijden <jeroen@transceptor.technology>
Thu, 21 Feb 2019 08:53:49 +0000 (09:53 +0100)
src/argparse/argparse.c
src/procinfo/procinfo.c
src/qpack/qpack.c
src/siri/db/db.c
src/siri/net/tcp.c
src/xpath/xpath.c

index 3b9dcd55ccdae6e1273641d658cc6e0c0e0b6aa8..ad8b1064de11207adb2afcba8ce43bd099452641 100644 (file)
@@ -156,6 +156,7 @@ void argparse_parse(argparse_parser_t *parser, int argc, char *argv[])
         }
         if (rc)
         {
+            buffer[ARGPARSE_ERR_SIZE - 1] = '\0';
             print_error(parser, buffer, bname);
             quit(parser, EXIT_FAILURE);
         }
@@ -287,7 +288,7 @@ static void print_usage(argparse_parser_t * parser, const char * bname)
             }
             break;
         }
-
+        buffer[ARGPARSE_HELP_SIZE - 1] = '\0';
         line_size += strlen(buffer);
         if (line_size > HELP_WIDTH)
         {
@@ -373,6 +374,7 @@ static void print_help(argparse_parser_t * parser, const char * bname)
             }
             break;
         }
+        buffer[ARGPARSE_HELP_SIZE - 1] = '\0';
         line_size = strlen(buffer);
         if (line_size > 24)
         {
index e5a832db68fdd3aef7070e17804644fd910a12c1..2fd23b2987c6a33cf1a8ef71a904f108ad8b2cf3 100644 (file)
@@ -175,7 +175,14 @@ long int procinfo_open_files(const char * path, int include_fd)
     {
         if (entry->d_type == DT_REG || entry->d_type == DT_LNK)
         {
-            snprintf(buffer, XPATH_MAX, "/proc/self/fd/%s", entry->d_name);
+            if (snprintf(
+                    buffer,
+                    XPATH_MAX,
+                    "/proc/self/fd/%s",
+                    entry->d_name) >= XPATH_MAX)
+            {
+                buffer[XPATH_MAX-1] = '\0';
+            }
             if (realpath(buffer, buf) == NULL)
             {
                 continue;
index 3495c7415c416a0a86dffd0a60c2f926f3d959bb..038e488b6af16fc21808a3fcab2445108aa47fc8 100644 (file)
@@ -362,7 +362,10 @@ int qp_add_fmt(qp_packer_t * packer, const char * fmt, ...)
     va_list args;
     char buffer[QPACK_MAX_FMT_SIZE];
     va_start(args, fmt);
-    vsnprintf(buffer, QPACK_MAX_FMT_SIZE, fmt, args);
+    if (vsnprintf(buffer, QPACK_MAX_FMT_SIZE, fmt, args) >= QPACK_MAX_FMT_SIZE)
+    {
+        buffer[QPACK_MAX_FMT_SIZE-1] = '\0';
+    }
     va_end(args);
     return qp_add_string(packer, buffer);
 }
index c995ecce6abe9bc58fa5c3c0e41cfbb1ad5fd292..f87d346e4338bf501e046098817f70c1ef8b0c7d 100644 (file)
@@ -85,8 +85,9 @@ int8_t siridb_get_idle_percentage(siridb_t * siridb)
 int siridb_is_db_path(const char * dbpath)
 {
     char buffer[XPATH_MAX];
+    buffer[XPATH_MAX-1] = '\0';
     snprintf(buffer,
-            XPATH_MAX,
+            XPATH_MAX-1,
             "%sdatabase.conf",
             dbpath);
     if (!xpath_file_exist(buffer))
@@ -94,7 +95,7 @@ int siridb_is_db_path(const char * dbpath)
         return 0;  /* false */
     }
     snprintf(buffer,
-            XPATH_MAX,
+            XPATH_MAX-1,
             "%sdatabase.dat",
             dbpath);
     if (!xpath_file_exist(buffer))
@@ -600,8 +601,9 @@ int siridb_open_files(siridb_t * siridb)
 int siridb_save(siridb_t * siridb)
 {
     char buffer[XPATH_MAX];
+    buffer[XPATH_MAX-1] = '\0';
     snprintf(buffer,
-            XPATH_MAX,
+            XPATH_MAX-1,
             "%sdatabase.dat",
             siridb->dbpath);
 
@@ -876,9 +878,9 @@ static siridb_t * siridb__from_dat(const char * dbpath)
     char err_msg[512];
     qp_unpacker_t * unpacker;
     char buffer[XPATH_MAX];
-
+    buffer[XPATH_MAX-1] = '\0';
     snprintf(buffer,
-                XPATH_MAX,
+                XPATH_MAX-1,
                 "%sdatabase.dat",
                 dbpath);
 
@@ -918,8 +920,9 @@ static int siridb__read_conf(siridb_t * siridb)
     cfgparser_t * cfgparser;
     cfgparser_option_t * option = NULL;
     siridb_buffer_t * buffer = siridb->buffer;
+    buf[XPATH_MAX-1] = '\0';
     snprintf(buf,
-            XPATH_MAX,
+            XPATH_MAX-1,
             "%sdatabase.conf",
             siridb->dbpath);
 
index e3d5ea005a5e61a8b4bcf9fe8ab84a20495866e2..dd3c5fe6d23dcf3e4d03b41013dafc5f189a7a3b 100644 (file)
@@ -49,9 +49,8 @@ char * sirinet_tcp_name(uv_tcp_t * client)
                     &((struct sockaddr_in *) &name)->sin_addr,
                     addr,
                     sizeof(addr));
-            snprintf(
+            sprintf(
                     buffer,
-                    TCP_NAME_BUF_SZ,
                     "%s:%d",
                     addr,
                     ntohs(((struct sockaddr_in *) &name)->sin_port));
@@ -66,9 +65,8 @@ char * sirinet_tcp_name(uv_tcp_t * client)
                     &((struct sockaddr_in6 *) &name)->sin6_addr,
                     addr,
                     sizeof(addr));
-            snprintf(
+            sprintf(
                     buffer,
-                    TCP_NAME_BUF_SZ,
                     "[%s]:%d",
                     addr,
                     ntohs(((struct sockaddr_in6 *) &name)->sin6_port));
index 8e1eb23eb8d665287ad1a23649bf4193f5e14384..5c78be04fe32bcbd96a6fa6bad92cd7094fcc0f8 100644 (file)
@@ -134,7 +134,7 @@ int xpath_rmdir(const char * path)
             buf = tmp;
         }
 
-        snprintf(buf, len, "%s%s%s", path, slash, p->d_name);
+        sprintf(buf, "%s%s%s", path, slash, p->d_name);
 
         if (xpath_is_dir(buf) ? xpath_rmdir(buf) : unlink(buf))
             goto stop;