diff options
author | Christian Grothoff <christian@grothoff.org> | 2016-07-08 17:20:23 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2016-07-08 17:20:23 +0000 |
commit | d8c53b12a818ff7cf82d06a1a69c395bdef85ee6 (patch) | |
tree | 0ebb0db416c157fcfde51a941185819dd12d51fd /src/psyc | |
parent | 5184c17d32a39c928c2a0fec3ee1ad098bbaa562 (diff) | |
download | gnunet-d8c53b12a818ff7cf82d06a1a69c395bdef85ee6.tar.gz gnunet-d8c53b12a818ff7cf82d06a1a69c395bdef85ee6.zip |
-avoid calling memcpy() with NULL argument, even if len is 0
Diffstat (limited to 'src/psyc')
-rw-r--r-- | src/psyc/gnunet-service-psyc.c | 28 | ||||
-rw-r--r-- | src/psyc/psyc_api.c | 12 | ||||
-rw-r--r-- | src/psyc/test_psyc.c | 8 |
3 files changed, 24 insertions, 24 deletions
diff --git a/src/psyc/gnunet-service-psyc.c b/src/psyc/gnunet-service-psyc.c index 8fd2fbf35..792164b95 100644 --- a/src/psyc/gnunet-service-psyc.c +++ b/src/psyc/gnunet-service-psyc.c | |||
@@ -677,7 +677,7 @@ client_send_result (struct GNUNET_SERVER_Client *client, uint64_t op_id, | |||
677 | res->result_code = GNUNET_htonll (result_code); | 677 | res->result_code = GNUNET_htonll (result_code); |
678 | res->op_id = op_id; | 678 | res->op_id = op_id; |
679 | if (0 < data_size) | 679 | if (0 < data_size) |
680 | memcpy (&res[1], data, data_size); | 680 | GNUNET_memcpy (&res[1], data, data_size); |
681 | 681 | ||
682 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 682 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
683 | "%p Sending result to client for operation #%" PRIu64 ": " | 683 | "%p Sending result to client for operation #%" PRIu64 ": " |
@@ -771,7 +771,7 @@ mcast_recv_join_request (void *cls, | |||
771 | req->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST); | 771 | req->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_JOIN_REQUEST); |
772 | req->slave_pub_key = *slave_pub_key; | 772 | req->slave_pub_key = *slave_pub_key; |
773 | if (0 < join_msg_size) | 773 | if (0 < join_msg_size) |
774 | memcpy (&req[1], join_msg, join_msg_size); | 774 | GNUNET_memcpy (&req[1], join_msg, join_msg_size); |
775 | 775 | ||
776 | struct JoinMemTestClosure *jcls = GNUNET_malloc (sizeof (*jcls)); | 776 | struct JoinMemTestClosure *jcls = GNUNET_malloc (sizeof (*jcls)); |
777 | jcls->slave_pub_key = *slave_pub_key; | 777 | jcls->slave_pub_key = *slave_pub_key; |
@@ -812,7 +812,7 @@ mcast_recv_join_decision (void *cls, int is_admitted, | |||
812 | dcsn->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION); | 812 | dcsn->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_JOIN_DECISION); |
813 | dcsn->is_admitted = htonl (is_admitted); | 813 | dcsn->is_admitted = htonl (is_admitted); |
814 | if (0 < join_resp_size) | 814 | if (0 < join_resp_size) |
815 | memcpy (&dcsn[1], join_resp, join_resp_size); | 815 | GNUNET_memcpy (&dcsn[1], join_resp, join_resp_size); |
816 | 816 | ||
817 | client_send_msg (chn, &dcsn->header); | 817 | client_send_msg (chn, &dcsn->header); |
818 | 818 | ||
@@ -962,7 +962,7 @@ psyc_msg_init (struct GNUNET_PSYC_MessageHeader *pmsg, | |||
962 | pmsg->fragment_offset = mmsg->fragment_offset; | 962 | pmsg->fragment_offset = mmsg->fragment_offset; |
963 | pmsg->flags = htonl (flags); | 963 | pmsg->flags = htonl (flags); |
964 | 964 | ||
965 | memcpy (&pmsg[1], &mmsg[1], size - sizeof (*mmsg)); | 965 | GNUNET_memcpy (&pmsg[1], &mmsg[1], size - sizeof (*mmsg)); |
966 | } | 966 | } |
967 | 967 | ||
968 | 968 | ||
@@ -1029,7 +1029,7 @@ client_send_mcast_req (struct Master *mst, | |||
1029 | pmsg->fragment_offset = req->fragment_offset; | 1029 | pmsg->fragment_offset = req->fragment_offset; |
1030 | pmsg->flags = htonl (GNUNET_PSYC_MESSAGE_REQUEST); | 1030 | pmsg->flags = htonl (GNUNET_PSYC_MESSAGE_REQUEST); |
1031 | pmsg->slave_pub_key = req->member_pub_key; | 1031 | pmsg->slave_pub_key = req->member_pub_key; |
1032 | memcpy (&pmsg[1], &req[1], size - sizeof (*req)); | 1032 | GNUNET_memcpy (&pmsg[1], &req[1], size - sizeof (*req)); |
1033 | 1033 | ||
1034 | client_send_msg (chn, &pmsg->header); | 1034 | client_send_msg (chn, &pmsg->header); |
1035 | 1035 | ||
@@ -1100,7 +1100,7 @@ fragment_queue_insert (struct Channel *chn, | |||
1100 | cache_entry = GNUNET_new (struct RecvCacheEntry); | 1100 | cache_entry = GNUNET_new (struct RecvCacheEntry); |
1101 | cache_entry->ref_count = 1; | 1101 | cache_entry->ref_count = 1; |
1102 | cache_entry->mmsg = GNUNET_malloc (size); | 1102 | cache_entry->mmsg = GNUNET_malloc (size); |
1103 | memcpy (cache_entry->mmsg, mmsg, size); | 1103 | GNUNET_memcpy (cache_entry->mmsg, mmsg, size); |
1104 | GNUNET_CONTAINER_multihashmap_put (chan_msgs, &frag_id_hash, cache_entry, | 1104 | GNUNET_CONTAINER_multihashmap_put (chan_msgs, &frag_id_hash, cache_entry, |
1105 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); | 1105 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); |
1106 | } | 1106 | } |
@@ -1784,7 +1784,7 @@ client_recv_slave_join (void *cls, struct GNUNET_SERVER_Client *client, | |||
1784 | join_msg = (struct GNUNET_PSYC_Message *) (((char *) &req[1]) + relay_size); | 1784 | join_msg = (struct GNUNET_PSYC_Message *) (((char *) &req[1]) + relay_size); |
1785 | join_msg_size = ntohs (join_msg->header.size); | 1785 | join_msg_size = ntohs (join_msg->header.size); |
1786 | slv->join_msg = GNUNET_malloc (join_msg_size); | 1786 | slv->join_msg = GNUNET_malloc (join_msg_size); |
1787 | memcpy (slv->join_msg, join_msg, join_msg_size); | 1787 | GNUNET_memcpy (slv->join_msg, join_msg, join_msg_size); |
1788 | } | 1788 | } |
1789 | if (sizeof (*req) + relay_size + join_msg_size != req_size) | 1789 | if (sizeof (*req) + relay_size + join_msg_size != req_size) |
1790 | { | 1790 | { |
@@ -1802,7 +1802,7 @@ client_recv_slave_join (void *cls, struct GNUNET_SERVER_Client *client, | |||
1802 | if (0 < slv->relay_count) | 1802 | if (0 < slv->relay_count) |
1803 | { | 1803 | { |
1804 | slv->relays = GNUNET_malloc (relay_size); | 1804 | slv->relays = GNUNET_malloc (relay_size); |
1805 | memcpy (slv->relays, &req[1], relay_size); | 1805 | GNUNET_memcpy (slv->relays, &req[1], relay_size); |
1806 | } | 1806 | } |
1807 | 1807 | ||
1808 | chn = &slv->chn; | 1808 | chn = &slv->chn; |
@@ -1994,7 +1994,7 @@ transmit_notify (void *cls, size_t *data_size, void *data) | |||
1994 | "%p transmit_notify: sending %u bytes.\n", chn, tmit_msg->size); | 1994 | "%p transmit_notify: sending %u bytes.\n", chn, tmit_msg->size); |
1995 | 1995 | ||
1996 | *data_size = tmit_msg->size; | 1996 | *data_size = tmit_msg->size; |
1997 | memcpy (data, &tmit_msg[1], *data_size); | 1997 | GNUNET_memcpy (data, &tmit_msg[1], *data_size); |
1998 | 1998 | ||
1999 | int ret | 1999 | int ret |
2000 | = (tmit_msg->last_ptype < GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END) | 2000 | = (tmit_msg->last_ptype < GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_END) |
@@ -2203,7 +2203,7 @@ queue_message (struct Channel *chn, | |||
2203 | { | 2203 | { |
2204 | struct TransmitMessage * | 2204 | struct TransmitMessage * |
2205 | tmit_msg = GNUNET_malloc (sizeof (*tmit_msg) + data_size); | 2205 | tmit_msg = GNUNET_malloc (sizeof (*tmit_msg) + data_size); |
2206 | memcpy (&tmit_msg[1], data, data_size); | 2206 | GNUNET_memcpy (&tmit_msg[1], data, data_size); |
2207 | tmit_msg->client = client; | 2207 | tmit_msg->client = client; |
2208 | tmit_msg->size = data_size; | 2208 | tmit_msg->size = data_size; |
2209 | tmit_msg->first_ptype = first_ptype; | 2209 | tmit_msg->first_ptype = first_ptype; |
@@ -2390,7 +2390,7 @@ store_recv_fragment_history (void *cls, | |||
2390 | 2390 | ||
2391 | pmsg = (struct GNUNET_PSYC_MessageHeader *) &res[1]; | 2391 | pmsg = (struct GNUNET_PSYC_MessageHeader *) &res[1]; |
2392 | GNUNET_PSYC_message_header_init (pmsg, mmsg, flags | GNUNET_PSYC_MESSAGE_HISTORIC); | 2392 | GNUNET_PSYC_message_header_init (pmsg, mmsg, flags | GNUNET_PSYC_MESSAGE_HISTORIC); |
2393 | memcpy (&res[1], pmsg, psize); | 2393 | GNUNET_memcpy (&res[1], pmsg, psize); |
2394 | 2394 | ||
2395 | /** @todo FIXME: send only to requesting client */ | 2395 | /** @todo FIXME: send only to requesting client */ |
2396 | client_send_msg (chn, &res->header); | 2396 | client_send_msg (chn, &res->header); |
@@ -2510,8 +2510,8 @@ store_recv_state_var (void *cls, const char *name, | |||
2510 | mod->name_size = htons (name_size); | 2510 | mod->name_size = htons (name_size); |
2511 | mod->value_size = htonl (value_size); | 2511 | mod->value_size = htonl (value_size); |
2512 | mod->oper = htons (GNUNET_PSYC_OP_ASSIGN); | 2512 | mod->oper = htons (GNUNET_PSYC_OP_ASSIGN); |
2513 | memcpy (&mod[1], name, name_size); | 2513 | GNUNET_memcpy (&mod[1], name, name_size); |
2514 | memcpy (((char *) &mod[1]) + name_size, value, value_size); | 2514 | GNUNET_memcpy (((char *) &mod[1]) + name_size, value, value_size); |
2515 | } | 2515 | } |
2516 | else /* Continuation */ | 2516 | else /* Continuation */ |
2517 | { | 2517 | { |
@@ -2524,7 +2524,7 @@ store_recv_state_var (void *cls, const char *name, | |||
2524 | mod = (struct GNUNET_MessageHeader *) &res[1]; | 2524 | mod = (struct GNUNET_MessageHeader *) &res[1]; |
2525 | mod->size = htons (sizeof (*mod) + value_size); | 2525 | mod->size = htons (sizeof (*mod) + value_size); |
2526 | mod->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT); | 2526 | mod->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_MOD_CONT); |
2527 | memcpy (&mod[1], value, value_size); | 2527 | GNUNET_memcpy (&mod[1], value, value_size); |
2528 | } | 2528 | } |
2529 | 2529 | ||
2530 | // FIXME: client might have been disconnected | 2530 | // FIXME: client might have been disconnected |
diff --git a/src/psyc/psyc_api.c b/src/psyc/psyc_api.c index 441c74a08..515a2731a 100644 --- a/src/psyc/psyc_api.c +++ b/src/psyc/psyc_api.c | |||
@@ -224,7 +224,7 @@ channel_send_connect_msg (struct GNUNET_PSYC_Channel *chn) | |||
224 | { | 224 | { |
225 | uint16_t cmsg_size = ntohs (chn->connect_msg->size); | 225 | uint16_t cmsg_size = ntohs (chn->connect_msg->size); |
226 | struct GNUNET_MessageHeader *cmsg = GNUNET_malloc (cmsg_size); | 226 | struct GNUNET_MessageHeader *cmsg = GNUNET_malloc (cmsg_size); |
227 | memcpy (cmsg, chn->connect_msg, cmsg_size); | 227 | GNUNET_memcpy (cmsg, chn->connect_msg, cmsg_size); |
228 | GNUNET_CLIENT_MANAGER_transmit_now (chn->client, cmsg); | 228 | GNUNET_CLIENT_MANAGER_transmit_now (chn->client, cmsg); |
229 | GNUNET_free (cmsg); | 229 | GNUNET_free (cmsg); |
230 | } | 230 | } |
@@ -760,7 +760,7 @@ GNUNET_PSYC_join_decision (struct GNUNET_PSYC_JoinHandle *jh, | |||
760 | dcsn->slave_pub_key = jh->slave_pub_key; | 760 | dcsn->slave_pub_key = jh->slave_pub_key; |
761 | 761 | ||
762 | if (0 < join_resp_size) | 762 | if (0 < join_resp_size) |
763 | memcpy (&dcsn[1], join_resp, join_resp_size); | 763 | GNUNET_memcpy (&dcsn[1], join_resp, join_resp_size); |
764 | 764 | ||
765 | GNUNET_CLIENT_MANAGER_transmit (chn->client, &dcsn->header); | 765 | GNUNET_CLIENT_MANAGER_transmit (chn->client, &dcsn->header); |
766 | GNUNET_free (dcsn); | 766 | GNUNET_free (dcsn); |
@@ -908,10 +908,10 @@ GNUNET_PSYC_slave_join (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
908 | req->flags = htonl (flags); | 908 | req->flags = htonl (flags); |
909 | 909 | ||
910 | if (0 < relay_size) | 910 | if (0 < relay_size) |
911 | memcpy (&req[1], relays, relay_size); | 911 | GNUNET_memcpy (&req[1], relays, relay_size); |
912 | 912 | ||
913 | if (NULL != join_msg) | 913 | if (NULL != join_msg) |
914 | memcpy ((char *) &req[1] + relay_size, join_msg, join_msg_size); | 914 | GNUNET_memcpy ((char *) &req[1] + relay_size, join_msg, join_msg_size); |
915 | 915 | ||
916 | chn->connect_msg = &req->header; | 916 | chn->connect_msg = &req->header; |
917 | chn->cfg = cfg; | 917 | chn->cfg = cfg; |
@@ -1170,7 +1170,7 @@ channel_history_replay (struct GNUNET_PSYC_Channel *chn, | |||
1170 | req->message_limit = GNUNET_htonll (message_limit); | 1170 | req->message_limit = GNUNET_htonll (message_limit); |
1171 | req->flags = htonl (flags); | 1171 | req->flags = htonl (flags); |
1172 | req->op_id = GNUNET_htonll (hist->op_id); | 1172 | req->op_id = GNUNET_htonll (hist->op_id); |
1173 | memcpy (&req[1], method_prefix, method_size); | 1173 | GNUNET_memcpy (&req[1], method_prefix, method_size); |
1174 | 1174 | ||
1175 | GNUNET_CLIENT_MANAGER_transmit (chn->client, &req->header); | 1175 | GNUNET_CLIENT_MANAGER_transmit (chn->client, &req->header); |
1176 | GNUNET_free (req); | 1176 | GNUNET_free (req); |
@@ -1311,7 +1311,7 @@ channel_state_get (struct GNUNET_PSYC_Channel *chn, | |||
1311 | req->header.type = htons (type); | 1311 | req->header.type = htons (type); |
1312 | req->header.size = htons (sizeof (*req) + name_size); | 1312 | req->header.size = htons (sizeof (*req) + name_size); |
1313 | req->op_id = GNUNET_htonll (sr->op_id); | 1313 | req->op_id = GNUNET_htonll (sr->op_id); |
1314 | memcpy (&req[1], name, name_size); | 1314 | GNUNET_memcpy (&req[1], name, name_size); |
1315 | 1315 | ||
1316 | GNUNET_CLIENT_MANAGER_transmit (chn->client, &req->header); | 1316 | GNUNET_CLIENT_MANAGER_transmit (chn->client, &req->header); |
1317 | GNUNET_free (req); | 1317 | GNUNET_free (req); |
diff --git a/src/psyc/test_psyc.c b/src/psyc/test_psyc.c index 402b17b96..9797a96b5 100644 --- a/src/psyc/test_psyc.c +++ b/src/psyc/test_psyc.c | |||
@@ -607,7 +607,7 @@ tmit_notify_data (void *cls, uint16_t *data_size, void *data) | |||
607 | tmit->paused = GNUNET_NO; | 607 | tmit->paused = GNUNET_NO; |
608 | 608 | ||
609 | *data_size = size; | 609 | *data_size = size; |
610 | memcpy (data, tmit->data[tmit->n], size); | 610 | GNUNET_memcpy (data, tmit->data[tmit->n], size); |
611 | 611 | ||
612 | return ++tmit->n < tmit->data_count ? GNUNET_NO : GNUNET_YES; | 612 | return ++tmit->n < tmit->data_count ? GNUNET_NO : GNUNET_YES; |
613 | } | 613 | } |
@@ -653,9 +653,9 @@ tmit_notify_mod (void *cls, uint16_t *data_size, void *data, uint8_t *oper, | |||
653 | tmit->mod_value = tmit->mod->value + value_size; | 653 | tmit->mod_value = tmit->mod->value + value_size; |
654 | } | 654 | } |
655 | 655 | ||
656 | memcpy (data, tmit->mod->name, name_size); | 656 | GNUNET_memcpy (data, tmit->mod->name, name_size); |
657 | ((char *)data)[name_size] = '\0'; | 657 | ((char *)data)[name_size] = '\0'; |
658 | memcpy ((char *)data + name_size + 1, tmit->mod->value, value_size); | 658 | GNUNET_memcpy ((char *)data + name_size + 1, tmit->mod->value, value_size); |
659 | } | 659 | } |
660 | else if (NULL != tmit->mod_value && 0 < tmit->mod_value_size) | 660 | else if (NULL != tmit->mod_value && 0 < tmit->mod_value_size) |
661 | { /* Modifier continuation */ | 661 | { /* Modifier continuation */ |
@@ -682,7 +682,7 @@ tmit_notify_mod (void *cls, uint16_t *data_size, void *data, uint8_t *oper, | |||
682 | } | 682 | } |
683 | 683 | ||
684 | *data_size = value_size; | 684 | *data_size = value_size; |
685 | memcpy (data, value, value_size); | 685 | GNUNET_memcpy (data, value, value_size); |
686 | } | 686 | } |
687 | 687 | ||
688 | return GNUNET_NO; | 688 | return GNUNET_NO; |