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 <matth...@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 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel