Code

fix rrdcached crash as reported in debian bug #663505 -- Witold Baryluk
authoroetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa>
Mon, 12 Mar 2012 10:47:21 +0000 (10:47 +0000)
committeroetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa>
Mon, 12 Mar 2012 10:47:21 +0000 (10:47 +0000)
git-svn-id: svn://svn.oetiker.ch/rrdtool/branches/1.4/program@2285 a5681a0c-68f1-0310-ab6d-d61299d08faa

src/rrd_daemon.c

index 4dfe35c283dc0189459417f66b2dc8bd5f37a4c9..f5ab6bbb6599bae1a564a2efb9842c1285a8d9b0 100644 (file)
@@ -3093,7 +3093,17 @@ static int read_options (int argc, char **argv) /* {{{ */
       {
         char journal_dir_actual[PATH_MAX];
         const char *dir;
-        dir = journal_dir = strdup(realpath((const char *)optarg, journal_dir_actual));
+        if (realpath((const char *)optarg, journal_dir_actual) == NULL)
+        {
+          fprintf(stderr, "Failed to canonicalize the journal directory '%s': %s\n",
+              optarg, rrd_strerror(errno));
+          return 7;
+        }
+        dir = journal_dir = strdup(journal_dir_actual);
+        if (dir == NULL) {
+          fprintf (stderr, "read_options: strdup failed.\n");
+          return (3);
+        }
 
         status = rrd_mkdir_p(dir, 0777);
         if (status != 0)