From cde0f2824904a0c2da9c6a8a9943c3467e6a7fd7 Mon Sep 17 00:00:00 2001
From: obarun <eric@obarun.org>
Date: Mon, 30 Oct 2023 20:48:52 +1100
Subject: [PATCH] try to use memset correctly

---
 src/lib66/exec/ssexec_tree_admin.c            |  2 +-
 src/lib66/exec/ssexec_tree_signal.c           |  2 +-
 src/lib66/module/regex_replace.c              |  6 +++---
 src/lib66/parse/parse_compute_list.c          |  2 +-
 .../parse/parse_rename_interdependences.c     |  6 +++---
 src/lib66/service/service_graph_build.c       |  6 +++---
 src/lib66/svc/svc_launch.c                    | 20 +++++++++----------
 7 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/src/lib66/exec/ssexec_tree_admin.c b/src/lib66/exec/ssexec_tree_admin.c
index 834894c6..3538c5a1 100644
--- a/src/lib66/exec/ssexec_tree_admin.c
+++ b/src/lib66/exec/ssexec_tree_admin.c
@@ -120,7 +120,7 @@ tree_what_t what_init(void)
 
     tree_what_t what = TREE_WHAT_ZERO ;
 
-    memset(what.gr, 0, 6) ;
+    memset(what.gr, 0, 6 * sizeof(char)); ;
     memset(what.auids, 0, 256 * sizeof(uid_t));
     memset(what.duids, 0, 256 * sizeof(uid_t)) ;
 
diff --git a/src/lib66/exec/ssexec_tree_signal.c b/src/lib66/exec/ssexec_tree_signal.c
index e798344d..056dee0e 100644
--- a/src/lib66/exec/ssexec_tree_signal.c
+++ b/src/lib66/exec/ssexec_tree_signal.c
@@ -626,7 +626,7 @@ static int async_deps(pidtree_t *apidt, unsigned int i, unsigned int what, ssexe
 
         if (x.revents & IOPAUSE_READ) {
 
-            memset(buf, 0, sizeof(buf)) ;
+            memset(buf, 0, ((UINT_FMT*2)*SS_MAX_SERVICE + 1) * sizeof(char)) ;
             r = read(apidt[i].pipe[0], buf, sizeof(buf)) ;
             if (r < 0)
                 log_dieu(LOG_EXIT_SYS, "read from pipe") ;
diff --git a/src/lib66/module/regex_replace.c b/src/lib66/module/regex_replace.c
index d6ce2762..0d6698cb 100644
--- a/src/lib66/module/regex_replace.c
+++ b/src/lib66/module/regex_replace.c
@@ -78,9 +78,9 @@ void regex_replace(stralloc *list, resolve_service_t *res)
                 if ((line[0] != ':') || (get_sep_before(line + 1, ':', '=') < 0))
                     log_die(LOG_EXIT_SYS, "bad format in line: ", line, " of key @infiles field") ;
 
-                memset(filename, 0, SS_MAX_SERVICE_NAME + 1) ;
-                memset(replace, 0, linelen + 1) ;
-                memset(regex, 0, linelen + 1) ;
+                memset(filename, 0, SS_MAX_SERVICE_NAME + 1 * sizeof(char)); ;
+                memset(replace, 0, linelen + 1 * sizeof(char)) ;
+                memset(regex, 0, linelen + 1 * sizeof(char)) ;
 
                 fpos = regex_get_file_name(filename, line) ;
                 if (fpos < 3) all = 1 ;
diff --git a/src/lib66/parse/parse_compute_list.c b/src/lib66/parse/parse_compute_list.c
index 1bd1ab20..9ec0bd53 100644
--- a/src/lib66/parse/parse_compute_list.c
+++ b/src/lib66/parse/parse_compute_list.c
@@ -43,7 +43,7 @@ int parse_compute_list(resolve_wrapper_t_ref wres, stralloc *sa, uint32_t *res,
 
     char f[len + nelement + 2] ;
 
-    memset(f, 0, len) ;
+    memset(f, 0, len * sizeof(size_t)) ;
 
     for (; pos < sa->len ; pos += strlen(sa->s + pos) + 1) {
 
diff --git a/src/lib66/parse/parse_rename_interdependences.c b/src/lib66/parse/parse_rename_interdependences.c
index 96eb3430..cdb44091 100644
--- a/src/lib66/parse/parse_rename_interdependences.c
+++ b/src/lib66/parse/parse_rename_interdependences.c
@@ -79,7 +79,7 @@ static void parse_prefix_name(unsigned int idx, resolve_service_t *ares, unsigne
         size_t len = (mlen + 1 + SS_MAX_TREENAME + 2) * ares[idx].dependencies.ndepends ;
         char n[len] ;
 
-        memset(n, 0, len) ;
+        memset(n, 0, len * sizeof(size_t)); ;
 
         parse_prefix(n, &stk, ares, areslen, prefix) ;
 
@@ -98,7 +98,7 @@ static void parse_prefix_name(unsigned int idx, resolve_service_t *ares, unsigne
         size_t len = (mlen + 1 + SS_MAX_TREENAME + 2) * ares[idx].dependencies.nrequiredby ;
         char n[len] ;
 
-        memset(n, 0, len) ;
+        memset(n, 0, len * sizeof(size_t)) ;
 
         parse_prefix(n, &stk, ares, areslen, prefix) ;
 
@@ -177,4 +177,4 @@ void parse_rename_interdependences(resolve_service_t *res, char const *prefix, r
     stralloc_free(&sa) ;
     free(wres) ;
     free(awres) ;
-}
\ No newline at end of file
+}
diff --git a/src/lib66/service/service_graph_build.c b/src/lib66/service/service_graph_build.c
index 83ec07d0..97eaf328 100644
--- a/src/lib66/service/service_graph_build.c
+++ b/src/lib66/service/service_graph_build.c
@@ -30,7 +30,7 @@ static void issupervised(char *store, resolve_service_t *ares, unsigned int ares
     ss_state_t ste = STATE_ZERO ;
     stralloc sa = STRALLOC_ZERO ;
 
-    memset(store, 0, strlen(str)) ;
+    memset(store, 0, strlen(str) * sizeof(char)) ;
 
     if (!sastr_clean_string(&sa, str))
         log_dieu(LOG_EXIT_SYS, "clean string") ;
@@ -93,7 +93,7 @@ void service_graph_build(graph_t *g, resolve_service_t *ares, unsigned int aresl
 
             if (pres->dependencies.ndepends && FLAGS_ISSET(flag, STATE_FLAGS_WANTUP)) {
 
-                char store[strlen(pres->sa.s + pres->dependencies.depends) + 1] ;
+                char store[strlen(pres->sa.s + pres->dependencies.depends) + 1 * pres->dependencies.ndepends] ;
 
                 if (FLAGS_ISSET(flag, STATE_FLAGS_ISSUPERVISED)) {
 
@@ -112,7 +112,7 @@ void service_graph_build(graph_t *g, resolve_service_t *ares, unsigned int aresl
 
             if (pres->dependencies.nrequiredby && FLAGS_ISSET(flag, STATE_FLAGS_WANTDOWN)) {
 
-                char store[strlen(pres->sa.s + pres->dependencies.requiredby) + 1] ;
+                char store[strlen(pres->sa.s + pres->dependencies.requiredby) + 1 * pres->dependencies.nrequiredby] ;
 
                 if (FLAGS_ISSET(flag, STATE_FLAGS_ISSUPERVISED)) {
 
diff --git a/src/lib66/svc/svc_launch.c b/src/lib66/svc/svc_launch.c
index 6233ca89..56ee0812 100644
--- a/src/lib66/svc/svc_launch.c
+++ b/src/lib66/svc/svc_launch.c
@@ -14,7 +14,7 @@
 
 #include <string.h>
 #include <stdint.h>
-#include <unistd.h> // access
+#include <unistd.h> // access, unlink
 #include <errno.h>
 #include <signal.h>
 #include <sys/types.h>
@@ -281,7 +281,7 @@ static int async_deps(pidservice_t *apids, unsigned int i, unsigned int what, ss
 
         if (x.revents & IOPAUSE_READ) {
 
-            memset(buf, 0, sizeof(buf)) ;
+            memset(buf, 0, ((UINT_FMT*2)*SS_MAX_SERVICE + 1) * sizeof(char)) ;
             r = read(apids[i].pipe[0], buf, sizeof(buf)) ;
             if (r < 0)
                 log_dieu(LOG_EXIT_SYS, "read from pipe") ;
@@ -544,10 +544,10 @@ static int doit(pidservice_t *sv, unsigned int what, tain *deadline)
 
             if (data[1] == 'r') {
                 /** oneshot service are not handled automatically by
-                 * s6-supervise. Signal is restart, so let it down first 
+                 * s6-supervise. Signal is restart, so let it down first
                  * and force to bring it up again .*/
-                
-                log_trace("sending ", "up to: ", scandir) ;
+
+                log_trace("sending up to: ", scandir) ;
 
                 char const *newargv[11] ;
                 unsigned int m = 0 ;
@@ -569,13 +569,13 @@ static int doit(pidservice_t *sv, unsigned int what, tain *deadline)
                     log_warnusys_return(LOG_EXIT_ZERO, "wait for s6-sudo") ;
 
                 if (WIFSIGNALED(wstat) && WEXITSTATUS(wstat))
-                    return WIFSIGNALED(wstat) ? WTERMSIG(wstat) : WEXITSTATUS(wstat) ;                 
-            } 
+                    return WIFSIGNALED(wstat) ? WTERMSIG(wstat) : WEXITSTATUS(wstat) ;
+            }
+
+            return WEXITSTATUS(wstat) ;
 
-            return WEXITSTATUS(wstat) ;            
-        
         } else {
-                    
+
             return WIFSIGNALED(wstat) ? WTERMSIG(wstat) : WEXITSTATUS(wstat) ;
         }
 
-- 
GitLab