dtprintinfo: don't use rresvport() on Linux systems using the musl C library
Disable binding a privileged client port with rresvport() on Linux systems using the musl C library, where that function is unsupported. If there is a need for XPrint support, a BSD-licensed implementation of rresvport() is available in the portable edition of OpenSSH.
This commit is contained in:
committed by
Jon Trulson
parent
f7227e1b74
commit
9a695e9411
@@ -195,8 +195,16 @@ int ConnectToPrintServer(const char *rhost, int timeout)
|
||||
// run as user's UID, but with privileges from root
|
||||
SETEUID(0);
|
||||
|
||||
// Try connecting to the server.
|
||||
// Try connecting to the server from a privileged port.
|
||||
/* FIXME: Test for the presence of rresvport and provide a substitute
|
||||
* if necessary. Linux C library support:
|
||||
* dietlibc: no rresvport, defines __dietlibc__
|
||||
* musl: no rresvport
|
||||
* uclibc: rresvport, defines __GLIBC__
|
||||
*/
|
||||
#if !defined(__linux__) || defined(__GLIBC__)
|
||||
s = rresvport(&lport);
|
||||
#endif
|
||||
|
||||
signal(SIGALRM, connect_timeout);
|
||||
if (timeout > 0)
|
||||
|
||||
Reference in New Issue
Block a user