X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_daemon.c;h=79fbc310e13836c4f9d3268f4290361cc7a6b5e1;hb=454dc9735d59ddbbfd1a658541683017e71c294a;hp=1a20974d2e46c848da9d12580110b7c6dac00627;hpb=154355b6ff56aefb6a1062134aadfa2aaab3a38c;p=rrdtool.git diff --git a/src/rrd_daemon.c b/src/rrd_daemon.c index 1a20974..79fbc31 100644 --- a/src/rrd_daemon.c +++ b/src/rrd_daemon.c @@ -219,9 +219,7 @@ typedef struct { size_t files_num; } journal_set; -/* max length of socket command or response */ -#define CMD_MAX 4096 -#define RBUF_SIZE (CMD_MAX*2) +#define RBUF_SIZE (RRD_CMD_MAX*2) /* * Variables @@ -543,7 +541,7 @@ static int add_to_wbuf(listen_socket_t *sock, char *str, size_t len) /* {{{ */ static int add_response_info(listen_socket_t *sock, char *fmt, ...) /* {{{ */ { va_list argp; - char buffer[CMD_MAX]; + char buffer[RRD_CMD_MAX]; int len; if (JOURNAL_REPLAY(sock)) return 0; @@ -588,7 +586,7 @@ static int send_response (listen_socket_t *sock, response_code rc, char *fmt, ...) /* {{{ */ { va_list argp; - char buffer[CMD_MAX]; + char buffer[RRD_CMD_MAX]; int lines; ssize_t wrote; int rclen, len; @@ -1327,7 +1325,7 @@ static int handle_request_update (HANDLER_PROTO) /* {{{ */ char *file, file_tmp[PATH_MAX]; int values_num = 0; int status; - char orig_buf[CMD_MAX]; + char orig_buf[RRD_CMD_MAX]; cache_item_t *ci; @@ -2204,7 +2202,7 @@ static int handle_request_help (HANDLER_PROTO) /* {{{ */ if (help && (help->syntax || help->help)) { - char tmp[CMD_MAX]; + char tmp[RRD_CMD_MAX]; snprintf(tmp, sizeof(tmp)-1, "Help for %s\n", help->cmd); resp_txt = tmp; @@ -2439,7 +2437,7 @@ static int journal_replay (const char *file) /* {{{ */ int entry_cnt = 0; int fail_cnt = 0; uint64_t line = 0; - char entry[CMD_MAX]; + char entry[RRD_CMD_MAX]; time_t now; if (file == NULL) return 0; @@ -3533,23 +3531,30 @@ static int read_options (int argc, char **argv) /* {{{ */ case 'j': { 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) - { - fprintf(stderr, "Failed to create journal directory '%s': %s\n", - dir, rrd_strerror(errno)); - return 6; - } - - if (access(dir, R_OK|W_OK|X_OK) != 0) - { - fprintf(stderr, "Must specify a writable directory with -j! (%s)\n", - errno ? rrd_strerror(errno) : ""); - return 6; - } + journal_dir = realpath((const char *)optarg, journal_dir_actual); + if (journal_dir) + { + // if we were able to properly resolve the path, lets have a copy + // for use outside this block. + journal_dir = strdup(journal_dir); + status = rrd_mkdir_p(journal_dir, 0777); + if (status != 0) + { + fprintf(stderr, "Failed to create journal directory '%s': %s\n", + journal_dir, rrd_strerror(errno)); + return 6; + } + if (access(journal_dir, R_OK|W_OK|X_OK) != 0) + { + fprintf(stderr, "Must specify a writable directory with -j! (%s)\n", + errno ? rrd_strerror(errno) : ""); + return 6; + } + } else { + fprintf(stderr, "Unable to resolve journal path (%s,%s)\n", optarg, + errno ? rrd_strerror(errno) : ""); + return 6; + } } break;