X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fdaemon%2Fcommon.c;h=2251d2e00b8a36af6ac83009abefc06a427fdc5e;hb=cb8dfc382cc99823e58ca01ee55ea9e5f23bfc42;hp=d5322ed8dbb855495cf185ad4903c0ac3d398fe6;hpb=d927ce451022415b65caa911c69d1e98c4096e8c;p=collectd.git diff --git a/src/daemon/common.c b/src/daemon/common.c index d5322ed8..2251d2e0 100644 --- a/src/daemon/common.c +++ b/src/daemon/common.c @@ -544,9 +544,8 @@ int timeval_cmp(struct timeval tv0, struct timeval tv1, struct timeval *delta) { int check_create_dir(const char *file_orig) { struct stat statbuf; - char file_copy[512]; - char dir[512]; - int dir_len = 512; + char file_copy[PATH_MAX]; + char dir[PATH_MAX]; char *fields[16]; int fields_num; char *ptr; @@ -563,8 +562,10 @@ int check_create_dir(const char *file_orig) { if ((len = strlen(file_orig)) < 1) return -1; - else if (len >= sizeof(file_copy)) + else if (len >= sizeof(file_copy)) { + ERROR("check_create_dir: name (%s) is too long.", file_orig); return -1; + } /* * If `file_orig' ends in a slash the last component is a directory, @@ -615,8 +616,9 @@ int check_create_dir(const char *file_orig) { * Join the components together again */ dir[0] = '/'; - if (strjoin(dir + path_is_absolute, (size_t)(dir_len - path_is_absolute), - fields, (size_t)(i + 1), "/") < 0) { + if (strjoin(dir + path_is_absolute, + (size_t)(sizeof(dir) - path_is_absolute), fields, + (size_t)(i + 1), "/") < 0) { ERROR("strjoin failed: `%s', component #%i", file_orig, i); return -1; } @@ -633,14 +635,10 @@ int check_create_dir(const char *file_orig) { if (EEXIST == errno) continue; - char errbuf[1024]; - ERROR("check_create_dir: mkdir (%s): %s", dir, - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("check_create_dir: mkdir (%s): %s", dir, STRERRNO); return -1; } else { - char errbuf[1024]; - ERROR("check_create_dir: stat (%s): %s", dir, - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("check_create_dir: stat (%s): %s", dir, STRERRNO); return -1; } } else if (!S_ISDIR(statbuf.st_mode)) { @@ -861,7 +859,7 @@ int format_name(char *ret, int ret_len, const char *hostname, int format_values(char *ret, size_t ret_len, /* {{{ */ const data_set_t *ds, const value_list_t *vl, - _Bool store_rates) { + bool store_rates) { size_t offset = 0; int status; gauge_t *rates = NULL; @@ -897,7 +895,7 @@ int format_values(char *ret, size_t ret_len, /* {{{ */ } BUFFER_ADD(":" GAUGE_FORMAT, rates[i]); } else if (ds->ds[i].type == DS_TYPE_COUNTER) - BUFFER_ADD(":%llu", vl->values[i].counter); + BUFFER_ADD(":%" PRIu64, (uint64_t)vl->values[i].counter); else if (ds->ds[i].type == DS_TYPE_DERIVE) BUFFER_ADD(":%" PRIi64, vl->values[i].derive); else if (ds->ds[i].type == DS_TYPE_ABSOLUTE) @@ -1214,9 +1212,7 @@ int walk_directory(const char *dir, dirwalk_callback_f callback, failure = 0; if ((dh = opendir(dir)) == NULL) { - char errbuf[1024]; - ERROR("walk_directory: Cannot open '%s': %s", dir, - sstrerror(errno, errbuf, sizeof(errbuf))); + ERROR("walk_directory: Cannot open '%s': %s", dir, STRERRNO); return -1; }