From 99784517f29405774132ca27b97f297fdad3c9e5 Mon Sep 17 00:00:00 2001 From: Jaeyun Jung Date: Fri, 21 Apr 2023 17:12:58 +0900 Subject: [PATCH] [Socket] use getaddrinfo to fill socketaddr Fix svace issue. The function gethostbyname is unsafe function, use getaddrinfo instead. Signed-off-by: Jaeyun Jung --- .../nnstreamer-edge-internal.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/libnnstreamer-edge/nnstreamer-edge-internal.c b/src/libnnstreamer-edge/nnstreamer-edge-internal.c index 93abb21..d389325 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-internal.c +++ b/src/libnnstreamer-edge/nnstreamer-edge-internal.c @@ -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; -- 2.34.1