From 657be653400bdb9fc8ab13037e51ecfbc1af9d40 Mon Sep 17 00:00:00 2001 From: Roy Marples Date: Fri, 6 Apr 2007 01:04:07 +0000 Subject: Misc fixes, plugged a memory leak in runscript.c and use va_copy to avoid nasty segfaults --- src/rc.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/rc.c') diff --git a/src/rc.c b/src/rc.c index 12851c50..9b7d0edb 100644 --- a/src/rc.c +++ b/src/rc.c @@ -1013,19 +1013,22 @@ int main (int argc, char **argv) /* Unless we would use a different config file */ if (found) { + int len; if (! newlevel) continue; - - tmp = rc_xmalloc (strlen (service) + strlen (runlevel) + 2); - sprintf (tmp, "%s.%s", service, runlevel); + + len = strlen (service) + strlen (runlevel) + 2; + tmp = rc_xmalloc (sizeof (char *) * len); + snprintf (tmp, len, "%s.%s", service, runlevel); conf = rc_strcatpaths (RC_CONFDIR, tmp, (char *) NULL); found = rc_exists (conf); CHAR_FREE (conf); CHAR_FREE (tmp); if (! found) { - tmp = rc_xmalloc (strlen (service) + strlen (newlevel) + 2); - sprintf (tmp, "%s.%s", service, newlevel); + len = strlen (service) + strlen (newlevel) + 2; + tmp = rc_xmalloc (sizeof (char *) * len); + snprintf (tmp, len, "%s.%s", service, newlevel); conf = rc_strcatpaths (RC_CONFDIR, tmp, (char *) NULL); found = rc_exists (conf); CHAR_FREE (conf); -- cgit v1.2.3