Skip to content
Snippets Groups Projects
Commit 5aa4d7fa authored by Eric Vidal's avatar Eric Vidal :speech_balloon:
Browse files

avoid HEAP memory allocation

parent b78825e2
No related branches found
No related tags found
No related merge requests found
...@@ -186,7 +186,6 @@ int ssexec_inresolve(int argc, char const *const *argv, ssexec_t *info) ...@@ -186,7 +186,6 @@ int ssexec_inresolve(int argc, char const *const *argv, ssexec_t *info)
int found = 0, what = 0 ; int found = 0, what = 0 ;
uint8_t master = 0 ; uint8_t master = 0 ;
stralloc sa = STRALLOC_ZERO ;
char const *svname = 0 ; char const *svname = 0 ;
char const *treename = info->treename.s ; char const *treename = info->treename.s ;
char atree[SS_MAX_TREENAME + 1] ; char atree[SS_MAX_TREENAME + 1] ;
...@@ -204,9 +203,6 @@ int ssexec_inresolve(int argc, char const *const *argv, ssexec_t *info) ...@@ -204,9 +203,6 @@ int ssexec_inresolve(int argc, char const *const *argv, ssexec_t *info)
argc--; argc--;
svname = *argv ; svname = *argv ;
if (!set_ownersysdir(&sa, getuid()))
log_dieu(LOG_EXIT_SYS, "set owner directory") ;
if (!what) { if (!what) {
char service_buf[MAXOPTS][INFO_FIELD_MAXLEN] = { char service_buf[MAXOPTS][INFO_FIELD_MAXLEN] = {
...@@ -318,22 +314,21 @@ int ssexec_inresolve(int argc, char const *const *argv, ssexec_t *info) ...@@ -318,22 +314,21 @@ int ssexec_inresolve(int argc, char const *const *argv, ssexec_t *info)
wres = resolve_set_struct(DATA_SERVICE, &res) ; wres = resolve_set_struct(DATA_SERVICE, &res) ;
} }
if (!master) { if (!master) {
found = service_is_g(atree, svname, STATE_FLAGS_ISPARSED) ; found = service_is_g(atree, svname, STATE_FLAGS_ISPARSED) ;
if (found == -1) if (found == -1)
log_dieu(LOG_EXIT_SYS, "get information of service: ", svname, " -- please a bug report") ; log_dieu(LOG_EXIT_SYS, "get information of service: ", svname, " -- please a bug report") ;
else if (!found) else if (!found)
log_die(LOG_EXIT_USER, "unknown service: ", svname) ; log_die(LOG_EXIT_USER, svname, " is not parsed -- try to parse it first") ;
if (!resolve_read_g(wres, sa.s, svname)) if (!resolve_read_g(wres, info->base.s, svname))
log_dieusys(LOG_EXIT_SYS,"read resolve file") ; log_dieusys(LOG_EXIT_SYS,"read resolve file") ;
} else { } else {
char solve[sa.len + SS_SYSTEM_LEN + 1 + strlen(treename) + SS_SVDIRS_LEN + 1] ; char solve[info->base.len + SS_SYSTEM_LEN + 1 + strlen(treename) + SS_SVDIRS_LEN + 1] ;
auto_strings(solve, sa.s, SS_SYSTEM, "/", treename, SS_SVDIRS) ; auto_strings(solve, info->base.s, SS_SYSTEM, "/", treename, SS_SVDIRS) ;
if (!resolve_read(wres, solve, SS_MASTER + 1)) if (!resolve_read(wres, solve, SS_MASTER + 1))
log_dieusys(LOG_EXIT_SYS,"read resolve file") ; log_dieusys(LOG_EXIT_SYS,"read resolve file") ;
...@@ -405,14 +400,14 @@ int ssexec_inresolve(int argc, char const *const *argv, ssexec_t *info) ...@@ -405,14 +400,14 @@ int ssexec_inresolve(int argc, char const *const *argv, ssexec_t *info)
wres = resolve_set_struct(DATA_TREE, &tres) ; wres = resolve_set_struct(DATA_TREE, &tres) ;
} }
found = tree_isvalid(sa.s, svname) ; found = tree_isvalid(info->base.s, svname) ;
if (found < 0) if (found < 0)
log_diesys(LOG_EXIT_SYS, "invalid tree directory") ; log_diesys(LOG_EXIT_SYS, "invalid tree directory") ;
if (!found) if (!found)
log_dieusys(LOG_EXIT_SYS, "find tree: ", svname) ; log_dieusys(LOG_EXIT_SYS, "find tree: ", svname) ;
if (!resolve_read_g(wres, sa.s, svname)) if (!resolve_read_g(wres, info->base.s, svname))
log_dieusys(LOG_EXIT_SYS, "read resolve file") ; log_dieusys(LOG_EXIT_SYS, "read resolve file") ;
info_field_align(tree_buf, fields, field_suffix,MAXOPTS) ; info_field_align(tree_buf, fields, field_suffix,MAXOPTS) ;
...@@ -445,10 +440,7 @@ int ssexec_inresolve(int argc, char const *const *argv, ssexec_t *info) ...@@ -445,10 +440,7 @@ int ssexec_inresolve(int argc, char const *const *argv, ssexec_t *info)
} }
resolve_free(wres) ; resolve_free(wres) ;
} }
stralloc_free(&sa) ;
return 0 ; return 0 ;
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment