瀏覽代碼

Added AI_NUMERICSERV flag and check if the string is not just a number
when AI_NUMERICSERV flag set.

Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono@st.com>

Carmelo Amoroso 17 年之前
父節點
當前提交
0a595705ec
共有 1 個文件被更改,包括 6 次插入2 次删除
  1. 6 2
      libc/inet/getaddrinfo.c

+ 6 - 2
libc/inet/getaddrinfo.c

@@ -823,7 +823,7 @@ getaddrinfo (const char *name, const char *service,
 	hints = &default_hints;
 
     if (hints->ai_flags & ~(AI_PASSIVE|AI_CANONNAME|AI_NUMERICHOST|
-			    AI_ADDRCONFIG|AI_V4MAPPED|AI_ALL))
+			    AI_ADDRCONFIG|AI_V4MAPPED|AI_NUMERICSERV|AI_ALL))
 	return EAI_BADFLAGS;
 
     if ((hints->ai_flags & AI_CANONNAME) && name == NULL)
@@ -834,8 +834,12 @@ getaddrinfo (const char *name, const char *service,
 	char *c;
 	gaih_service.name = service;
 	gaih_service.num = strtoul (gaih_service.name, &c, 10);
-	if (*c)
+	if (*c != '\0') {
+		if (hints->ai_flags & AI_NUMERICSERV)
+			return EAI_NONAME;
+
 	    gaih_service.num = -1;
+	}
 	else
 	    /*
 	     * Can't specify a numerical socket unless a protocol