diff options
Diffstat (limited to 'lib/command.c')
| -rw-r--r-- | lib/command.c | 36 | 
1 files changed, 26 insertions, 10 deletions
| diff --git a/lib/command.c b/lib/command.c index 2766a357..168fe563 100644 --- a/lib/command.c +++ b/lib/command.c @@ -432,7 +432,7 @@ to64(char *s, long v, int n)      }  } -char *zencrypt (char *passwd) +char *zencrypt (const char *passwd)  {    char salt[6];    struct timeval tv; @@ -1932,7 +1932,7 @@ cmd_execute_command_real (vector vline, struct vty *vty, struct cmd_element **cm    struct cmd_element *matched_element;    unsigned int matched_count, incomplete_count;    int argc; -  char *argv[CMD_ARGC_MAX]; +  const char *argv[CMD_ARGC_MAX];    enum match_type match = 0;    int varflag;    char *command; @@ -2111,7 +2111,7 @@ cmd_execute_command_strict (vector vline, struct vty *vty,    struct cmd_element *matched_element;    unsigned int matched_count, incomplete_count;    int argc; -  char *argv[CMD_ARGC_MAX]; +  const char *argv[CMD_ARGC_MAX];    int varflag;    enum match_type match = 0;    char *command; @@ -2983,22 +2983,38 @@ DEFUN (config_log_file,         "Logging filename\n")  {    int ret; -  char *cwd; -  char *fullpath; - +  char *p = NULL; +  const char *fullpath; +      /* Path detection. */    if (! IS_DIRECTORY_SEP (*argv[0]))      { -      cwd = getcwd (NULL, MAXPATHLEN); -      fullpath = XMALLOC (MTYPE_TMP, -			  strlen (cwd) + strlen (argv[0]) + 2); -      sprintf (fullpath, "%s/%s", cwd, argv[0]); +      char cwd[MAXPATHLEN+1]; +      cwd[MAXPATHLEN] = '\0'; +       +      if (getcwd (cwd, MAXPATHLEN) == NULL) +        { +          zlog_err ("config_log_file: Unable to alloc mem!"); +          return CMD_WARNING; +        } +       +      if ( (p = XMALLOC (MTYPE_TMP, strlen (cwd) + strlen (argv[0]) + 2)) +          == NULL) +        { +          zlog_err ("config_log_file: Unable to alloc mem!"); +          return CMD_WARNING; +        } +      sprintf (p, "%s/%s", cwd, argv[0]); +      fullpath = p;      }    else      fullpath = argv[0];    ret = zlog_set_file (NULL, ZLOG_FILE, fullpath); +  if (p) +    XFREE (MTYPE_TMP, p); +    if (!ret)      {        vty_out (vty, "can't open logfile %s\n", argv[0]); | 
