File mtr-0.82-capabilities.patch of Package mtr
Common subdirectories: mtr-0.85_p20140126.old/autom4te.cache and mtr-0.85_p20140126/autom4te.cache
diff -u mtr-0.85_p20140126.old/configure.ac mtr-0.85_p20140126/configure.ac
--- mtr-0.85_p20140126.old/configure.ac 2014-09-02 16:58:46.951616922 +0200
+++ mtr-0.85_p20140126/configure.ac 2014-09-02 17:06:50.288651060 +0200
@@ -26,6 +26,10 @@
AC_CHECK_LIB(termcap, tgetent)
AC_CHECK_LIB(tinfo, tgetent)
+AC_CHECK_LIB(cap, cap_init,
+ AC_DEFINE(HAVE_CAPABILITIES, 1, capability support)
+ LIBS="$LIBS -lcap", AC_MSG_WARN(No capability support available.))
+
AC_CHECK_FUNC(initscr, ,
AC_CHECK_LIB(ncurses, initscr, ,
AC_CHECK_LIB(curses, initscr, ,
Common subdirectories: mtr-0.85_p20140126.old/.git and mtr-0.85_p20140126/.git
Common subdirectories: mtr-0.85_p20140126.old/img and mtr-0.85_p20140126/img
diff -u mtr-0.85_p20140126.old/mtr.c mtr-0.85_p20140126/mtr.c
--- mtr-0.85_p20140126.old/mtr.c 2014-09-02 16:58:46.951616922 +0200
+++ mtr-0.85_p20140126/mtr.c 2014-09-02 17:06:50.288651060 +0200
@@ -46,6 +46,9 @@
#include "asn.h"
#include "version.h"
+#ifdef HAVE_CAPABILITIES
+#include <sys/capability.h>
+#endif
#ifdef ENABLE_IPV6
#define DEFAULT_AF AF_UNSPEC
@@ -555,6 +558,18 @@
exit( EXIT_FAILURE );
}
+ /* ported from ping */
+#ifdef HAVE_CAPABILITIES
+ {
+ cap_t caps = cap_init();
+ if (cap_set_proc(caps) < 0) {
+ fprintf (stderr, "mtr: Unable to drop capabilities.\n");
+ exit(1);
+ }
+ cap_free(caps);
+ }
+#endif
+
/* Now drop to user permissions */
if (setgid(getgid()) || setuid(getuid())) {
fprintf (stderr, "mtr: Unable to drop permissions.\n");