Fix allocation size to include length of PROTO.
[kopensolaris-gnu/glibc.git] / nss / nss_files / files-service.c
index 5fb38e2..186b8a2 100644 (file)
@@ -39,16 +39,17 @@ LINE_PARSER
 
 #include GENERIC
 
-DB_LOOKUP (servbyname, 1 + strlen (name), (".%s/%s", name, proto),
+DB_LOOKUP (servbyname, 2 + strlen (name) + strlen (proto),
+          (".%s/%s", name, proto),
           {
-            /* Must match both protocol and name.  */
-            if (strcmp (result->s_proto, proto))
+            /* Must match both protocol (if specified) and name.  */
+            if (proto != NULL && strcmp (result->s_proto, proto))
               continue;
             LOOKUP_NAME (s_name, s_aliases)
           },
           const char *name, const char *proto)
 
-DB_LOOKUP (servbyport, 20, ("=%d/%s", port, proto),
+DB_LOOKUP (servbyport, 21 + strlen (proto), ("=%d/%s", port, proto),
           {
             /* Must match both port and protocol.  */
             if (result->s_port == port