From: Costa Tsaousis Date: Wed, 15 Jun 2016 21:22:56 +0000 (+0300) Subject: Merge pull request #555 from paulfantom/master X-Git-Tag: v1.3.0~131 X-Git-Url: https://arthur.barton.de/gitweb/?a=commitdiff_plain;h=d67ad24f5d3bad343fe1e40ce2045043cb38c316;hp=1695134ed021019b7db9bf23fe80047f58a4c6ac;p=netdata.git Merge pull request #555 from paulfantom/master Python plugin for MySQL --- diff --git a/README.md b/README.md index 5b6aa202..049a133d 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,12 @@ [![Build Status](https://travis-ci.org/firehol/netdata.svg?branch=master)](https://travis-ci.org/firehol/netdata) -[![User Base](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=persons&label=user%20base&units=null&value_color=blue&precision=0&v40)](https://registry.my-netdata.io/#netdata_registry) -[![Monitored Servers](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=machines&label=servers%20monitored&units=null&value_color=orange&precision=0&v40)](https://registry.my-netdata.io/#netdata_registry) -[![Sessions Served](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_sessions&label=sessions%20served&units=null&value_color=yellowgreen&precision=0&v40)](https://registry.my-netdata.io/#netdata_registry) - -[![New Users Today](http://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=persons&after=-86400&options=unaligned&group=incremental-sum&label=new%20users%20today&units=null&value_color=blue&precision=0&v40)](https://registry.my-netdata.io/#netdata_registry) -[![New Machines Today](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=machines&group=incremental-sum&after=-86400&options=unaligned&label=servers%20added%20today&units=null&value_color=orange&precision=0&v40)](https://registry.my-netdata.io/#netdata_registry) -[![Sessions Today](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_sessions&after=-86400&group=incremental-sum&options=unaligned&label=sessions%20served%20today&units=null&value_color=yellowgreen&precision=0&v40)](https://registry.my-netdata.io/#netdata_registry) +Coverity Scan Build Status +[![User Base](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=persons&label=user%20base&units=null&value_color=blue&precision=0&v41)](https://registry.my-netdata.io/#netdata_registry) +[![Monitored Servers](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=machines&label=servers%20monitored&units=null&value_color=orange&precision=0&v41)](https://registry.my-netdata.io/#netdata_registry) +[![Sessions Served](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_sessions&label=sessions%20served&units=null&value_color=yellowgreen&precision=0&v41)](https://registry.my-netdata.io/#netdata_registry) + +[![New Users Today](http://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=persons&after=-86400&options=unaligned&group=incremental-sum&label=new%20users%20today&units=null&value_color=blue&precision=0&v41)](https://registry.my-netdata.io/#netdata_registry) +[![New Machines Today](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_entries&dimensions=machines&group=incremental-sum&after=-86400&options=unaligned&label=servers%20added%20today&units=null&value_color=orange&precision=0&v41)](https://registry.my-netdata.io/#netdata_registry) +[![Sessions Today](https://registry.my-netdata.io/api/v1/badge.svg?chart=netdata.registry_sessions&after=-86400&group=incremental-sum&options=unaligned&label=sessions%20served%20today&units=null&value_color=yellowgreen&precision=0&v41)](https://registry.my-netdata.io/#netdata_registry) # netdata diff --git a/src/common.c b/src/common.c index 195bfc84..266e5ac1 100644 --- a/src/common.c +++ b/src/common.c @@ -851,6 +851,8 @@ int snprintfz(char *dst, size_t n, const char *fmt, ...) { va_list args; va_start(args, fmt); - return vsnprintfz(dst, n, fmt, args); + int ret = vsnprintfz(dst, n, fmt, args); va_end(args); + + return ret; } diff --git a/src/daemon.c b/src/daemon.c index 82b76329..05a77c7c 100644 --- a/src/daemon.c +++ b/src/daemon.c @@ -307,7 +307,7 @@ int become_daemon(int dont_fork, int close_all_files, const char *user, const ch } if(user && *user) { - if(become_user(user, (*access_fd)?*access_fd:-1, output_fd, error_fd, pidfd) != 0) { + if(become_user(user, (access_fd)?*access_fd:-1, output_fd, error_fd, pidfd) != 0) { error("Cannot become user '%s'. Continuing as we are.", user); } else info("Successfully became user '%s'.", user); diff --git a/src/dictionary.c b/src/dictionary.c index 8dbbc64c..2b5df3a9 100644 --- a/src/dictionary.c +++ b/src/dictionary.c @@ -211,14 +211,16 @@ void *dictionary_set(DICTIONARY *dict, const char *name, void *value, size_t val else { debug(D_REGISTRY, "Dictionary: cloning value to '%s'", name); - void *value = malloc(value_len), + // copy the new value without breaking + // any other thread accessing the same entry + void *new = malloc(value_len), *old = nv->value; - if(unlikely(!nv->value)) + if(unlikely(!new)) fatal("Cannot allocate value of size %zu", value_len); - memcpy(value, value, value_len); - nv->value = value; + memcpy(new, value, value_len); + nv->value = new; debug(D_REGISTRY, "Dictionary: freeing old value of '%s'", name); free(old); @@ -289,7 +291,7 @@ static int dictionary_walker(avl *a, int (*callback)(void *entry, void *data), v total += ret; if(a->left) { - dictionary_walker(a->left, callback, data); + ret = dictionary_walker(a->left, callback, data); if (ret < 0) return ret; total += ret; } diff --git a/src/procfile.c b/src/procfile.c index 291f1451..59f75c1e 100644 --- a/src/procfile.c +++ b/src/procfile.c @@ -170,7 +170,7 @@ procfile *procfile_parser(procfile *ff) { while(likely(s < e)) { // we are not at the end - switch(ff->separators[(int)(*s)]) { + switch(ff->separators[(uint8_t)(*s)]) { case PF_CHAR_IS_OPEN: if(s == t) { opened++; diff --git a/src/registry.c b/src/registry.c index 60a9ced7..203b846e 100644 --- a/src/registry.c +++ b/src/registry.c @@ -819,6 +819,8 @@ int registry_log_load(void) { break; } } + + fclose(fp); } // open the log again diff --git a/src/rrd2json.c b/src/rrd2json.c index 9639247e..7c160a9a 100644 --- a/src/rrd2json.c +++ b/src/rrd2json.c @@ -628,8 +628,7 @@ void rrdr_json_wrapper_begin(RRDR *r, BUFFER *wb, uint32_t format, uint32_t opti void rrdr_json_wrapper_end(RRDR *r, BUFFER *wb, uint32_t format, uint32_t options, int string_value) { - if(r) {;} - if(format) {;} + (void)format; char kq[2] = "", // key quote sq[2] = ""; // string quote diff --git a/src/web_buffer.c b/src/web_buffer.c index 6d0ccf0f..ab0381b8 100644 --- a/src/web_buffer.c +++ b/src/web_buffer.c @@ -314,7 +314,7 @@ void buffer_free(BUFFER *b) debug(D_WEB_BUFFER, "Freeing web buffer of size %zu.", b->size); - if(b->buffer) free(b->buffer); + free(b->buffer); free(b); } diff --git a/src/web_client.c b/src/web_client.c index dbde125e..51f3f508 100644 --- a/src/web_client.c +++ b/src/web_client.c @@ -121,7 +121,7 @@ struct web_client *web_client_create(int listener) case AF_INET6: if(strncmp(w->client_ip, "::ffff:", 7) == 0) { - strcpy(w->client_ip, &w->client_ip[7]); + memmove(w->client_ip, &w->client_ip[7], strlen(&w->client_ip[7]) + 1); debug(D_WEB_CLIENT_ACCESS, "%llu: New IPv4 web client from %s port %s on socket %d.", w->id, w->client_ip, w->client_port, w->ifd); } else @@ -778,6 +778,9 @@ int web_client_api_v1_badge(struct web_client *w, char *url) { int points = (points_str && *points_str )?atoi(points_str):1; int precision = (precision_str && *precision_str)?atoi(precision_str):-1; + if(!multiply) multiply = 1; + if(!divide) divide = 1; + int refresh = 0; if(refresh_str && *refresh_str) { if(!strcmp(refresh_str, "auto")) { @@ -1316,9 +1319,10 @@ int web_client_api_old_data_request(struct web_client *w, char *url, int datasou // get the name of the data to show char *tok = mystrsep(&url, "/"); + if(!tok) tok = ""; // do we have such a data set? - if(tok && *tok) { + if(*tok) { debug(D_WEB_CLIENT, "%llu: Searching for RRD data with name '%s'.", w->id, tok); st = rrdset_find_byname(tok); if(!st) st = rrdset_find(tok); diff --git a/src/web_server.c b/src/web_server.c index e349469f..c2a11b1c 100644 --- a/src/web_server.c +++ b/src/web_server.c @@ -111,7 +111,8 @@ int create_listen_socket4(const char *ip, int port, int listen_backlog) } /* avoid "address already in use" */ - setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void*)&sockopt, sizeof(sockopt)); + if(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void*)&sockopt, sizeof(sockopt)) != 0) + error("Cannot set SO_REUSEADDR on port's %d socket.", port); struct sockaddr_in name; memset(&name, 0, sizeof(struct sockaddr_in)); @@ -162,7 +163,8 @@ int create_listen_socket6(const char *ip, int port, int listen_backlog) } /* avoid "address already in use" */ - setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void*)&sockopt, sizeof(sockopt)); + if(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void*)&sockopt, sizeof(sockopt)) != 0) + error("Cannot set SO_REUSEADDR on port's %d socket.", port); struct sockaddr_in6 name; memset(&name, 0, sizeof(struct sockaddr_in6));