From 9818b118a334d0ad613144dc25582cc6dbd64b1a Mon Sep 17 00:00:00 2001
From: obarun <eric@obarun.org>
Date: Wed, 14 Jun 2023 23:21:54 +1100
Subject: [PATCH] fix check of resolve_read exit code

---
 src/lib66/exec/ssexec_env.c                  |  2 +-
 src/lib66/exec/ssexec_resolve.c              |  2 +-
 src/lib66/exec/ssexec_state.c                |  2 +-
 src/lib66/exec/ssexec_status.c               |  2 +-
 src/lib66/exec/ssexec_tree_admin.c           | 12 ++++++------
 src/lib66/exec/ssexec_tree_resolve.c         |  2 +-
 src/lib66/exec/ssexec_tree_signal.c          |  3 ++-
 src/lib66/exec/ssexec_tree_status.c          |  4 ++--
 src/lib66/graph/graph_build_tree.c           |  2 +-
 src/lib66/info/info_graph_display_service.c  |  2 +-
 src/lib66/info/info_graph_display_tree.c     |  2 +-
 src/lib66/resolve/resolve_get_field_tosa_g.c |  2 +-
 src/lib66/resolve/resolve_modify_field_g.c   |  2 +-
 src/lib66/sanitize/sanitize_source.c         |  2 +-
 src/lib66/service/service_graph_collect.c    |  2 +-
 src/lib66/tree/tree_find_current.c           |  2 +-
 src/lib66/tree/tree_get_permissions.c        |  2 +-
 src/lib66/tree/tree_iscurrent.c              |  2 +-
 src/lib66/tree/tree_isenabled.c              |  2 +-
 src/lib66/tree/tree_isinitialized.c          |  2 +-
 src/lib66/tree/tree_issupervised.c           |  2 +-
 src/lib66/tree/tree_ongroups.c               |  2 +-
 src/lib66/tree/tree_service_add.c            |  2 +-
 src/lib66/tree/tree_service_remove.c         |  2 +-
 24 files changed, 31 insertions(+), 30 deletions(-)

diff --git a/src/lib66/exec/ssexec_env.c b/src/lib66/exec/ssexec_env.c
index 0c4a525f..d0cb5f2e 100644
--- a/src/lib66/exec/ssexec_env.c
+++ b/src/lib66/exec/ssexec_env.c
@@ -308,7 +308,7 @@ int ssexec_env(int argc, char const *const *argv, ssexec_t *info)
         goto freed ;
     }
 
-    if (!resolve_read_g(wres, info->base.s, sv))
+    if (resolve_read_g(wres, info->base.s, sv) <= 0)
         log_dieusys(LOG_EXIT_SYS,"read resolve file of: ", sv) ;
 
     if (!res.environ.envdir) {
diff --git a/src/lib66/exec/ssexec_resolve.c b/src/lib66/exec/ssexec_resolve.c
index 9611b16c..00610854 100644
--- a/src/lib66/exec/ssexec_resolve.c
+++ b/src/lib66/exec/ssexec_resolve.c
@@ -266,7 +266,7 @@ int ssexec_resolve(int argc, char const *const *argv, ssexec_t *info)
     else if (!r || r == STATE_FLAGS_FALSE)
         log_die(LOG_EXIT_USER, "service: ", svname, " is not parsed -- try to parse it first using '66 parse ", svname, "'") ;
 
-    if (!resolve_read_g(wres, info->base.s, svname))
+    if (resolve_read_g(wres, info->base.s, svname) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file") ;
 
     info_field_align(service_buf, fields, field_suffix,MAXOPTS) ;
diff --git a/src/lib66/exec/ssexec_state.c b/src/lib66/exec/ssexec_state.c
index 481f3bae..61d11b30 100644
--- a/src/lib66/exec/ssexec_state.c
+++ b/src/lib66/exec/ssexec_state.c
@@ -97,7 +97,7 @@ int ssexec_state(int argc, char const *const *argv, ssexec_t *info)
         log_die(LOG_EXIT_USER, "service: ", svname, " is not parsed -- try to parse it using '66 parse ", svname, "'") ;
 
     r = resolve_read_g(wres, info->base.s, svname) ;
-    if (r < 0)
+    if (r <= 0)
         log_dieu(LOG_EXIT_SYS, "read resolve file: ", svname) ;
 
     info_field_align(buf,fields,field_suffix,MAXOPTS) ;
diff --git a/src/lib66/exec/ssexec_status.c b/src/lib66/exec/ssexec_status.c
index e7fd374d..0cebee13 100644
--- a/src/lib66/exec/ssexec_status.c
+++ b/src/lib66/exec/ssexec_status.c
@@ -960,7 +960,7 @@ int ssexec_status(int argc, char const *const *argv, ssexec_t *info)
     if (!r || r == STATE_FLAGS_FALSE)
         log_die(LOG_EXIT_SYS, "service: ", svname, " is not parsed -- try to parse it using '66 parse ", svname, "'") ;
 
-    if (!resolve_read_g(wres, info->base.s, svname))
+    if (resolve_read_g(wres, info->base.s, svname) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file of: ", svname) ;
 
     info_display_all(&res,what) ;
diff --git a/src/lib66/exec/ssexec_tree_admin.c b/src/lib66/exec/ssexec_tree_admin.c
index 6f177c6b..834894c6 100644
--- a/src/lib66/exec/ssexec_tree_admin.c
+++ b/src/lib66/exec/ssexec_tree_admin.c
@@ -493,7 +493,7 @@ void tree_groups(graph_t *graph, char const *base, char const *treename, char co
     uint_pack(pack, nb) ;
     pack[uint_fmt(pack, nb)] = 0 ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file of: ", treename) ;
 
     if (!resolve_modify_field(wres, E_RESOLVE_TREE_GROUPS, val) ||
@@ -531,7 +531,7 @@ void tree_master_modify_contents(char const *base)
         if (!sastr_rebuild_in_oneline(&sa))
             log_dieu(LOG_EXIT_SYS, "rebuild stralloc") ;
 
-    if (!resolve_read_g(wres, base, SS_MASTER + 1))
+    if (resolve_read_g(wres, base, SS_MASTER + 1) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve Master file of trees") ;
 
     mres.ncontents = (uint32_t)ncontents ;
@@ -609,7 +609,7 @@ void tree_master_enable_disable(char const *base, char const *treename, uint8_t
 
     log_trace(!action ? "disable" : "enable"," tree: ", treename, " from: ", SS_MASTER + 1) ;
 
-    if (!resolve_read_g(wres, base, SS_MASTER + 1))
+    if (resolve_read_g(wres, base, SS_MASTER + 1) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve Master file of trees") ;
 
     if (!mres.nenabled && action) {
@@ -806,7 +806,7 @@ void tree_depends_requiredby(graph_t *g, char const *base, char const *treename,
     uint_pack(pack, nb) ;
     pack[uint_fmt(pack, nb)] = 0 ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file of: ", treename) ;
 
     if (!resolve_modify_field(wres, ewhat, sa.s) ||
@@ -892,7 +892,7 @@ void tree_rules(char const *base, char const *treename, uid_t *uids, uint8_t wha
 
     log_trace("set ", !what ? "denied" : "allowed", " user for tree: ", treename, "..." ) ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename)  <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file of: ", treename) ;
 
     if (tres.nallow)
@@ -1078,7 +1078,7 @@ void tree_clone(char const *clone, ssexec_t *info)
     if (lchown(dst, st.st_uid, st.st_gid) < 0)
         log_dieusys(LOG_EXIT_SYS, "chown: ", dst) ;
 
-    if (!resolve_read(wres, info->base.s, clone))
+    if (resolve_read(wres, info->base.s, clone) <= 0)
         log_dieu(LOG_EXIT_SYS, "read resolve file of tree: ", clone) ;
 
     if (!resolve_modify_field(wres, E_RESOLVE_TREE_INIT, 0) ||
diff --git a/src/lib66/exec/ssexec_tree_resolve.c b/src/lib66/exec/ssexec_tree_resolve.c
index da5e7933..c18198c3 100644
--- a/src/lib66/exec/ssexec_tree_resolve.c
+++ b/src/lib66/exec/ssexec_tree_resolve.c
@@ -133,7 +133,7 @@ int ssexec_tree_resolve(int argc, char const *const *argv, ssexec_t *info)
             log_dieusys(LOG_EXIT_SYS, "find tree: ", treename) ;
     }
 
-    if (!resolve_read_g(wres, info->base.s, treename))
+    if (resolve_read_g(wres, info->base.s, treename)  <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file") ;
 
     info_field_align(tree_buf, fields, field_suffix,MAXOPTS) ;
diff --git a/src/lib66/exec/ssexec_tree_signal.c b/src/lib66/exec/ssexec_tree_signal.c
index 1be0f226..da2e0854 100644
--- a/src/lib66/exec/ssexec_tree_signal.c
+++ b/src/lib66/exec/ssexec_tree_signal.c
@@ -184,6 +184,7 @@ static void all_redir_fd(void)
 
 void tree_resolve_array_free(resolve_tree_t *ares, unsigned int areslen)
 {
+    log_flow() ;
 
     unsigned int pos = 0 ;
     for (; pos < areslen ; pos++)
@@ -922,7 +923,7 @@ int ssexec_tree_signal(int argc, char const *const *argv, ssexec_t *info)
             resolve_tree_t cp = RESOLVE_TREE_ZERO ;
             wres = resolve_set_struct(DATA_TREE, &tres) ;
 
-            if (!resolve_read_g(wres, info->base.s, treename))
+            if (resolve_read_g(wres, info->base.s, treename) <= 0)
                 log_dieu(LOG_EXIT_SYS, "read resolve file of: ", treename, " -- please make a bug report") ;
 
             tree_resolve_copy(&cp, &tres) ;
diff --git a/src/lib66/exec/ssexec_tree_status.c b/src/lib66/exec/ssexec_tree_status.c
index 29cffcfb..072e7419 100644
--- a/src/lib66/exec/ssexec_tree_status.c
+++ b/src/lib66/exec/ssexec_tree_status.c
@@ -138,7 +138,7 @@ static void info_display_allow(char const *field, char const *treename)
     resolve_tree_t tres = RESOLVE_TREE_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
 
-    if (!resolve_read_g(wres, pinfo->base.s, treename))
+    if (resolve_read_g(wres, pinfo->base.s, treename) <= 0)
         log_dieusys(LOG_EXIT_SYS,"read resolve file of tree: ", treename) ;
 
     if (NOFIELD)
@@ -196,7 +196,7 @@ static void info_display_groups(char const *field, char const *treename)
     resolve_tree_t tres = RESOLVE_TREE_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
 
-    if (!resolve_read_g(wres, pinfo->base.s, treename))
+    if (resolve_read_g(wres, pinfo->base.s, treename) <= 0)
         log_dieusys(LOG_EXIT_SYS,"read resolve file of: ", treename) ;
 
     if (NOFIELD)
diff --git a/src/lib66/graph/graph_build_tree.c b/src/lib66/graph/graph_build_tree.c
index 6ea14f4f..8a6bf0d3 100644
--- a/src/lib66/graph/graph_build_tree.c
+++ b/src/lib66/graph/graph_build_tree.c
@@ -44,7 +44,7 @@ void graph_build_tree(graph_t *g, char const *base, resolve_tree_master_enum_t f
 
         char *name = sa.s + pos ;
 
-        if (!resolve_read_g(wres, base, name))
+        if (resolve_read_g(wres, base, name) <= 0)
             log_dieu(LOG_EXIT_SYS, "read resolve file of: ", name) ;
 
         if (!graph_vertex_add(g, name))
diff --git a/src/lib66/info/info_graph_display_service.c b/src/lib66/info/info_graph_display_service.c
index 881fafaa..b81c0340 100644
--- a/src/lib66/info/info_graph_display_service.c
+++ b/src/lib66/info/info_graph_display_service.c
@@ -50,7 +50,7 @@ int info_graph_display_service(char const *name)
     if (!set_ownersysdir_stack(base, getuid()))
         log_warn_return(LOG_EXIT_ZERO, "set owner directory") ;
 
-    if (!resolve_read_g(wres, base, name)) {
+    if (resolve_read_g(wres, base, name) <= 0) {
         log_warnu("read resolve file of: ",name) ;
         goto freed ;
     }
diff --git a/src/lib66/info/info_graph_display_tree.c b/src/lib66/info/info_graph_display_tree.c
index 7cd48eb8..b71eab17 100644
--- a/src/lib66/info/info_graph_display_tree.c
+++ b/src/lib66/info/info_graph_display_tree.c
@@ -54,7 +54,7 @@ int info_graph_display_tree(char const *name)
         goto freed ;
     }
 
-    if (!resolve_read_g(wres, sa.s, name))
+    if (resolve_read_g(wres, sa.s, name) <= 0)
         goto freed ;
 
     sa.len = 0 ;
diff --git a/src/lib66/resolve/resolve_get_field_tosa_g.c b/src/lib66/resolve/resolve_get_field_tosa_g.c
index 2bd7413f..b4ce3810 100644
--- a/src/lib66/resolve/resolve_get_field_tosa_g.c
+++ b/src/lib66/resolve/resolve_get_field_tosa_g.c
@@ -54,7 +54,7 @@ int resolve_get_field_tosa_g(stralloc *sa, char const *base, char const *name, u
 
     } else return 0 ;
 
-    if (!resolve_read_g(wres, base, name))
+    if (resolve_read_g(wres, base, name) <= 0)
         goto err ;
 
     if (!resolve_get_field_tosa(sa, wres, field))
diff --git a/src/lib66/resolve/resolve_modify_field_g.c b/src/lib66/resolve/resolve_modify_field_g.c
index e882bfdf..9792f7b5 100644
--- a/src/lib66/resolve/resolve_modify_field_g.c
+++ b/src/lib66/resolve/resolve_modify_field_g.c
@@ -22,7 +22,7 @@ int resolve_modify_field_g(resolve_wrapper_t_ref wres, char const *base, char co
 {
     log_flow() ;
 
-    if (!resolve_read_g(wres, base, name))
+    if (resolve_read_g(wres, base, name) <= 0)
         return 0 ;
 
     if (!resolve_modify_field(wres, field, value))
diff --git a/src/lib66/sanitize/sanitize_source.c b/src/lib66/sanitize/sanitize_source.c
index ead5f1c0..f678f0ed 100644
--- a/src/lib66/sanitize/sanitize_source.c
+++ b/src/lib66/sanitize/sanitize_source.c
@@ -67,7 +67,7 @@ void sanitize_source(char const *name, ssexec_t *info)
         /** We can come from ssexec_reconfigure, in
          * this case we need to use the tree defined previously */
         r = resolve_read_g(wres, info->base.s, name) ;
-        if (r < 0)
+        if (r <= 0)
             log_dieu(LOG_EXIT_SYS, "read resolve file: ", name) ;
 
         if (!state_read(&sta, &res))
diff --git a/src/lib66/service/service_graph_collect.c b/src/lib66/service/service_graph_collect.c
index d249b667..97e67c5a 100644
--- a/src/lib66/service/service_graph_collect.c
+++ b/src/lib66/service/service_graph_collect.c
@@ -83,7 +83,7 @@ void service_graph_collect(graph_t *g, char const *alist, size_t alen, resolve_s
             } else
                 continue ;
 
-            if (!resolve_read_g(wres, info->base.s, name))
+            if (resolve_read_g(wres, info->base.s, name) <= 0)
                 log_dieu(LOG_EXIT_SYS, "read resolve file of: ", name, " -- please make a bug report") ;
 
             if (FLAGS_ISSET(flag, STATE_FLAGS_ISSUPERVISED)) {
diff --git a/src/lib66/tree/tree_find_current.c b/src/lib66/tree/tree_find_current.c
index f2ef73d9..8ff8d3b5 100644
--- a/src/lib66/tree/tree_find_current.c
+++ b/src/lib66/tree/tree_find_current.c
@@ -31,7 +31,7 @@ int tree_find_current(char *treename, char const *base)
     resolve_tree_master_t mres = RESOLVE_TREE_MASTER_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE_MASTER, &mres) ;
 
-    if (!resolve_read_g(wres, base, SS_MASTER + 1))
+    if (resolve_read_g(wres, base, SS_MASTER + 1) <= 0)
         goto err ;
 
     if (mres.current) {
diff --git a/src/lib66/tree/tree_get_permissions.c b/src/lib66/tree/tree_get_permissions.c
index 96ca2db9..16a8b130 100644
--- a/src/lib66/tree/tree_get_permissions.c
+++ b/src/lib66/tree/tree_get_permissions.c
@@ -37,7 +37,7 @@ int tree_get_permissions(char const *base, char const *treename)
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
     uid_t uid = getuid(), treeuid = -1 ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename) <= 0)
         goto freed ;
 
     if (tres.nallow) {
diff --git a/src/lib66/tree/tree_iscurrent.c b/src/lib66/tree/tree_iscurrent.c
index 22b9ef93..84d71107 100644
--- a/src/lib66/tree/tree_iscurrent.c
+++ b/src/lib66/tree/tree_iscurrent.c
@@ -29,7 +29,7 @@ int tree_iscurrent(char const *base, char const *treename)
     resolve_tree_master_t mres = RESOLVE_TREE_MASTER_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE_MASTER, &mres) ;
 
-    if (!resolve_read_g(wres, base, SS_MASTER + 1))
+    if (resolve_read_g(wres, base, SS_MASTER + 1)  <= 0)
         goto err ;
 
     if (!strcmp(mres.sa.s + mres.current, treename))
diff --git a/src/lib66/tree/tree_isenabled.c b/src/lib66/tree/tree_isenabled.c
index 1edbd99f..00346fc9 100644
--- a/src/lib66/tree/tree_isenabled.c
+++ b/src/lib66/tree/tree_isenabled.c
@@ -32,7 +32,7 @@ int tree_isenabled(char const *base, char const *treename)
     resolve_tree_master_t mres = RESOLVE_TREE_MASTER_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE_MASTER, &mres) ;
 
-    if (!resolve_read_g(wres, base, SS_MASTER + 1))
+    if (resolve_read_g(wres, base, SS_MASTER + 1)  <= 0)
         goto err ;
 
     if (mres.nenabled) {
diff --git a/src/lib66/tree/tree_isinitialized.c b/src/lib66/tree/tree_isinitialized.c
index abbc262a..9e16dc74 100644
--- a/src/lib66/tree/tree_isinitialized.c
+++ b/src/lib66/tree/tree_isinitialized.c
@@ -29,7 +29,7 @@ int tree_isinitialized(char const *base, char const *treename)
     resolve_tree_t tres = RESOLVE_TREE_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename)  <= 0)
         goto err ;
 
     if (tres.init)
diff --git a/src/lib66/tree/tree_issupervised.c b/src/lib66/tree/tree_issupervised.c
index 96786f23..c7c95ff3 100644
--- a/src/lib66/tree/tree_issupervised.c
+++ b/src/lib66/tree/tree_issupervised.c
@@ -29,7 +29,7 @@ int tree_issupervised(char const *base, char const *treename)
     resolve_tree_t tres = RESOLVE_TREE_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename)  <= 0)
         goto err ;
 
     if (tres.supervised)
diff --git a/src/lib66/tree/tree_ongroups.c b/src/lib66/tree/tree_ongroups.c
index c5e385d0..aae0fcb4 100644
--- a/src/lib66/tree/tree_ongroups.c
+++ b/src/lib66/tree/tree_ongroups.c
@@ -34,7 +34,7 @@ int tree_ongroups(char const *base, char const *treename, char const *group)
     resolve_tree_t tres = RESOLVE_TREE_ZERO ;
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename) <= 0)
         goto err ;
 
     if (tres.ngroups) {
diff --git a/src/lib66/tree/tree_service_add.c b/src/lib66/tree/tree_service_add.c
index d7067410..b4f71e3b 100644
--- a/src/lib66/tree/tree_service_add.c
+++ b/src/lib66/tree/tree_service_add.c
@@ -28,7 +28,7 @@ void tree_service_add(char const *base, char const *treename, char const *servic
     resolve_wrapper_t_ref wres = resolve_set_struct(DATA_TREE, &tres) ;
     stralloc sa = STRALLOC_ZERO ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file of tree: ", treename) ;
 
     if (tres.ncontents) {
diff --git a/src/lib66/tree/tree_service_remove.c b/src/lib66/tree/tree_service_remove.c
index 7525b158..14f983e6 100644
--- a/src/lib66/tree/tree_service_remove.c
+++ b/src/lib66/tree/tree_service_remove.c
@@ -31,7 +31,7 @@ void tree_service_remove(char const *base, char const *treename, char const *ser
 
     log_trace("modify field contents of resolve tree file: ", treename) ;
 
-    if (!resolve_read_g(wres, base, treename))
+    if (resolve_read_g(wres, base, treename) <= 0)
         log_dieusys(LOG_EXIT_SYS, "read resolve file of tree: ", treename) ;
 
     if (tres.ncontents) {
-- 
GitLab