From: oetiker Date: Mon, 26 Apr 2010 12:38:11 +0000 (+0000) Subject: When specifying a relative path (-j option) rrd_cached would segfault when X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=911b3f4a20003fe8c2189a29430bf54fd630259f;p=rrdtool.git When specifying a relative path (-j option) rrd_cached would segfault when trying to read past journals (journal_init function). Added an extra check to journal_init before reading the directory, and, when parsing the command line options, to expand the relative path to an absolute path. -- Adrian-Ioan Vasile yoyo@opennet.ro git-svn-id: svn://svn.oetiker.ch/rrdtool/branches/1.4/program@2072 a5681a0c-68f1-0310-ab6d-d61299d08faa --- diff --git a/src/rrd_daemon.c b/src/rrd_daemon.c index 58b0704..3697a4a 100644 --- a/src/rrd_daemon.c +++ b/src/rrd_daemon.c @@ -2111,6 +2111,10 @@ static void journal_init(void) /* {{{ */ } dir = opendir(journal_dir); + if (!dir) { + RRDD_LOG(LOG_CRIT, "journal_init: opendir(%s) failed\n", journal_dir); + return; + } while ((dent = readdir(dir)) != NULL) { /* looks like a journal file? */ @@ -3062,7 +3066,9 @@ static int read_options (int argc, char **argv) /* {{{ */ case 'j': { - const char *dir = journal_dir = strdup(optarg); + char journal_dir_actual[PATH_MAX]; + const char *dir; + dir = journal_dir = strdup(realpath((const char *)optarg, journal_dir_actual)); status = rrd_mkdir_p(dir, 0777); if (status != 0)