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/psycutil | |
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/psycutil')
-rw-r--r-- | src/psycutil/psyc_message.c | 24 | ||||
-rw-r--r-- | src/psycutil/psyc_slicer.c | 8 |
2 files changed, 16 insertions, 16 deletions
diff --git a/src/psycutil/psyc_message.c b/src/psycutil/psyc_message.c index 9f0a0c7da..272b4bf4c 100644 --- a/src/psycutil/psyc_message.c +++ b/src/psycutil/psyc_message.c | |||
@@ -215,7 +215,7 @@ GNUNET_PSYC_message_create (const char *method_name, | |||
215 | pmeth = (struct GNUNET_PSYC_MessageMethod *) &msg[1]; | 215 | pmeth = (struct GNUNET_PSYC_MessageMethod *) &msg[1]; |
216 | pmeth->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD); | 216 | pmeth->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD); |
217 | pmeth->header.size = htons (sizeof (*pmeth) + method_name_size); | 217 | pmeth->header.size = htons (sizeof (*pmeth) + method_name_size); |
218 | memcpy (&pmeth[1], method_name, method_name_size); | 218 | GNUNET_memcpy (&pmeth[1], method_name, method_name_size); |
219 | 219 | ||
220 | uint16_t p = sizeof (*msg) + sizeof (*pmeth) + method_name_size; | 220 | uint16_t p = sizeof (*msg) + sizeof (*pmeth) + method_name_size; |
221 | if (NULL != env) | 221 | if (NULL != env) |
@@ -234,9 +234,9 @@ GNUNET_PSYC_message_create (const char *method_name, | |||
234 | pmod->name_size = htons (mod_name_size); | 234 | pmod->name_size = htons (mod_name_size); |
235 | pmod->value_size = htonl (mod->value_size); | 235 | pmod->value_size = htonl (mod->value_size); |
236 | 236 | ||
237 | memcpy (&pmod[1], mod->name, mod_name_size); | 237 | GNUNET_memcpy (&pmod[1], mod->name, mod_name_size); |
238 | if (0 < mod->value_size) | 238 | if (0 < mod->value_size) |
239 | memcpy ((char *) &pmod[1] + mod_name_size, mod->value, mod->value_size); | 239 | GNUNET_memcpy ((char *) &pmod[1] + mod_name_size, mod->value, mod->value_size); |
240 | 240 | ||
241 | mod = mod->next; | 241 | mod = mod->next; |
242 | } | 242 | } |
@@ -249,7 +249,7 @@ GNUNET_PSYC_message_create (const char *method_name, | |||
249 | p += pmsg->size; | 249 | p += pmsg->size; |
250 | pmsg->size = htons (pmsg->size); | 250 | pmsg->size = htons (pmsg->size); |
251 | pmsg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA); | 251 | pmsg->type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_DATA); |
252 | memcpy (&pmsg[1], data, data_size); | 252 | GNUNET_memcpy (&pmsg[1], data, data_size); |
253 | } | 253 | } |
254 | 254 | ||
255 | pmsg = (struct GNUNET_MessageHeader *) ((char *) msg + p); | 255 | pmsg = (struct GNUNET_MessageHeader *) ((char *) msg + p); |
@@ -388,7 +388,7 @@ transmit_queue_insert (struct GNUNET_PSYC_TransmitHandle *tmit, | |||
388 | { | 388 | { |
389 | /* Message fits in current buffer, append */ | 389 | /* Message fits in current buffer, append */ |
390 | tmit->msg = GNUNET_realloc (tmit->msg, tmit->msg->size + size); | 390 | tmit->msg = GNUNET_realloc (tmit->msg, tmit->msg->size + size); |
391 | memcpy ((char *) tmit->msg + tmit->msg->size, msg, size); | 391 | GNUNET_memcpy ((char *) tmit->msg + tmit->msg->size, msg, size); |
392 | tmit->msg->size += size; | 392 | tmit->msg->size += size; |
393 | } | 393 | } |
394 | } | 394 | } |
@@ -398,7 +398,7 @@ transmit_queue_insert (struct GNUNET_PSYC_TransmitHandle *tmit, | |||
398 | /* Empty buffer, copy over message. */ | 398 | /* Empty buffer, copy over message. */ |
399 | tmit->msg = GNUNET_malloc (sizeof (*tmit->msg) + size); | 399 | tmit->msg = GNUNET_malloc (sizeof (*tmit->msg) + size); |
400 | tmit->msg->size = sizeof (*tmit->msg) + size; | 400 | tmit->msg->size = sizeof (*tmit->msg) + size; |
401 | memcpy (&tmit->msg[1], msg, size); | 401 | GNUNET_memcpy (&tmit->msg[1], msg, size); |
402 | } | 402 | } |
403 | 403 | ||
404 | if (NULL != tmit->msg | 404 | if (NULL != tmit->msg |
@@ -647,8 +647,8 @@ transmit_notify_env (void *cls, uint16_t *data_size, void *data, uint8_t *oper, | |||
647 | tmit->mod_value = tmit->mod->value + value_size; | 647 | tmit->mod_value = tmit->mod->value + value_size; |
648 | } | 648 | } |
649 | 649 | ||
650 | memcpy (data, tmit->mod->name, name_size); | 650 | GNUNET_memcpy (data, tmit->mod->name, name_size); |
651 | memcpy ((char *)data + name_size, tmit->mod->value, value_size); | 651 | GNUNET_memcpy ((char *)data + name_size, tmit->mod->value, value_size); |
652 | return GNUNET_NO; | 652 | return GNUNET_NO; |
653 | } | 653 | } |
654 | else | 654 | else |
@@ -676,7 +676,7 @@ transmit_notify_env (void *cls, uint16_t *data_size, void *data, uint8_t *oper, | |||
676 | } | 676 | } |
677 | 677 | ||
678 | *data_size = value_size; | 678 | *data_size = value_size; |
679 | memcpy (data, value, value_size); | 679 | GNUNET_memcpy (data, value, value_size); |
680 | return (NULL == tmit->mod_value) ? GNUNET_YES : GNUNET_NO; | 680 | return (NULL == tmit->mod_value) ? GNUNET_YES : GNUNET_NO; |
681 | } | 681 | } |
682 | } | 682 | } |
@@ -757,7 +757,7 @@ GNUNET_PSYC_transmit_message (struct GNUNET_PSYC_TransmitHandle *tmit, | |||
757 | pmeth->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD); | 757 | pmeth->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE_METHOD); |
758 | pmeth->header.size = htons (sizeof (*pmeth) + size); | 758 | pmeth->header.size = htons (sizeof (*pmeth) + size); |
759 | pmeth->flags = htonl (flags); | 759 | pmeth->flags = htonl (flags); |
760 | memcpy (&pmeth[1], method_name, size); | 760 | GNUNET_memcpy (&pmeth[1], method_name, size); |
761 | 761 | ||
762 | tmit->state = GNUNET_PSYC_MESSAGE_STATE_MODIFIER; | 762 | tmit->state = GNUNET_PSYC_MESSAGE_STATE_MODIFIER; |
763 | tmit->notify_data = notify_data; | 763 | tmit->notify_data = notify_data; |
@@ -1302,7 +1302,7 @@ GNUNET_PSYC_message_header_init (struct GNUNET_PSYC_MessageHeader *pmsg, | |||
1302 | pmsg->fragment_offset = mmsg->fragment_offset; | 1302 | pmsg->fragment_offset = mmsg->fragment_offset; |
1303 | pmsg->flags = htonl (flags); | 1303 | pmsg->flags = htonl (flags); |
1304 | 1304 | ||
1305 | memcpy (&pmsg[1], &mmsg[1], size - sizeof (*mmsg)); | 1305 | GNUNET_memcpy (&pmsg[1], &mmsg[1], size - sizeof (*mmsg)); |
1306 | } | 1306 | } |
1307 | 1307 | ||
1308 | 1308 | ||
@@ -1334,6 +1334,6 @@ GNUNET_PSYC_message_header_create_from_psyc (const struct GNUNET_PSYC_Message *m | |||
1334 | pmsg = GNUNET_malloc (sizeof (*pmsg) + msg_size - sizeof (*msg)); | 1334 | pmsg = GNUNET_malloc (sizeof (*pmsg) + msg_size - sizeof (*msg)); |
1335 | pmsg->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE); | 1335 | pmsg->header.type = htons (GNUNET_MESSAGE_TYPE_PSYC_MESSAGE); |
1336 | pmsg->header.size = htons (sizeof (*pmsg) + msg_size - sizeof (*msg)); | 1336 | pmsg->header.size = htons (sizeof (*pmsg) + msg_size - sizeof (*msg)); |
1337 | memcpy (&pmsg[1], &msg[1], msg_size - sizeof (*msg)); | 1337 | GNUNET_memcpy (&pmsg[1], &msg[1], msg_size - sizeof (*msg)); |
1338 | return pmsg; | 1338 | return pmsg; |
1339 | } | 1339 | } |
diff --git a/src/psycutil/psyc_slicer.c b/src/psycutil/psyc_slicer.c index b641d9721..a32bbe484 100644 --- a/src/psycutil/psyc_slicer.c +++ b/src/psycutil/psyc_slicer.c | |||
@@ -309,7 +309,7 @@ GNUNET_PSYC_slicer_message_part (struct GNUNET_PSYC_Slicer *slicer, | |||
309 | meth = (struct GNUNET_PSYC_MessageMethod *) pmsg; | 309 | meth = (struct GNUNET_PSYC_MessageMethod *) pmsg; |
310 | slicer->method_name_size = ntohs (meth->header.size) - sizeof (*meth); | 310 | slicer->method_name_size = ntohs (meth->header.size) - sizeof (*meth); |
311 | slicer->method_name = GNUNET_malloc (slicer->method_name_size); | 311 | slicer->method_name = GNUNET_malloc (slicer->method_name_size); |
312 | memcpy (slicer->method_name, &meth[1], slicer->method_name_size); | 312 | GNUNET_memcpy (slicer->method_name, &meth[1], slicer->method_name_size); |
313 | slicer->message_id = message_id; | 313 | slicer->message_id = message_id; |
314 | } | 314 | } |
315 | else | 315 | else |
@@ -335,7 +335,7 @@ GNUNET_PSYC_slicer_message_part (struct GNUNET_PSYC_Slicer *slicer, | |||
335 | slicer->mod_oper = mod->oper; | 335 | slicer->mod_oper = mod->oper; |
336 | slicer->mod_name_size = ntohs (mod->name_size); | 336 | slicer->mod_name_size = ntohs (mod->name_size); |
337 | slicer->mod_name = GNUNET_malloc (slicer->mod_name_size); | 337 | slicer->mod_name = GNUNET_malloc (slicer->mod_name_size); |
338 | memcpy (slicer->mod_name, &mod[1], slicer->mod_name_size); | 338 | GNUNET_memcpy (slicer->mod_name, &mod[1], slicer->mod_name_size); |
339 | slicer->mod_value = (char *) &mod[1] + slicer->mod_name_size; | 339 | slicer->mod_value = (char *) &mod[1] + slicer->mod_name_size; |
340 | slicer->mod_full_value_size = ntohs (mod->value_size); | 340 | slicer->mod_full_value_size = ntohs (mod->value_size); |
341 | slicer->mod_value_remaining = slicer->mod_full_value_size; | 341 | slicer->mod_value_remaining = slicer->mod_full_value_size; |
@@ -351,7 +351,7 @@ GNUNET_PSYC_slicer_message_part (struct GNUNET_PSYC_Slicer *slicer, | |||
351 | } | 351 | } |
352 | slicer->mod_value_remaining -= slicer->mod_value_size; | 352 | slicer->mod_value_remaining -= slicer->mod_value_size; |
353 | char *name = GNUNET_malloc (slicer->mod_name_size); | 353 | char *name = GNUNET_malloc (slicer->mod_name_size); |
354 | memcpy (name, slicer->mod_name, slicer->mod_name_size); | 354 | GNUNET_memcpy (name, slicer->mod_name, slicer->mod_name_size); |
355 | do | 355 | do |
356 | { | 356 | { |
357 | struct GNUNET_HashCode key; | 357 | struct GNUNET_HashCode key; |
@@ -371,7 +371,7 @@ GNUNET_PSYC_slicer_message_part (struct GNUNET_PSYC_Slicer *slicer, | |||
371 | /* try-and-slice method */ | 371 | /* try-and-slice method */ |
372 | 372 | ||
373 | char *name = GNUNET_malloc (slicer->method_name_size); | 373 | char *name = GNUNET_malloc (slicer->method_name_size); |
374 | memcpy (name, slicer->method_name, slicer->method_name_size); | 374 | GNUNET_memcpy (name, slicer->method_name, slicer->method_name_size); |
375 | do | 375 | do |
376 | { | 376 | { |
377 | struct GNUNET_HashCode key; | 377 | struct GNUNET_HashCode key; |