2004-10-10 Paul Jakma <paul@dishone.st>
* version.h.in: (pid_output*) add const qualifier.
* command.h: Change DEFUN func to take const char *[] rather
than char **, to begin process of fixing compile warnings in lib/.
Nearly all other changes in this commit follow from this change.
* buffer.{c,h}: (buffer_write) pointer-arithmetic is gccism, take
const void * and cast an automatic const char *p to it.
(buffer_putstr) add const
* command.c: (zencrypt) const qualifier
(cmd_execute_command_real) ditto
(cmd_execute_command_strict) ditto
(config_log_file) ditto.
Fix leak of getcwd() returned string.
* memory.{c,h}: Add MTYPE_DISTRIBUTE_IFNAME for struct dist ifname.
* distribute.{c,h}: Update with const qualifier.
(distribute_free) use MTYPE_DISTRIBUTE_IFNAME
(distribute_lookup) Cast to char *, note that it's ok.
(distribute_hash_alloc) use MTYPE_DISTRIBUTE_IFNAME.
(distribute_get) Cast to char *, note that it's ok.
* filter.c: Update with const qualifier.
* if.{c,h}: ditto.
* if_rmap.{c,h}: ditto.
(if_rmap_lookup) Cast to char *, note that it's ok.
(if_rmap_get) ditto.
* log.{c,h}: Update with const qualifier.
* plist.{c,h}: ditto.
* routemap.{c,h}: ditto.
* smux.{c,h}: ditto. Fix some signed/unsigned comparisons.
* sockopt.c: (getsockopt_cmsg_data) add return for error case.
* vty.c: Update with const qualifier.
diff --git a/lib/command.c b/lib/command.c
index 2766a35..168fe56 100644
--- a/lib/command.c
+++ b/lib/command.c
@@ -432,7 +432,7 @@
}
}
-char *zencrypt (char *passwd)
+char *zencrypt (const char *passwd)
{
char salt[6];
struct timeval tv;
@@ -1932,7 +1932,7 @@
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 @@
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 @@
"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]);