[PATCH libXmu v2 1/2] Remove support for XA_IP_ADDRESS

Matthieu Herrb matthieu at herrb.eu
Tue Jan 14 21:23:15 UTC 2020


This code has a number of issues:
- It doesn't support IPv6 https://bugs.freedesktop.org/show_bug.cgi?id=7611
- The IP address is set by the selection owner so it doesn't bring any
  security for anyone querying the selection
- The extra DNS query that it does is problematic in some sandboxed
  environments (like OpenBSD's pledge
  https://marc.info/?l=openbsd-bugs&m=157842725819911&w=2)

Signed-off-by: Matthieu Herrb <matthieu at herrb.eu>
---
 src/CvtStdSel.c | 30 ++----------------------------
 1 file changed, 2 insertions(+), 28 deletions(-)

diff --git a/src/CvtStdSel.c b/src/CvtStdSel.c
index 36423c6..5089623 100644
--- a/src/CvtStdSel.c
+++ b/src/CvtStdSel.c
@@ -54,7 +54,6 @@ in this Software without prior written authorization from The Open Group.
 #ifndef SYSVNET
 #ifdef WIN32
 #include <X11/Xwinsock.h>
-#define XOS_USE_MTSAFE_NETDBAPI
 #else
 #ifndef Lynx
 #include <sys/socket.h>
@@ -64,7 +63,6 @@ in this Software without prior written authorization from The Open Group.
 #endif
 #define XOS_USE_XT_LOCKING
 #endif
-#define X_INCLUDE_NETDB_H
 #include <X11/Xos_r.h>
 #endif
 
@@ -219,29 +217,6 @@ XmuConvertStandardSelection(Widget w, Time time, Atom *selection, Atom *target,
 	*format = 8;
 	return True;
     }
-#if defined(TCPCONN)
-    if (*target == XA_IP_ADDRESS(d)) {
-	char hostname[1024];
-#ifdef XTHREADS_NEEDS_BYNAMEPARAMS
-	_Xgethostbynameparams hparams;
-#endif
-	struct hostent *hostp;
-
-	hostname[0] = '\0';
-	(void) XmuGetHostname (hostname, sizeof hostname);
-
-	if ((hostp = _XGethostbyname (hostname,hparams)) == NULL)
-	    return False;
-
-	if (hostp->h_addrtype != AF_INET) return False;
-	*length = hostp->h_length;
-	*value = XtMalloc(*length);
-	(void) memmove (*value, hostp->h_addr, *length);
-	*type = XA_NET_ADDRESS(d);
-	*format = 8;
-	return True;
-    }
-#endif
     if (*target == XA_USER(d)) {
 	char *name = (char*)getenv("USER");
 	if (name == NULL) return False;
@@ -308,15 +283,14 @@ XmuConvertStandardSelection(Widget w, Time time, Atom *selection, Atom *target,
     }
     if (*target == XA_TARGETS(d)) {
 #if defined(unix)
-#  define NUM_TARGETS 8
-#else
 #  define NUM_TARGETS 7
+#else
+#  define NUM_TARGETS 6
 #endif
 	Atom* std_targets = (Atom*)XtMalloc(NUM_TARGETS*sizeof(Atom));
 	int i = 0;
 	std_targets[i++] = XA_TIMESTAMP(d);
 	std_targets[i++] = XA_HOSTNAME(d);
-	std_targets[i++] = XA_IP_ADDRESS(d);
 	std_targets[i++] = XA_USER(d);
 	std_targets[i++] = XA_CLASS(d);
 	std_targets[i++] = XA_NAME(d);
-- 
2.24.1



More information about the xorg-devel mailing list