[Socket] use getaddrinfo to fill socketaddr accepted/tizen/unified/20230424.185346
authorJaeyun Jung <jy1210.jung@samsung.com>
Fri, 21 Apr 2023 08:12:58 +0000 (17:12 +0900)
committerSangjung Woo <again4you@gmail.com>
Fri, 21 Apr 2023 08:30:10 +0000 (17:30 +0900)
Fix svace issue. The function gethostbyname is unsafe function, use getaddrinfo instead.

Signed-off-by: Jaeyun Jung <jy1210.jung@samsung.com>
src/libnnstreamer-edge/nnstreamer-edge-internal.c

index 93abb21865171b9044ee6989768ccabb1d9fc92a..d38932542662c18d6057d4dd2caa68b2a4e783a3 100644 (file)
@@ -178,12 +178,25 @@ _fill_socket_addr (struct sockaddr_in *saddr, const char *host, const int port)
   saddr->sin_port = htons (port);
 
   if ((saddr->sin_addr.s_addr = inet_addr (host)) == INADDR_NONE) {
-    struct hostent *ent = gethostbyname (host);
+    int ret;
+    char *port_str = NULL;
+    struct addrinfo hints;
+    struct addrinfo *addrs = NULL;
 
-    if (!ent)
+    memset (&hints, 0, sizeof (hints));
+    hints.ai_family = AF_INET;
+    hints.ai_socktype = SOCK_STREAM;
+
+    if (port > 0)
+      port_str = nns_edge_strdup_printf ("%d", port);
+    ret = getaddrinfo (host, port_str, &hints, &addrs);
+    SAFE_FREE (port_str);
+
+    if (ret != 0 || addrs == NULL)
       return false;
 
-    memmove (&saddr->sin_addr, ent->h_addr, ent->h_length);
+    memcpy (saddr, addrs->ai_addr, addrs->ai_addrlen);
+    freeaddrinfo (addrs);
   }
 
   return true;