From 01a8bbfb74277d3dd7f1c0e24f7ed61554658fd6 Mon Sep 17 00:00:00 2001 From: Carlo von lynX Date: Thu, 28 Jul 2016 23:36:38 +0000 Subject: [PATCH] fixed use after free and several printf warnings --- src/multicast/multicast_api.c | 6 ++++-- src/psyc/gnunet-service-psyc.c | 12 ++++++++++-- src/psyc/test_psyc.c | 18 +++++++++--------- src/psycstore/test_psycstore.c | 24 ++++++++++++------------ 4 files changed, 35 insertions(+), 25 deletions(-) diff --git a/src/multicast/multicast_api.c b/src/multicast/multicast_api.c index 75b2d8852..f5c8c3d34 100644 --- a/src/multicast/multicast_api.c +++ b/src/multicast/multicast_api.c @@ -1124,7 +1124,8 @@ GNUNET_MULTICAST_member_replay_fragment (struct GNUNET_MULTICAST_Member *mem, uint64_t flags) { member_replay_request (mem, fragment_id, 0, 0, flags); - // FIXME: return + // FIXME: return something useful + return NULL; } @@ -1153,7 +1154,8 @@ GNUNET_MULTICAST_member_replay_message (struct GNUNET_MULTICAST_Member *mem, uint64_t flags) { member_replay_request (mem, 0, message_id, fragment_offset, flags); - // FIXME: return + // FIXME: return something useful + return NULL; } diff --git a/src/psyc/gnunet-service-psyc.c b/src/psyc/gnunet-service-psyc.c index 792164b95..9106e8731 100644 --- a/src/psyc/gnunet-service-psyc.c +++ b/src/psyc/gnunet-service-psyc.c @@ -856,18 +856,23 @@ store_recv_fragment_replay_result (void *cls, int64_t result, case GNUNET_NO: GNUNET_MULTICAST_replay_response (rh, NULL, GNUNET_MULTICAST_REC_NOT_FOUND); - break; + return; case GNUNET_PSYCSTORE_MEMBERSHIP_TEST_FAILED: GNUNET_MULTICAST_replay_response (rh, NULL, GNUNET_MULTICAST_REC_ACCESS_DENIED); - break; + return; case GNUNET_SYSERR: GNUNET_MULTICAST_replay_response (rh, NULL, GNUNET_MULTICAST_REC_INTERNAL_ERROR); return; } + /* GNUNET_MULTICAST_replay_response frees 'rh' when passed + * an error code, so it must be ensured no further processing + * is attempted on 'rh'. Maybe this should be refactored as + * it doesn't look very intuitive. --lynX + */ GNUNET_MULTICAST_replay_response_end (rh); } @@ -2269,6 +2274,9 @@ client_recv_psyc_message (void *cls, struct GNUNET_SERVER_Client *client, uint16_t size = ntohs (msg->size); if (GNUNET_MULTICAST_FRAGMENT_MAX_PAYLOAD < size - sizeof (*msg)) { + /* Coverity says this printf has incompatible args + * but I don't see anything wrong with it.. FIXME + */ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "%p Message payload too large: %u < %u.\n", chn, diff --git a/src/psyc/test_psyc.c b/src/psyc/test_psyc.c index 9797a96b5..329ad5b25 100644 --- a/src/psyc/test_psyc.c +++ b/src/psyc/test_psyc.c @@ -350,7 +350,7 @@ slave_state_get_prefix_result (void *cls, int64_t result, const void *err_msg, uint16_t err_msg_size) { GNUNET_log (GNUNET_ERROR_TYPE_WARNING, - "slave_state_get_prefix:\t%" PRId64 " (%.s)\n", + "slave_state_get_prefix:\t%" PRId64 " (%.*s)\n", result, (int) err_msg_size, (const char *) err_msg); @@ -376,7 +376,7 @@ master_state_get_prefix_result (void *cls, int64_t result, const void *err_msg, uint16_t err_msg_size) { GNUNET_log (GNUNET_ERROR_TYPE_WARNING, - "master_state_get_prefix:\t%" PRId64 " (%s)\n", result, err_msg); + "master_state_get_prefix:\t%" PRId64 " (%s)\n", result, (char *) err_msg); // FIXME: GNUNET_assert (2 == result); slave_state_get_prefix (); } @@ -400,7 +400,7 @@ slave_state_get_result (void *cls, int64_t result, { GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "slave_state_get:\t%" PRId64 " (%.*s)\n", - result, err_msg_size, err_msg); + result, err_msg_size, (char *) err_msg); // FIXME: GNUNET_assert (2 == result); master_state_get_prefix (); } @@ -424,7 +424,7 @@ master_state_get_result (void *cls, int64_t result, { GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "master_state_get:\t%" PRId64 " (%.*s)\n", - result, err_msg_size, err_msg); + result, err_msg_size, (char *) err_msg); // FIXME: GNUNET_assert (1 == result); slave_state_get (); } @@ -538,7 +538,7 @@ master_history_replay_latest_result (void *cls, int64_t result, { GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "master_history_replay_latest:\t%" PRId64 " (%.*s)\n", - result, err_msg_size, err_msg); + result, err_msg_size, (char *) err_msg); GNUNET_assert (9 == result); slave_history_replay_latest (); @@ -619,7 +619,7 @@ tmit_notify_mod (void *cls, uint16_t *data_size, void *data, uint8_t *oper, { struct TransmitClosure *tmit = cls; GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Test #%d: Transmit notify modifier: %lu bytes available, " + "Test #%d: Transmit notify modifier: %u bytes available, " "%u modifiers left to process.\n", test, *data_size, GNUNET_PSYC_env_get_count (tmit->env)); @@ -723,7 +723,7 @@ slave_remove_cb (void *cls, int64_t result, { GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "slave_remove:\t%" PRId64 " (%.*s)\n", - result, err_msg_size, err_msg); + result, err_msg_size, (char *) err_msg); slave_transmit (); } @@ -745,7 +745,7 @@ slave_add_cb (void *cls, int64_t result, { GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "slave_add:\t%" PRId64 " (%.*s)\n", - result, err_msg_size, err_msg); + result, err_msg_size, (char *) err_msg); slave_remove (); } @@ -837,7 +837,7 @@ static void slave_join (int t) { test = t; - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Test #%d: Joining slave.\n"); + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Test #%d: Joining slave.\n", t); struct GNUNET_PeerIdentity origin = this_peer; struct GNUNET_PSYC_Environment *env = GNUNET_PSYC_env_create (); diff --git a/src/psycstore/test_psycstore.c b/src/psycstore/test_psycstore.c index f9a7ce9ca..6741858ee 100644 --- a/src/psycstore/test_psycstore.c +++ b/src/psycstore/test_psycstore.c @@ -195,7 +195,7 @@ state_result (void *cls, { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, " variable %s differs\nReceived: %.*s\nExpected: %.*s\n", - name, value_size, value, val_size, val); + name, value_size, (char*) value, val_size, (char*) val); GNUNET_assert (0); return GNUNET_SYSERR; } @@ -208,7 +208,7 @@ state_get_prefix_result (void *cls, int64_t result, { struct StateClosure *scls = cls; op = NULL; - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_get_prefix_result:\t%d\n", result); + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_get_prefix_result:\t%ld\n", (long int) result); GNUNET_assert (GNUNET_OK == result && 2 == scls->n); op = GNUNET_PSYCSTORE_state_reset (h, &channel_pub_key, @@ -221,7 +221,7 @@ state_get_result (void *cls, int64_t result, const char *err_msg, uint16_t err_msg_size) { op = NULL; - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_get_result:\t%d\n", result); + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_get_result:\t%ld\n", (long int) result); GNUNET_assert (GNUNET_OK == result); scls.n = 0; @@ -274,7 +274,7 @@ state_modify_result (void *cls, int64_t result, const char *err_msg, uint16_t err_msg_size) { op = NULL; - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_modify_result:\t%d\n", result); + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_modify_result:\t%ld\n", (long int) result); GNUNET_assert (GNUNET_OK == result); op = GNUNET_PSYCSTORE_counters_get (h, &channel_pub_key, @@ -288,7 +288,7 @@ state_sync_result (void *cls, int64_t result, { struct FragmentClosure *fcls = cls; op = NULL; - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_sync_result:\t%d\n", result); + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "state_sync_result:\t%ld\n", (long int) result); GNUNET_assert (GNUNET_OK == result); op = GNUNET_PSYCSTORE_state_modify (h, &channel_pub_key, @@ -332,7 +332,7 @@ message_get_latest_result (void *cls, int64_t result, { struct FragmentClosure *fcls = cls; op = NULL; - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get_latest:\t%d\n", result); + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get_latest:\t%ld\n", (long int) result); GNUNET_assert (0 < result && fcls->n == fcls->n_expected); modifiers[0] = (struct GNUNET_PSYC_Modifier) { @@ -361,7 +361,7 @@ message_get_result (void *cls, int64_t result, { struct FragmentClosure *fcls = cls; op = NULL; - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get:\t%d\n", result); + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get:\t%ld\n", (long int) result); GNUNET_assert (0 < result && fcls->n == fcls->n_expected); fcls->n = 0; @@ -378,7 +378,7 @@ message_get_fragment_result (void *cls, int64_t result, { struct FragmentClosure *fcls = cls; op = NULL; - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get_fragment:\t%d\n", result); + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "message_get_fragment:\t%ld\n", (long int) result); GNUNET_assert (0 < result && fcls->n == fcls->n_expected); fcls->n = 0; @@ -397,7 +397,7 @@ fragment_get_latest_result (void *cls, int64_t result, { struct FragmentClosure *fcls = cls; op = NULL; - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "fragment_get_latest:\t%d\n", result); + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "fragment_get_latest:\t%ld\n", (long int) result); GNUNET_assert (0 < result && fcls->n == fcls->n_expected); fcls->n = 1; @@ -435,7 +435,7 @@ fragment_store_result (void *cls, int64_t result, const char *err_msg, uint16_t err_msg_size) { op = NULL; - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "fragment_store:\t%d\n", result); + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "fragment_store:\t%ld\n", (long int) result); GNUNET_assert (GNUNET_OK == result); if ((intptr_t) cls == GNUNET_YES) @@ -507,7 +507,7 @@ membership_test_result (void *cls, int64_t result, const char *err_msg, uint16_t err_msg_size) { op = NULL; - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "membership_test:\t%d\n", result); + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "membership_test:\t%ld\n", (long int) result); GNUNET_assert (GNUNET_OK == result); fragment_store (); @@ -519,7 +519,7 @@ membership_store_result (void *cls, int64_t result, const char *err_msg, uint16_t err_msg_size) { op = NULL; - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "membership_store:\t%d\n", result); + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "membership_store:\t%ld\n", (long int) result); GNUNET_assert (GNUNET_OK == result); op = GNUNET_PSYCSTORE_membership_test (h, &channel_pub_key, &slave_pub_key, -- 2.25.1