/* send response */
struct LookupNameContext *lnc = cls;
struct LookupNameResponseMessage *lnr_msg;
-
- struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *zone_key_tmp;
struct GNUNET_NAMESTORE_RecordData *rd_selected = NULL;
char *rd_tmp;
char *name_tmp;
lnr_msg->rd_len = htons (rd_ser_len);
lnr_msg->name_len = htons (name_len);
lnr_msg->expire = GNUNET_TIME_absolute_hton(expire);
+ lnr_msg->public_key = (*zone_key);
lnr_msg->contains_sig = htons (contains_signature);
if (GNUNET_YES == contains_signature)
lnr_msg->signature = *signature;
else
memset (&lnr_msg->signature, '\0', sizeof (lnr_msg->signature));
- zone_key_tmp = (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *) &lnr_msg[1];
- name_tmp = (char *) &zone_key_tmp[1];
+ name_tmp = (char *) &lnr_msg[1];
rd_tmp = &name_tmp[name_len];
- memcpy (zone_key_tmp, zone_key, sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded));
memcpy (name_tmp, name, name_len);
memcpy (rd_tmp, rd_ser, rd_ser_len);
goto send;
}
-
GNUNET_HashCode zone_hash;
GNUNET_CRYPTO_hash (&rp_msg->public_key, sizeof (rp_msg->public_key), &zone_hash);
rpr_msg.gns_header.header.type = htons (GNUNET_MESSAGE_TYPE_NAMESTORE_RECORD_PUT_RESPONSE);
rpr_msg.gns_header.header.size = htons (sizeof (struct RecordPutResponseMessage));
rpr_msg.gns_header.r_id = rp_msg->gns_header.r_id;
-
- if (GNUNET_OK == res)
- rpr_msg.op_result = htons (GNUNET_OK);
- else
- rpr_msg.op_result = htons (GNUNET_NO);
+ rpr_msg.op_result = htons (res);
GNUNET_SERVER_notification_context_unicast (snc, nc->client, (const struct GNUNET_MessageHeader *) &rpr_msg, GNUNET_NO);
GNUNET_SERVER_receive_done (client, GNUNET_OK);
struct GNUNET_NAMESTORE_Header gns_header;
/**
- * name length: GNUNET_NO (0) on error, GNUNET_OK (1) on success
+ * result:
+ * GNUNET_SYSERR on failure
+ * GNUNET_OK on success
*/
int32_t op_result;
};
/**
* Create a record and put it to the namestore
* Memory layout:
- * [struct RecordCreateMessage][char *name][rc_count * struct GNUNET_NAMESTORE_RecordData]
*/
struct RecordCreateMessage
{
"RECORD_PUT_RESPONSE");
struct GNUNET_NAMESTORE_Handle *h = qe->nsh;
- int res = GNUNET_OK;
if (ntohs (msg->op_result) == GNUNET_OK)
{
- res = GNUNET_OK;
if (qe->cont != NULL)
{
- qe->cont (qe->cont_cls, res, _("Namestore added record successfully"));
+ qe->cont (qe->cont_cls, GNUNET_OK, _("Namestore added record successfully"));
}
}
- else if (ntohs (msg->op_result) == GNUNET_NO)
+ else if (ntohs (msg->op_result) == GNUNET_SYSERR)
{
- res = GNUNET_SYSERR;
if (qe->cont != NULL)
{
- qe->cont (qe->cont_cls, res, _("Namestore failed to add record"));
+ qe->cont (qe->cont_cls, GNUNET_SYSERR, _("Namestore failed to add record"));
}
}
else
size_t msg_size = 0;
size_t name_len = 0;
size_t rd_ser_len = 0;
- size_t pubkey_len = 0;
uint32_t rid = 0;
GNUNET_assert (NULL != h);
char rd_ser[rd_ser_len];
GNUNET_NAMESTORE_records_serialize(rd_count, rd, rd_ser_len, rd_ser);
- pubkey_len = sizeof (struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded);
struct RecordPutMessage * msg;
- msg_size = sizeof (struct RecordPutMessage) + pubkey_len + name_len + rd_ser_len;
+ msg_size = sizeof (struct RecordPutMessage) + name_len + rd_ser_len;
/* create msg here */
pe = GNUNET_malloc(sizeof (struct PendingMessage) + msg_size);
GNUNET_assert (public_key != NULL);
GNUNET_assert (name != NULL);
+ GNUNET_assert (rd != NULL);
GNUNET_assert (signature != NULL);
+
rd_ser_len = GNUNET_NAMESTORE_records_get_size(rd_count, rd);
char rd_ser[rd_ser_len];
GNUNET_NAMESTORE_records_serialize(rd_count, rd, rd_ser_len, rd_ser);
name_len = strlen (name) + 1;
+ if (name_len > 256)
+ {
+ GNUNET_break (0);
+ return GNUNET_SYSERR;
+ }
sig_purpose = GNUNET_malloc(sizeof (struct GNUNET_CRYPTO_RsaSignaturePurpose) + rd_ser_len + name_len);
sig_purpose->size = htonl (sizeof (struct GNUNET_CRYPTO_RsaSignaturePurpose)+ rd_ser_len + name_len);