diff --git a/src/lib66/exec/ssexec_main.c b/src/lib66/exec/ssexec_main.c index e0f118412cc1b99ed433019eead54b740a4740d3..e63ec61d8578cb8a56f6c7d4c4aa9899acbc3246 100644 --- a/src/lib66/exec/ssexec_main.c +++ b/src/lib66/exec/ssexec_main.c @@ -47,6 +47,8 @@ void ssexec_set_info(ssexec_t *info) int r ; info->owner = MYUID ; + info->ownerlen = uid_fmt(info->ownerstr,info->owner) ; + info->ownerstr[info->ownerlen] = 0 ; if (!set_ownersysdir(&info->base,info->owner)) log_dieusys(LOG_EXIT_SYS, "set owner directory") ; @@ -144,13 +146,35 @@ int ssexec_main(int argc, char const *const *argv,char const *const *envp,ssexec case 'v' : if (!uint0_scan(l.arg, &VERBOSITY)) log_usage(info->usage) ; info->opt_verbo = 1 ; break ; - case 'l' : if (!auto_stra(&info->live,l.arg)) log_die_nomem("stralloc") ; - info->opt_live = 1 ; - break ; - case 't' : if(!auto_stra(&info->treename,l.arg)) log_die_nomem("stralloc") ; - info->opt_tree = 1 ; - info->skip_opt_tree = 0 ; - break ; + case 'l' : + + char str[UINT_FMT] ; + str[uint_fmt(str, SS_MAX_PATH)] = 0 ; + + if (strlen(l.arg) > SS_MAX_PATH) + log_die(LOG_EXIT_USER,"live path is too long -- it can not exceed ", str) ; + + if (!auto_stra(&info->live,l.arg)) + log_die_nomem("stralloc") ; + + info->opt_live = 1 ; + break ; + + case 't' : + + char str[UINT_FMT] ; + str[uint_fmt(str, SS_MAX_TREENAME)] = 0 ; + + if (strlen(l.arg) > SS_MAX_TREENAME) + log_die(LOG_EXIT_USER,"tree name is too long -- it can not exceed ", str) ; + + if (!auto_stra(&info->treename,l.arg)) + log_die_nomem("stralloc") ; + + info->opt_tree = 1 ; + info->skip_opt_tree = 0 ; + break ; + case 'T' : if (!uint0_scan(l.arg, &info->timeout)) log_usage(info->usage) ; info->opt_timeout = 1 ; break ;