GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 2, or (at your
+ by the Free Software Foundation; either version 3, or (at your
option) any later version.
GNUnet is distributed in the hope that it will be useful, but
*/
struct GNUNET_FS_Uri *
GNUNET_FS_uri_loc_create (const struct GNUNET_FS_Uri *baseUri,
- struct GNUNET_CONFIGURATION_Handle *cfg,
+ const struct GNUNET_CONFIGURATION_Handle *cfg,
struct GNUNET_TIME_Absolute expiration_time)
{
struct GNUNET_FS_Uri *uri;
}
+/**
+ * Create an SKS URI from a namespace ID and an identifier.
+ *
+ * @param nsid namespace ID
+ * @param id identifier
+ * @return an FS URI for the given namespace and identifier
+ */
+struct GNUNET_FS_Uri *
+GNUNET_FS_uri_sks_create_from_nsid (GNUNET_HashCode *nsid,
+ const char *id)
+{
+ struct GNUNET_FS_Uri *ns_uri;
+
+ ns_uri = GNUNET_malloc (sizeof (struct GNUNET_FS_Uri));
+ ns_uri->type = sks;
+ ns_uri->data.sks.namespace = *nsid;
+ ns_uri->data.sks.identifier = GNUNET_strdup (id);
+ return ns_uri;
+}
+
+
/**
* Canonicalize a keyword.
*
switch (ret->type)
{
case ksk:
+ if (ret->data.ksk.keywordCount >= GNUNET_MAX_MALLOC_CHECKED / sizeof (char*))
+ {
+ GNUNET_break (0);
+ GNUNET_free (ret);
+ return NULL;
+ }
if (ret->data.ksk.keywordCount > 0)
- {
+ {
ret->data.ksk.keywords
= GNUNET_malloc (ret->data.ksk.keywordCount * sizeof (char *));
for (i = 0; i < ret->data.ksk.keywordCount; i++)
if (keywords == NULL)
{
+ *emsg = GNUNET_strdup (_("No keywords specified!\n"));
GNUNET_break (0);
return NULL;
}
}
}
if (hbits > 0)
- ret[len++] = tbl[bits & 63];
+ ret[len] = tbl[bits & 63];
return ret;
}