Merge branch 'master' of ssh://gnunet.org/gnunet
[oweals/gnunet.git] / src / fs / fs_uri.c
index 883e4b84a69e3e2a79b6128c0fc45acb97b8531b..fa27e6e9b8f833d5cc1c70403a06234f55876393 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2003--2014 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2003--2014 GNUnet e.V.
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -14,8 +14,8 @@
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
 */
 
 /**
@@ -272,7 +272,6 @@ uri_ksk_parse (const char *s,
   char *dup;
   int saw_quote;
 
-  GNUNET_assert (NULL != s);
   slen = strlen (s);
   pos = strlen (GNUNET_FS_URI_KSK_PREFIX);
   if ((slen <= pos) || (0 != strncmp (s, GNUNET_FS_URI_KSK_PREFIX, pos)))
@@ -363,7 +362,6 @@ uri_sks_parse (const char *s,
   size_t pos;
   char *end;
 
-  GNUNET_assert (s != NULL);
   pos = strlen (GNUNET_FS_URI_SKS_PREFIX);
   if ((strlen (s) <= pos) || (0 != strncmp (s, GNUNET_FS_URI_SKS_PREFIX, pos)))
     return NULL;                /* not an SKS URI */
@@ -408,9 +406,6 @@ uri_chk_parse (const char *s,
   char h1[sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)];
   char h2[sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)];
 
-  if (NULL == s)
-    return NULL;
-  GNUNET_assert (s != NULL);
   slen = strlen (s);
   pos = strlen (GNUNET_FS_URI_CHK_PREFIX);
   if ((slen < pos + 2 * sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded) + 1) ||
@@ -422,9 +417,9 @@ uri_chk_parse (const char *s,
     *emsg = GNUNET_strdup (_("Malformed CHK URI (wrong syntax)"));
     return NULL;
   }
-  memcpy (h1, &s[pos], sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded));
+  GNUNET_memcpy (h1, &s[pos], sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded));
   h1[sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded) - 1] = '\0';
-  memcpy (h2, &s[pos + sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)],
+  GNUNET_memcpy (h2, &s[pos + sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)],
           sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded));
   h2[sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded) - 1] = '\0';
 
@@ -516,9 +511,9 @@ uri_loc_parse (const char *s,
     *emsg = GNUNET_strdup (_("LOC URI malformed (wrong syntax)"));
     return NULL;
   }
-  memcpy (h1, &s[pos], sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded));
+  GNUNET_memcpy (h1, &s[pos], sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded));
   h1[sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded) - 1] = '\0';
-  memcpy (h2, &s[pos + sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)],
+  GNUNET_memcpy (h2, &s[pos + sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)],
           sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded));
   h2[sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded) - 1] = '\0';
 
@@ -629,6 +624,13 @@ GNUNET_FS_uri_parse (const char *uri,
   struct GNUNET_FS_Uri *ret;
   char *msg;
 
+  if (NULL == uri)
+  {
+    GNUNET_break (0);
+    if (NULL != emsg)
+      *emsg = GNUNET_strdup (_("invalid argument"));
+    return NULL;
+  }
   if (NULL == emsg)
     emsg = &msg;
   *emsg = NULL;
@@ -976,7 +978,7 @@ GNUNET_FS_uri_dup (const struct GNUNET_FS_Uri *uri)
   if (uri == NULL)
     return NULL;
   ret = GNUNET_new (struct GNUNET_FS_Uri);
-  memcpy (ret, uri, sizeof (struct GNUNET_FS_Uri));
+  GNUNET_memcpy (ret, uri, sizeof (struct GNUNET_FS_Uri));
   switch (ret->type)
   {
   case GNUNET_FS_URI_KSK:
@@ -1448,7 +1450,7 @@ normalize_metadata (enum EXTRACTOR_MetaFormat format,
   {
     /* u8_tolower allocates a non-NULL-terminated string! */
     free_str = GNUNET_malloc (r_len + 1);
-    memcpy (free_str, normalized, r_len);
+    GNUNET_memcpy (free_str, normalized, r_len);
     free_str[r_len] = '\0';
     free (normalized);
     normalized = free_str;