[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r36445 - gnunet/src/set
From: |
gnunet |
Subject: |
[GNUnet-SVN] r36445 - gnunet/src/set |
Date: |
Tue, 6 Oct 2015 01:16:17 +0200 |
Author: dold
Date: 2015-10-06 01:16:17 +0200 (Tue, 06 Oct 2015)
New Revision: 36445
Modified:
gnunet/src/set/Makefile.am
gnunet/src/set/gnunet-service-set.c
gnunet/src/set/gnunet-service-set_union.c
gnunet/src/set/set.h
gnunet/src/set/set_api.c
Log:
include element type in hash
Modified: gnunet/src/set/Makefile.am
===================================================================
--- gnunet/src/set/Makefile.am 2015-10-05 22:27:46 UTC (rev 36444)
+++ gnunet/src/set/Makefile.am 2015-10-05 23:16:17 UTC (rev 36445)
@@ -53,6 +53,7 @@
$(top_builddir)/src/core/libgnunetcore.la \
$(top_builddir)/src/cadet/libgnunetcadet.la \
$(top_builddir)/src/block/libgnunetblock.la \
+ $(top_builddir)/src/set/libgnunetset.la \
$(GN_LIBINTL)
libgnunetset_la_SOURCES = \
Modified: gnunet/src/set/gnunet-service-set.c
===================================================================
--- gnunet/src/set/gnunet-service-set.c 2015-10-05 22:27:46 UTC (rev 36444)
+++ gnunet/src/set/gnunet-service-set.c 2015-10-05 23:16:17 UTC (rev 36445)
@@ -825,9 +825,8 @@
"Client inserts element of size %u\n",
el.size);
el.data = &msg[1];
- GNUNET_CRYPTO_hash (el.data,
- el.size,
- &hash);
+ el.element_type = ntohs (msg->element_type);
+ GNUNET_SET_element_hash (&el, &hash);
ee = GNUNET_CONTAINER_multihashmap_get (set->content->elements,
&hash);
@@ -840,6 +839,7 @@
el.data,
el.size);
ee->element.data = &ee[1];
+ ee->element.element_type = el.element_type;
ee->remote = GNUNET_NO;
ee->mutations = NULL;
ee->mutations_size = 0;
@@ -885,9 +885,8 @@
"Client removes element of size %u\n",
el.size);
el.data = &msg[1];
- GNUNET_CRYPTO_hash (el.data,
- el.size,
- &hash);
+ el.element_type = ntohs (msg->element_type);
+ GNUNET_SET_element_hash (&el, &hash);
ee = GNUNET_CONTAINER_multihashmap_get (set->content->elements,
&hash);
if (NULL == ee)
@@ -1009,7 +1008,7 @@
memcpy (&msg[1],
ee->element.data,
ee->element.size);
- msg->element_type = ee->element.element_type;
+ msg->element_type = htons (ee->element.element_type);
msg->iteration_id = htons (set->iteration_id);
}
GNUNET_MQ_send (set->client_mq, ev);
Modified: gnunet/src/set/gnunet-service-set_union.c
===================================================================
--- gnunet/src/set/gnunet-service-set_union.c 2015-10-05 22:27:46 UTC (rev
36444)
+++ gnunet/src/set/gnunet-service-set_union.c 2015-10-05 23:16:17 UTC (rev
36445)
@@ -1078,9 +1078,7 @@
ee->element.data = &ee[1];
ee->element.element_type = ntohs (emsg->element_type);
ee->remote = GNUNET_YES;
- GNUNET_CRYPTO_hash (ee->element.data,
- ee->element.size,
- &ee->element_hash);
+ GNUNET_SET_element_hash (&ee->element, &ee->element_hash);
if (GNUNET_NO == GNUNET_CONTAINER_multihashmap_remove
(op->state->demanded_hashes, &ee->element_hash, NULL))
{
Modified: gnunet/src/set/set.h
===================================================================
--- gnunet/src/set/set.h 2015-10-05 22:27:46 UTC (rev 36444)
+++ gnunet/src/set/set.h 2015-10-05 23:16:17 UTC (rev 36445)
@@ -28,6 +28,7 @@
#include "platform.h"
#include "gnunet_common.h"
+#include "gnunet_set_service.h"
GNUNET_NETWORK_STRUCT_BEGIN
Modified: gnunet/src/set/set_api.c
===================================================================
--- gnunet/src/set/set_api.c 2015-10-05 22:27:46 UTC (rev 36444)
+++ gnunet/src/set/set_api.c 2015-10-05 23:16:17 UTC (rev 36445)
@@ -330,7 +330,7 @@
if (NULL != iter)
{
element.size = msize - sizeof (struct GNUNET_SET_IterResponseMessage);
- element.element_type = htons (msg->element_type);
+ element.element_type = ntohs (msg->element_type);
element.data = &msg[1];
iter (set->iterator_cls,
&element);
@@ -443,7 +443,7 @@
"Treating result as element\n");
e.data = &msg[1];
e.size = ntohs (mh->size) - sizeof (struct GNUNET_SET_ResultMessage);
- e.element_type = msg->element_type;
+ e.element_type = ntohs (msg->element_type);
if (NULL != oh->result_cb)
oh->result_cb (oh->result_cls,
&e,
@@ -655,7 +655,7 @@
}
mqm = GNUNET_MQ_msg_extra (msg, element->size,
GNUNET_MESSAGE_TYPE_SET_ADD);
- msg->element_type = element->element_type;
+ msg->element_type = htons (element->element_type);
memcpy (&msg[1],
element->data,
element->size);
@@ -697,7 +697,7 @@
mqm = GNUNET_MQ_msg_extra (msg,
element->size,
GNUNET_MESSAGE_TYPE_SET_REMOVE);
- msg->element_type = element->element_type;
+ msg->element_type = htons (element->element_type);
memcpy (&msg[1],
element->data,
element->size);
@@ -1144,8 +1144,14 @@
void
GNUNET_SET_element_hash (const struct GNUNET_SET_Element *element, struct
GNUNET_HashCode *ret_hash)
{
- /* FIXME: The element type should also be hashed. */
- GNUNET_CRYPTO_hash (element->data, element->size, ret_hash);
+ struct GNUNET_HashContext *ctx = GNUNET_CRYPTO_hash_context_start ();
+
+ /* It's not guaranteed that the element data is always after the element
header,
+ so we need to hash the chunks separately. */
+ GNUNET_CRYPTO_hash_context_read (ctx, &element->size, sizeof (uint16_t));
+ GNUNET_CRYPTO_hash_context_read (ctx, &element->element_type, sizeof
(uint16_t));
+ GNUNET_CRYPTO_hash_context_read (ctx, element->data, element->size);
+ GNUNET_CRYPTO_hash_context_finish (ctx, ret_hash);
}
/* end of set_api.c */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r36445 - gnunet/src/set,
gnunet <=