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)
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;
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);
}
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);
* 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 */
/* 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);
{
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;
}
&nrb->signature))
{
GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Signature invalid for name %s\n");
+ GNUNET_break_op (0);
return GNUNET_BLOCK_EVALUATION_RESULT_INVALID;
}
}