--- util.c.orig +++ util.c @@ -163,6 +163,7 @@ bool opt_filter(char **vec, const char opt) bool check_command( char *cl, ShellOptions_t *opts, char *cmd, int cmdflag ) { + char *cmd_dup; char *prog; /* basename of cmd */ char *tmp = cl; bool need_free = FALSE; @@ -186,11 +187,13 @@ bool check_command( char *cl, ShellOptions_t *opts, char *cmd, int cmdflag ) } /* compare tmp to cmd and prog for match */ - prog = basename(cmd); + cmd_dup = strdup(cmd); + prog = basename(cmd_dup); if ( !(strcmp(tmp, cmd)) || !(strcmp(tmp, prog))){ log_msg("cmd '%s' approved", prog); rc = TRUE; } + free(cmd_dup); } if (need_free) free(tmp); return rc;