Returns now GNUNET_SYSERR
[oweals/gnunet.git] / src / util / service.c
index 3423b58cb56d717d4f4d52e586a621238a161c79..25a9b08dc3ef3032341491c1bd01346d4878684f 100644 (file)
@@ -867,6 +867,16 @@ GNUNET_SERVICE_get_server_addresses (const char *serviceName,
                                                            &unixpath));
 
       /* probe UNIX support */
+      struct sockaddr_un s_un;
+      if (strlen(unixpath) >= sizeof(s_un.sun_path))
+      {
+         GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                  _("UNIXPATH `%s' too long, maximum length is %llu\n"),unixpath, sizeof(s_un.sun_path));
+             GNUNET_free_non_null (hostname);
+             GNUNET_free (unixpath);
+         return GNUNET_SYSERR;
+      }
+
       desc = GNUNET_NETWORK_socket_create (AF_UNIX, SOCK_STREAM, 0);
       if (NULL == desc)
         {