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
|
// run as user's UID, but with privileges from root
|
||||||
SETEUID(0);
|
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);
|
s = rresvport(&lport);
|
||||||
|
#endif
|
||||||
|
|
||||||
signal(SIGALRM, connect_timeout);
|
signal(SIGALRM, connect_timeout);
|
||||||
if (timeout > 0)
|
if (timeout > 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user