- fix use of uninitialized memory
[oweals/gnunet.git] / src / peerinfo-tool / gnunet-peerinfo_plugins.c
index 3bca9feb2cf75ba25c35e334dfc9432470cf5e51..1940e1124c2b062ba3bc951df3f4fe9a9260aa66 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2010,2011 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2010,2011 Christian Grothoff (and other contributing authors)
 
      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.
 */
 
 /**
@@ -109,7 +109,7 @@ GPI_plugins_load (const struct GNUNET_CONFIGURATION_Handle *cfg)
     GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Loading `%s' transport plugin\n"),
                 pos);
     GNUNET_asprintf (&libname, "libgnunet_plugin_transport_%s", pos);
-    plug = GNUNET_malloc (sizeof (struct TransportPlugin));
+    plug = GNUNET_new (struct TransportPlugin);
     plug->short_name = GNUNET_strdup (pos);
     plug->lib_name = libname;
     plug->env.cfg = cfg;
@@ -168,14 +168,23 @@ GPI_plugins_find (const char *name)
   struct TransportPlugin *head = plugins_head;
 
   char *stripped = GNUNET_strdup (name);
+  char *head_stripped;
   char *sep = strchr (stripped, '_');
   if (NULL != sep)
     sep[0] = '\0';
 
   while (head != NULL)
   {
-    if (head->short_name == strstr (head->short_name, stripped))
-        break;
+       head_stripped = GNUNET_strdup(head->short_name);
+    char *head_sep = strchr (head_stripped, '_');
+    if (NULL != head_sep)
+       head_sep[0] = '\0';
+    if (0 == strcmp (head_stripped, stripped))
+    {
+       GNUNET_free (head_stripped);
+      break;
+    }
+    GNUNET_free (head_stripped);
     head = head->next;
   }
   GNUNET_free (stripped);