Remove support for XA_IP_ADDRESS from XmuConvertStandardSelection()

This cause problems with pledged applications like xterm, as reported by
Benjamin Baier and also lacks support for IPv6 as shown in
Xorg bug #7611 https://bugs.freedesktop.org/show_bug.cgi?id=7611

Discussed with jca@ and deraadt@ and submitted upstreams
This commit is contained in:
matthieu 2020-01-14 21:01:32 +00:00
parent 6869a5f294
commit b9ee46e1d5

View File

@ -64,7 +64,6 @@ in this Software without prior written authorization from The Open Group.
#endif #endif
#define XOS_USE_XT_LOCKING #define XOS_USE_XT_LOCKING
#endif #endif
#define X_INCLUDE_NETDB_H
#include <X11/Xos_r.h> #include <X11/Xos_r.h>
#endif #endif
@ -219,29 +218,6 @@ XmuConvertStandardSelection(Widget w, Time time, Atom *selection, Atom *target,
*format = 8; *format = 8;
return True; 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)) { if (*target == XA_USER(d)) {
char *name = (char*)getenv("USER"); char *name = (char*)getenv("USER");
if (name == NULL) return False; if (name == NULL) return False;
@ -310,13 +286,12 @@ XmuConvertStandardSelection(Widget w, Time time, Atom *selection, Atom *target,
#if defined(unix) #if defined(unix)
# define NUM_TARGETS 8 # define NUM_TARGETS 8
#else #else
# define NUM_TARGETS 7 # define NUM_TARGETS 6
#endif #endif
Atom* std_targets = (Atom*)XtMalloc(NUM_TARGETS*sizeof(Atom)); Atom* std_targets = (Atom*)XtMalloc(NUM_TARGETS*sizeof(Atom));
int i = 0; int i = 0;
std_targets[i++] = XA_TIMESTAMP(d); std_targets[i++] = XA_TIMESTAMP(d);
std_targets[i++] = XA_HOSTNAME(d); std_targets[i++] = XA_HOSTNAME(d);
std_targets[i++] = XA_IP_ADDRESS(d);
std_targets[i++] = XA_USER(d); std_targets[i++] = XA_USER(d);
std_targets[i++] = XA_CLASS(d); std_targets[i++] = XA_CLASS(d);
std_targets[i++] = XA_NAME(d); std_targets[i++] = XA_NAME(d);