Code

Added debian/patches/bts664724-rrdcached-j-segfault.
[pkg-rrdtool.git] / debian / patches / bts664724-rrdcached-j-segfault
1 diff a/src/rrd_daemon.c b/src/rrd_daemon.c
2 --- a/src/rrd_daemon.c
3 +++ b/src/rrd_daemon.c
4 @@ -3090,8 +3090,7 @@ static int read_options (int argc, char **argv) /* {{{ */
5        case 'j':
6        {
7          char journal_dir_actual[PATH_MAX];
8 -        const char *dir;
9 -        dir = journal_dir = strdup(realpath((const char *)optarg, journal_dir_actual));
10 +        const char *dir = (const char *)optarg;
11  
12          status = rrd_mkdir_p(dir, 0777);
13          if (status != 0)
14 @@ -3100,8 +3099,16 @@ static int read_options (int argc, char **argv) /* {{{ */
15                dir, rrd_strerror(errno));
16            return 6;
17          }
18 +        journal_dir = realpath((const char *)dir, journal_dir_actual);
19 +        if (! journal_dir) {
20 +          fprintf(stderr, "Failed to canonicalize journal directory '%s': %s\n",
21 +              dir, rrd_strerror(errno));
22 +          return 6;
23 +        }
24 +
25 +        journal_dir = strdup(journal_dir);
26  
27 -        if (access(dir, R_OK|W_OK|X_OK) != 0)
28 +        if (access(journal_dir, R_OK|W_OK|X_OK) != 0)
29          {
30            fprintf(stderr, "Must specify a writable directory with -j! (%s)\n",
31                    errno ? rrd_strerror(errno) : "");