| From 8cea0778f0fb838a7bd764be08f15e1494e5a0b2 Mon Sep 17 00:00:00 2001 |
| From: Mike Frysinger <vapier@gentoo.org> |
| Date: Fri, 19 Nov 2010 23:50:27 -0500 |
| Subject: [PATCH 4/4] NO_PERROR: control overriding of perror() symbol |
| |
| Doing static builds of portmap might fail when the C library's perror() |
| function is pulled in and collides with portmap's definition. So add a |
| flag to control the local override. |
| |
| Signed-off-by: Mike Frysinger <vapier@gentoo.org> |
| --- |
| Makefile | 5 +++++ |
| README | 1 + |
| 2 files changed, 6 insertions(+), 0 deletions(-) |
| |
| diff --git a/Makefile b/Makefile |
| index 9df5574..1635107 100644 |
| --- a/Makefile |
| +++ b/Makefile |
| @@ -32,6 +32,11 @@ ifneq ($(NO_FORK),) |
| CPPFLAGS += -DNO_FORK |
| endif |
| |
| +# For static builds, we might hit perror() symbol clashes |
| +ifneq ($(NO_PERROR),) |
| +CPPFLAGS += -DNO_PERROR |
| +endif |
| + |
| # Comment out if your RPC library does not allocate privileged ports for |
| # requests from processes with root privilege, or the new portmap will |
| # always reject requests to register/unregister services on privileged |
| diff --git a/README b/README |
| index bda1707..05861a8 100644 |
| --- a/README |
| +++ b/README |
| @@ -19,6 +19,7 @@ There is no "./configure", just use "make". |
| Some make variable can be used to control compilation. |
| |
| NO_FORK= if non-empty, don't use fork (good for nommu systems) |
| + NO_PERROR= if non-empty, don't override the perror() func |
| NO_PIE= if non-empty, don't build portmap as a PIE |
| NO_TCP_WRAPPER= if non-empty, don't use tcp_wrappers |
| USE_DNS= if set, tcp_wrappers can check peers based on hostname |
| diff --git a/portmap.c b/portmap.c |
| index 2a98881..94abc64 100644 |
| --- a/portmap.c |
| +++ b/portmap.c |
| @@ -391,12 +391,14 @@ main(int argc, char **argv) |
| abort(); |
| } |
| |
| +#ifndef NO_PERROR |
| /* need to override perror calls in rpc library */ |
| void perror(const char *what) |
| { |
| |
| syslog(LOG_ERR, "%s: %m", what); |
| } |
| +#endif |
| |
| static struct pmaplist * |
| find_service(u_long prog, u_long vers, u_long prot) |
| -- |
| 1.7.3.1 |
| |