diff options
Diffstat (limited to 'src/peerstore/peerstore_common.c')
-rw-r--r-- | src/peerstore/peerstore_common.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/peerstore/peerstore_common.c b/src/peerstore/peerstore_common.c index 1f86fe442..96b428aee 100644 --- a/src/peerstore/peerstore_common.c +++ b/src/peerstore/peerstore_common.c | |||
@@ -194,14 +194,25 @@ PEERSTORE_parse_record_message (const struct GNUNET_MessageHeader *message) | |||
194 | 194 | ||
195 | req_size = ntohs (message->size); | 195 | req_size = ntohs (message->size); |
196 | if (req_size < sizeof (struct StoreRecordMessage)) | 196 | if (req_size < sizeof (struct StoreRecordMessage)) |
197 | { | ||
198 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
199 | "Received message with invalid size: (%d < %d).\n", | ||
200 | req_size, sizeof (struct StoreRecordMessage)); | ||
197 | return NULL; | 201 | return NULL; |
202 | } | ||
198 | srm = (struct StoreRecordMessage *) message; | 203 | srm = (struct StoreRecordMessage *) message; |
199 | ss_size = ntohs (srm->sub_system_size); | 204 | ss_size = ntohs (srm->sub_system_size); |
200 | key_size = ntohs (srm->key_size); | 205 | key_size = ntohs (srm->key_size); |
201 | value_size = ntohs (srm->value_size); | 206 | value_size = ntohs (srm->value_size); |
202 | if (ss_size + key_size + value_size + sizeof (struct StoreRecordMessage) != | 207 | if (ss_size + key_size + value_size + sizeof (struct StoreRecordMessage) != |
203 | req_size) | 208 | req_size) |
209 | { | ||
210 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
211 | "Received message with invalid sizes: (%d + %d + %d + %d != %d).\n", | ||
212 | ss_size, key_size, value_size, sizeof (struct StoreRecordMessage), | ||
213 | req_size); | ||
204 | return NULL; | 214 | return NULL; |
215 | } | ||
205 | record = GNUNET_new (struct GNUNET_PEERSTORE_Record); | 216 | record = GNUNET_new (struct GNUNET_PEERSTORE_Record); |
206 | if (GNUNET_YES == ntohs (srm->peer_set)) | 217 | if (GNUNET_YES == ntohs (srm->peer_set)) |
207 | { | 218 | { |