summaryrefslogtreecommitdiff
path: root/libgtop2-2.40.0-deprecated-networking.patch
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-06 02:25:51 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-06 02:25:51 +0000
commit6e31f66bb2a682f768f74ab9310401f3c37cd479 (patch)
treee26c56acdf447be934f4706117cb5511b35e6759 /libgtop2-2.40.0-deprecated-networking.patch
parent7d0ac656ec009249445798ba596466f95998ff42 (diff)
automatic import of libgtop2openeuler24.03_LTS
Diffstat (limited to 'libgtop2-2.40.0-deprecated-networking.patch')
-rw-r--r--libgtop2-2.40.0-deprecated-networking.patch167
1 files changed, 167 insertions, 0 deletions
diff --git a/libgtop2-2.40.0-deprecated-networking.patch b/libgtop2-2.40.0-deprecated-networking.patch
new file mode 100644
index 0000000..5cc7010
--- /dev/null
+++ b/libgtop2-2.40.0-deprecated-networking.patch
@@ -0,0 +1,167 @@
+From 3cb07d9c440d7bf0c4f8877a68a8d7467b97a238 Mon Sep 17 00:00:00 2001
+From: David King <amigadave@amigadave.com>
+Date: Mon, 6 Jun 2022 17:30:40 +0100
+Subject: [PATCH] Avoid some deprecated networking functions
+
+rpminspect trips up on some old networking functions in libgtop, which
+are mentioned as deprecated in the Linux man pages.
+
+inet_ntoa() only works on IPv4 addresses, whereas the newer inet_ntop()
+works on both IPv4 and IPv6 addresses, so use inet_ntop() instead.
+Similarly, use getaddrinfo() rather than gethostbyname(), and avoid
+inet_addr() entirely.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=2050712
+---
+ examples/netload.c | 10 +++-------
+ src/daemon/gnuserv.c | 20 ++++++++++++++------
+ sysdeps/common/gnuslib.c | 16 ++++++++++------
+ 3 files changed, 27 insertions(+), 19 deletions(-)
+
+diff --git a/examples/netload.c b/examples/netload.c
+index 979b245d..520b5040 100644
+--- a/examples/netload.c
++++ b/examples/netload.c
+@@ -66,7 +66,7 @@ main (int argc, char *argv [])
+ glibtop_netload netload;
+ unsigned method, count, port;
+ struct in_addr addr, subnet;
+- char *address_string, *subnet_string;
++ char address_string[INET_ADDRSTRLEN], subnet_string[INET_ADDRSTRLEN];
+ char address6_string[INET6_ADDRSTRLEN], prefix6_string[INET6_ADDRSTRLEN];
+ char *hwaddress_string;
+ char buffer [BUFSIZ];
+@@ -105,9 +105,8 @@ main (int argc, char *argv [])
+ addr.s_addr = netload.address;
+ subnet.s_addr = netload.subnet;
+
+- address_string = g_strdup (inet_ntoa (addr));
+- subnet_string = g_strdup (inet_ntoa (subnet));
+-
++ inet_ntop (AF_INET, &addr, address_string, INET_ADDRSTRLEN);
++ inet_ntop (AF_INET, &subnet, subnet_string, INET_ADDRSTRLEN);
+ inet_ntop (AF_INET6, netload.address6, address6_string, INET6_ADDRSTRLEN);
+ inet_ntop (AF_INET6, netload.prefix6, prefix6_string, INET6_ADDRSTRLEN);
+
+@@ -153,9 +152,6 @@ main (int argc, char *argv [])
+ hwaddress_string);
+
+
+- g_free (address_string);
+- g_free (subnet_string);
+-
+ glibtop_close ();
+
+ exit (0);
+diff --git a/src/daemon/gnuserv.c b/src/daemon/gnuserv.c
+index 78ebb643..26e9dd92 100644
+--- a/src/daemon/gnuserv.c
++++ b/src/daemon/gnuserv.c
+@@ -392,6 +392,7 @@ handle_internet_request (int ls)
+ int s;
+ size_t addrlen = sizeof (struct sockaddr_in);
+ struct sockaddr_in peer; /* for peer socket address */
++ char addrstr[addrlen];
+ pid_t pid;
+
+ memset ((char *) &peer, 0, sizeof (struct sockaddr_in));
+@@ -401,21 +402,24 @@ handle_internet_request (int ls)
+ exit (1);
+ }
+
++ /* TODO: Check errno. */
++ inet_ntop (AF_INET, &peer, addrstr, addrlen);
++
+ if (verbose_output)
+ syslog_message (LOG_INFO, "Connection was made from %s port %u.",
+- inet_ntoa (peer.sin_addr), ntohs (peer.sin_port));
++ addrstr, ntohs (peer.sin_port));
+
+ /* Check that access is allowed - if not return crud to the client */
+ if (!permitted (peer.sin_addr.s_addr, s)) {
+ close (s);
+ syslog_message (LOG_CRIT, "Refused connection from %s.",
+- inet_ntoa (peer.sin_addr));
++ addrstr);
+ return;
+ } /* if */
+
+ if (verbose_output)
+ syslog_message (LOG_INFO, "Accepted connection from %s port %u.",
+- inet_ntoa (peer.sin_addr), ntohs (peer.sin_port));
++ addrstr, ntohs (peer.sin_port));
+
+ pid = fork ();
+
+@@ -436,7 +440,7 @@ handle_internet_request (int ls)
+
+ if (verbose_output)
+ syslog_message (LOG_INFO, "Closed connection to %s port %u.",
+- inet_ntoa (peer.sin_addr), ntohs (peer.sin_port));
++ addrstr, ntohs (peer.sin_port));
+
+ _exit (0);
+ } /* handle_internet_request */
+@@ -560,6 +564,7 @@ main (int argc, char **argv)
+ if (invoked_from_inetd) {
+ size_t addrlen = sizeof (struct sockaddr_in);
+ struct sockaddr_in peer;
++ char addrstr[addrlen];
+
+ memset ((char *) &peer, 0, sizeof (struct sockaddr_in));
+
+@@ -568,15 +573,18 @@ main (int argc, char **argv)
+ exit (1);
+ }
+
++ /* TODO: Check errno. */
++ inet_ntop (AF_INET, &peer, addrstr, addrlen);
++
+ if (verbose_output)
+ syslog_message (LOG_INFO, "Connection was made from %s port %u.",
+- inet_ntoa (peer.sin_addr), ntohs (peer.sin_port));
++ addrstr, ntohs (peer.sin_port));
+
+ /* Check that access is allowed - if not return crud to the client */
+ if (!permitted (peer.sin_addr.s_addr, 0)) {
+ close (0);
+ syslog_message (LOG_CRIT, "Refused connection from %s.",
+- inet_ntoa (peer.sin_addr));
++ addrstr);
+ exit (1);
+ }
+
+diff --git a/sysdeps/common/gnuslib.c b/sysdeps/common/gnuslib.c
+index 79295485..3f994f2c 100644
+--- a/sysdeps/common/gnuslib.c
++++ b/sysdeps/common/gnuslib.c
+@@ -202,16 +202,20 @@ connect_to_unix_server (void)
+ long
+ glibtop_internet_addr (const char *host)
+ {
+- struct hostent *hp; /* pointer to host info for remote host */
++ /* specify IPv4 and TCP */
++ struct addrinfo hints = { AF_INET, SOCK_STREAM, };
++ struct addrinfo *result;/* pointer to host info for remote host */
+ IN_ADDR numeric_addr; /* host address */
+
+- numeric_addr = inet_addr (host);
+- if (!NUMERIC_ADDR_ERROR)
++ if (getaddrinfo (NULL, host, &hints, &result) == 0) {
++ /* Take only the first address. */
++ struct sockaddr_in *res = (struct sockaddr_in *)result->ai_addr;
++ numeric_addr = res->sin_addr.s_addr;
++ freeaddrinfo (result);
+ return numeric_addr;
+- else if ((hp = gethostbyname (host)) != NULL)
+- return ((struct in_addr *) (hp->h_addr))->s_addr;
++ }
+ else {
+- glibtop_warn_io ("gethostbyname (%s)", host);
++ glibtop_warn_io ("getaddrinfo (%s)", host);
+ return -1;
+ }
+
+--
+2.36.1
+