diff --git a/src/lib66/exec/ssexec_tree_admin.c b/src/lib66/exec/ssexec_tree_admin.c
index 834894c6e871e5b11ba12a676c52f45389080269..3538c5a12b7734590d240894f5faf7e990021342 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 e798344d6c3536d8b16e9fa05f80fc4612a12775..056dee0e8401218cd96c8fcbf0c7d67f9cc980c2 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 d6ce2762583999391e634ca75b26fd308b211219..0d6698cbd9a69b96f5978f957fcde49c2f6aaa75 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 1bd1ab20c364844a1b6488eb89ed866575ed2c01..9ec0bd534d597e5008a386b24a608a0610ee7a73 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 96eb3430c5956c85ebd76e43a54acadb1f5579d9..cdb4409136073a1c49b8095010cd73d2d53b2a20 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 83ec07d0e2f13ab59e4714e3f0b14ba5ce7a89a8..97eaf32872922b2ee46934bba8628e294b882c3f 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 6233ca89ee80ab775afaa983568862e378c421ae..56ee08123a7e081fc8800b63bd46010f9aeee666 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) ;
         }