--- nmap-3.48/Makefile.in.orig Fri Oct 10 17:21:02 2003 +++ nmap-3.48/Makefile.in Fri Oct 10 17:21:17 2003 @@ -28,7 +28,7 @@ # CFLAGS = $(DEFS) $(INCLS) STATIC = LDFLAGS = @LDFLAGS@ $(STATIC) -LIBS = @LIBNBASE_LIBS@ @LIBNSOCK_LIBS@ @LIBPCRE_LIBS@ @LIBPCAP_LIBS@ @OPENSSL_LIBS@ @LIBS@ +LIBS = @LIBNBASE_LIBS@ @LIBNSOCK_LIBS@ @LIBPCRE_LIBS@ @LIBPCAP_LIBS@ @OPENSSL_LIBS@ @LIBS@ -lcap # LIBS = -lefence @LIBS@ # LIBS = -lrmalloc @LIBS@ SHTOOL = ./shtool diff -ur nmap-3.30.orig/NmapOps.cc nmap-3.30/NmapOps.cc --- nmap-3.30.orig/NmapOps.cc Mon Apr 28 20:37:13 2003 +++ nmap-3.30/NmapOps.cc Thu Jul 3 10:50:56 2003 @@ -46,6 +46,7 @@ #include "nmap.h" #include "nbase.h" #include "NmapOps.h" +#include NmapOps o; @@ -120,6 +121,12 @@ isr00t = 1; # else isr00t = !(geteuid()); + if (!o.isr00t) { + cap_t caps = cap_get_proc(); + cap_flag_value_t val = CAP_CLEAR; + cap_get_flag(caps, CAP_NET_RAW, CAP_EFFECTIVE, &val); + o.isr00t = (val == CAP_SET); + } # endif // __amigaos__ #else winip_init(); /* wrapper for all win32 initialization */ diff -ur nmap-3.30.orig/nmapfe/Makefile.in nmap-3.30/nmapfe/Makefile.in --- nmap-3.30.orig/nmapfe/Makefile.in Fri Apr 18 06:12:54 2003 +++ nmap-3.30/nmapfe/Makefile.in Thu Jul 3 10:50:56 2003 @@ -76,7 +76,7 @@ CPPFLAGS = @CPPFLAGS@ STATIC = LDFLAGS = @LDFLAGS@ $(STATIC) -LIBS = @LIBS@ +LIBS = @LIBS@ -lcap nmapfe_OBJECTS = nmapfe.o nmapfe_sig.o nmapfe_error.o nmapfe_LDADD = $(LDADD) nmapfe_DEPENDENCIES = diff -ur nmap-3.30.orig/nmapfe/nmapfe.c nmap-3.30/nmapfe/nmapfe.c --- nmap-3.30.orig/nmapfe/nmapfe.c Fri Jun 27 06:40:32 2003 +++ nmap-3.30/nmapfe/nmapfe.c Thu Jul 3 10:54:25 2003 @@ -74,6 +74,8 @@ #include "nmapfe.h" #include "nmapfe_sig.h" +#include + /* Keep this global */ struct NmapFEoptions opt; @@ -243,6 +245,12 @@ #define VERSION NMAP_VERSION #else opt.uid = getuid(); + if (opt.uid) { + cap_t caps = cap_get_proc(); + cap_flag_value_t val = CAP_CLEAR; + cap_get_flag(caps, CAP_NET_RAW, CAP_EFFECTIVE, &val); + if (val == CAP_SET) opt.uid = 0; + } #endif