فهرست منبع

fix getservby*() with null pointer for protocol argument

not sure this is the best fix but it should work
Rich Felker 12 سال پیش
والد
کامیت
06650b9684
2فایلهای تغییر یافته به همراه8 افزوده شده و 0 حذف شده
  1. 4 0
      src/network/getservbyname_r.c
  2. 4 0
      src/network/getservbyport_r.c

+ 4 - 0
src/network/getservbyname_r.c

@@ -12,6 +12,10 @@ int getservbyname_r(const char *name, const char *prots,
 	struct addrinfo *ai, hint = { .ai_family = AF_INET };
 	int i;
 
+	if (!prots) return -(
+		getservbyname_r(name, "tcp", se, buf, buflen, res)
+		&& getservbyname_r(name, "udp", se, buf, buflen, res) );
+
 	/* Align buffer */
 	i = (uintptr_t)buf & sizeof(char *)-1;
 	if (!i) i = sizeof(char *);

+ 4 - 0
src/network/getservbyport_r.c

@@ -15,6 +15,10 @@ int getservbyport_r(int port, const char *prots,
 		.sin_port = port,
 	};
 
+	if (!prots) return -(
+		getservbyport_r(port, "tcp", se, buf, buflen, res)
+		&& getservbyport_r(port, "udp", se, buf, buflen, res) );
+
 	/* Align buffer */
 	i = (uintptr_t)buf & sizeof(char *)-1;
 	if (!i) i = sizeof(char *);