gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r21008 - in gnunet/src: block dht gns


From: gnunet
Subject: [GNUnet-SVN] r21008 - in gnunet/src: block dht gns
Date: Wed, 18 Apr 2012 15:40:40 +0200

Author: grothoff
Date: 2012-04-18 15:40:40 +0200 (Wed, 18 Apr 2012)
New Revision: 21008

Modified:
   gnunet/src/block/plugin_block_test.c
   gnunet/src/dht/gnunet-service-dht_routing.c
   gnunet/src/dht/plugin_block_dht.c
   gnunet/src/gns/plugin_block_gns.c
Log:
-fixing 2253

Modified: gnunet/src/block/plugin_block_test.c
===================================================================
--- gnunet/src/block/plugin_block_test.c        2012-04-18 11:49:58 UTC (rev 
21007)
+++ gnunet/src/block/plugin_block_test.c        2012-04-18 13:40:40 UTC (rev 
21008)
@@ -66,8 +66,11 @@
   if (type != GNUNET_BLOCK_TYPE_TEST)
     return GNUNET_BLOCK_EVALUATION_TYPE_NOT_SUPPORTED;
   if (xquery_size != 0)
+  {
+    GNUNET_break_op (0);
     return GNUNET_BLOCK_EVALUATION_REQUEST_INVALID;
-  if (reply_block_size == 0)
+  }
+  if (NULL == reply_block)
     return GNUNET_BLOCK_EVALUATION_REQUEST_VALID;
 
   if (NULL != bf)

Modified: gnunet/src/dht/gnunet-service-dht_routing.c
===================================================================
--- gnunet/src/dht/gnunet-service-dht_routing.c 2012-04-18 11:49:58 UTC (rev 
21007)
+++ gnunet/src/dht/gnunet-service-dht_routing.c 2012-04-18 13:40:40 UTC (rev 
21008)
@@ -227,6 +227,8 @@
                               1, GNUNET_NO);
     return GNUNET_SYSERR;
   case GNUNET_BLOCK_EVALUATION_REQUEST_VALID:
+    GNUNET_break (0);
+    return GNUNET_OK;
   case GNUNET_BLOCK_EVALUATION_REQUEST_INVALID:
     GNUNET_break (0);
     return GNUNET_OK;
@@ -280,6 +282,16 @@
   pc.get_path = get_path;
   pc.data = data;
   pc.data_size = data_size;
+  if (NULL == data)
+  {
+    /* Some apps might have an 'empty' reply as a valid reply; however,
+       'process' will call GNUNET_BLOCK_evaluate' which treats a 'NULL'
+       reply as request-validation (but we need response-validation).
+       So we set 'data' to a 0-byte non-NULL value just to be sure */
+    GNUNET_break (0 == data_size);
+    data_size = 0;
+    pc.data = ""; /* something not null */
+  }
   GNUNET_CONTAINER_multihashmap_get_multiple (recent_map, key, &process, &pc);
 }
 

Modified: gnunet/src/dht/plugin_block_dht.c
===================================================================
--- gnunet/src/dht/plugin_block_dht.c   2012-04-18 11:49:58 UTC (rev 21007)
+++ gnunet/src/dht/plugin_block_dht.c   2012-04-18 13:40:40 UTC (rev 21008)
@@ -65,17 +65,29 @@
   if (type != GNUNET_BLOCK_TYPE_DHT_HELLO)
     return GNUNET_BLOCK_EVALUATION_TYPE_NOT_SUPPORTED;
   if (xquery_size != 0)
+  {
+    GNUNET_break_op (0);
     return GNUNET_BLOCK_EVALUATION_REQUEST_INVALID;
-  if (reply_block_size == 0)
+  }
+  if (NULL == reply_block)
     return GNUNET_BLOCK_EVALUATION_REQUEST_VALID;
   if (reply_block_size < sizeof (struct GNUNET_MessageHeader))
+  {
+    GNUNET_break_op (0);
     return GNUNET_BLOCK_EVALUATION_RESULT_INVALID;
+  }
   msg = reply_block;
   if (reply_block_size != ntohs (msg->size))
+  {
+    GNUNET_break_op (0);
     return GNUNET_BLOCK_EVALUATION_RESULT_INVALID;
+  }
   hello = reply_block;
   if (GNUNET_OK != GNUNET_HELLO_get_id (hello, &pid))
+  {
+    GNUNET_break_op (0);
     return GNUNET_BLOCK_EVALUATION_RESULT_INVALID;
+  }
   if (NULL != bf)
   {
     GNUNET_BLOCK_mingle_hash (&pid.hashPubKey, bf_mutator, &mhash);

Modified: gnunet/src/gns/plugin_block_gns.c
===================================================================
--- gnunet/src/gns/plugin_block_gns.c   2012-04-18 11:49:58 UTC (rev 21007)
+++ gnunet/src/gns/plugin_block_gns.c   2012-04-18 13:40:40 UTC (rev 21008)
@@ -88,9 +88,11 @@
      *  FIXME we could check for the record types here
      **/
     if (xquery_size < sizeof(uint32_t))
+    {
+      GNUNET_break_op (0);
       return GNUNET_BLOCK_EVALUATION_REQUEST_INVALID;
-    else
-      return GNUNET_BLOCK_EVALUATION_REQUEST_VALID;
+    }
+    return GNUNET_BLOCK_EVALUATION_REQUEST_VALID;
   }
   
   /* this is a reply */
@@ -119,7 +121,10 @@
 
   /* Check query key against public key */
   if (0 != GNUNET_CRYPTO_hash_cmp(query, &query_key))
+  {
+    GNUNET_break_op (0);
     return GNUNET_BLOCK_EVALUATION_RESULT_INVALID;
+  }
   
   record_match = 0;
   rd_count = ntohl(nrb->rd_count);
@@ -139,6 +144,7 @@
     {
       GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
                  "Data invalid (%d bytes, %d records)\n", rd_len, rd_count);
+      GNUNET_break_op (0);
       return GNUNET_BLOCK_EVALUATION_RESULT_INVALID;
     }
 
@@ -174,6 +180,7 @@
                                                         &nrb->signature))
     {
       GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Signature invalid for name %s\n");
+      GNUNET_break_op (0);
       return GNUNET_BLOCK_EVALUATION_RESULT_INVALID;
     }
   }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]