X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Flibcollectdclient%2Fnetwork_parse.c;h=ce1bebccef90fee8a7e5eeac6d66abcf658cd489;hb=c3c9a56e37bac5d5be3b6beb0b33f89ea941295e;hp=4083e1ec8ff5017da20b5afcfd8bbed363535d48;hpb=5dbb7471b0a7ca7506f56f4c6dbaf58e790c6b7c;p=collectd.git diff --git a/src/libcollectdclient/network_parse.c b/src/libcollectdclient/network_parse.c index 4083e1ec..ce1bebcc 100644 --- a/src/libcollectdclient/network_parse.c +++ b/src/libcollectdclient/network_parse.c @@ -31,6 +31,7 @@ #include "collectd/lcc_features.h" #include "collectd/network_parse.h" +#include "globals.h" #include #include @@ -43,6 +44,8 @@ #include #elif HAVE_SYS_ENDIAN_H #include +#else /* fallback */ +#include "stdendian.h" #endif #if HAVE_GCRYPT_H @@ -302,8 +305,6 @@ static int parse_values(void *payload, size_t payload_size, state->values = calloc(sizeof(*state->values), state->values_len); state->values_types = calloc(sizeof(*state->values_types), state->values_len); if ((state->values == NULL) || (state->values_types == NULL)) { - free(state->values); - free(state->values_types); return ENOMEM; } @@ -434,7 +435,7 @@ static int decrypt_aes256(buffer_t *b, void *iv, size_t iv_size, uint8_t pwhash[32] = {0}; gcry_md_hash_buffer(GCRY_MD_SHA256, pwhash, password, strlen(password)); - fprintf(stderr, "sizeof(iv) = %zu\n", sizeof(iv)); + fprintf(stderr, "sizeof(iv) = %" PRIsz "\n", sizeof(iv)); if (gcry_cipher_setkey(cipher, pwhash, sizeof(pwhash)) || gcry_cipher_setiv(cipher, iv, iv_size) || gcry_cipher_decrypt(cipher, b->data, b->len, /* in = */ NULL, @@ -519,7 +520,7 @@ static int network_parse(void *data, size_t data_size, lcc_security_level_t sl, if ((sz < 5) || (((size_t)sz - 4) > b->len)) { DEBUG("lcc_network_parse(): invalid 'sz' field: sz = %" PRIu16 - ", b->len = %zu\n", + ", b->len = %" PRIsz "\n", sz, b->len); return EINVAL; } @@ -556,6 +557,8 @@ static int network_parse(void *data, size_t data_size, lcc_security_level_t sl, case TYPE_VALUES: { lcc_value_list_t vl = state; if (parse_values(payload, sizeof(payload), &vl)) { + free(vl.values); + free(vl.values_types); DEBUG("lcc_network_parse(): parse_values failed.\n"); return EINVAL; }