diff options
Diffstat (limited to 'src/cadet')
-rw-r--r-- | src/cadet/gnunet-service-cadet_local.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/cadet/gnunet-service-cadet_local.c b/src/cadet/gnunet-service-cadet_local.c index 03fec52c1..97eba2903 100644 --- a/src/cadet/gnunet-service-cadet_local.c +++ b/src/cadet/gnunet-service-cadet_local.c | |||
@@ -222,6 +222,7 @@ channel_destroy_iterator (void *cls, | |||
222 | return GNUNET_OK; | 222 | return GNUNET_OK; |
223 | } | 223 | } |
224 | 224 | ||
225 | |||
225 | /** | 226 | /** |
226 | * Handler for client disconnection | 227 | * Handler for client disconnection |
227 | * | 228 | * |
@@ -496,12 +497,15 @@ handle_data (void *cls, struct GNUNET_SERVER_Client *client, | |||
496 | /* Sanity check for message size */ | 497 | /* Sanity check for message size */ |
497 | message_size = ntohs (message->size); | 498 | message_size = ntohs (message->size); |
498 | if (sizeof (struct GNUNET_CADET_LocalData) | 499 | if (sizeof (struct GNUNET_CADET_LocalData) |
499 | + sizeof (struct GNUNET_MessageHeader) > message_size) | 500 | + sizeof (struct GNUNET_MessageHeader) > message_size |
501 | || GNUNET_CONSTANTS_MAX_CADET_MESSAGE_SIZE < message_size) | ||
500 | { | 502 | { |
501 | GNUNET_break (0); | 503 | GNUNET_break (0); |
502 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); | 504 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); |
503 | return; | 505 | return; |
504 | } | 506 | } |
507 | |||
508 | /* Sanity check for payload size */ | ||
505 | payload_size = message_size - sizeof (struct GNUNET_CADET_LocalData); | 509 | payload_size = message_size - sizeof (struct GNUNET_CADET_LocalData); |
506 | msg = (struct GNUNET_CADET_LocalData *) message; | 510 | msg = (struct GNUNET_CADET_LocalData *) message; |
507 | payload = (struct GNUNET_MessageHeader *) &msg[1]; | 511 | payload = (struct GNUNET_MessageHeader *) &msg[1]; |