[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r36431 - gnunet/src/peerinfo
From: |
gnunet |
Subject: |
[GNUnet-SVN] r36431 - gnunet/src/peerinfo |
Date: |
Fri, 2 Oct 2015 16:52:08 +0200 |
Author: grothoff
Date: 2015-10-02 16:52:08 +0200 (Fri, 02 Oct 2015)
New Revision: 36431
Modified:
gnunet/src/peerinfo/gnunet-service-peerinfo.c
Log:
-properly verify size, fixes #3991
Modified: gnunet/src/peerinfo/gnunet-service-peerinfo.c
===================================================================
--- gnunet/src/peerinfo/gnunet-service-peerinfo.c 2015-10-02 03:48:54 UTC
(rev 36430)
+++ gnunet/src/peerinfo/gnunet-service-peerinfo.c 2015-10-02 14:52:08 UTC
(rev 36431)
@@ -365,19 +365,32 @@
{
hello = (const struct GNUNET_HELLO_Message *) &buffer[read_pos];
size_hello = GNUNET_HELLO_size (hello);
- if (0 == size_hello)
+ if ( (0 == size_hello) ||
+ (size_total - read_pos < size_hello) )
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ _("Failed to parse HELLO in file `%s'\n"),
+ fn);
+ if (0 == read_pos)
{
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- _("Failed to parse HELLO in file `%s'\n"),
- fn);
- if ((GNUNET_YES == unlink_garbage) &&
- (0 != UNLINK (fn)) &&
- (ENOENT != errno) )
- GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING,
+ if ((GNUNET_YES == unlink_garbage) &&
+ (0 != UNLINK (fn)) &&
+ (ENOENT != errno) )
+ GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING,
"unlink",
fn);
- return;
}
+ else
+ {
+ if ((GNUNET_YES == unlink_garbage) &&
+ (0 != TRUNCATE (fn, read_pos)) &&
+ (ENOENT != errno) )
+ GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING,
+ "truncate",
+ fn);
+ }
+ return;
+ }
now = GNUNET_TIME_absolute_get ();
hello_clean = GNUNET_HELLO_iterate_addresses (hello, GNUNET_YES,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r36431 - gnunet/src/peerinfo,
gnunet <=