diff options
author | Nick Kralevich <nnk@google.com> | 2012-11-28 15:49:25 -0800 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2012-11-28 15:49:25 -0800 |
commit | 360f71adc9c5fcf6dafb1d4258d4a6c1e5022dd2 (patch) | |
tree | 7e7b3060182a0c9d776cdb398c9e349470b5ced3 | |
parent | d758e6092bbd733f608ea49ffdd00f0d421b4fc7 (diff) | |
parent | 959c2543dd4335f2b19daa636ffde813043654f7 (diff) | |
download | ping6-jb-mr2-release.tar.gz |
Merge "Include ping6 in userdebug builds."android-4.3_r3.1android-4.3_r3android-4.3_r2.3android-4.3_r2.2android-4.3_r2.1android-4.3_r2android-4.3_r1.1android-4.3_r1android-4.3_r0.9.1android-4.3_r0.9android-4.3.1_r1tools_r22.2tools_r22jb-mr2.0.0-releasejb-mr2.0-releasejb-mr2-releasejb-mr2-devjb-mr1-dev-plus-aosp
-rw-r--r-- | Android.mk | 2 | ||||
-rw-r--r-- | ping6.c | 24 |
2 files changed, 25 insertions, 1 deletions
@@ -3,5 +3,5 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= ping6.c LOCAL_MODULE := ping6 -LOCAL_MODULE_TAGS := eng +LOCAL_MODULE_TAGS := debug include $(BUILD_EXECUTABLE) @@ -131,6 +131,8 @@ __RCSID("$NetBSD: ping6.c,v 1.73 2010/09/20 11:49:48 ahoka Exp $"); #include <unistd.h> #include <poll.h> +#include <private/android_filesystem_config.h> + #ifdef IPSEC #include <netinet6/ah.h> #include <netinet6/ipsec.h> @@ -298,6 +300,23 @@ char *nigroup(char *); void usage(void); int +isInSupplementaryGroup(gid_t group) +{ + int numgroups, i; + gid_t groups[sysconf(_SC_NGROUPS_MAX) + 1]; + numgroups = getgroups(sizeof(groups) / sizeof(groups[0]), groups); + if (numgroups < 0) { + perror("getgroups"); + return 0; + } + for (i = 0; i < numgroups; i++) { + if (group == groups[i]) + return 1; + } + return 0; +} + +int main(int argc, char *argv[]) { struct itimerval itimer; @@ -331,6 +350,11 @@ main(int argc, char *argv[]) int mflag = 0; #endif + if (getuid() != 0 && !isInSupplementaryGroup(AID_INET)) { + fprintf(stderr, "%s: not root or in group AID_INET\n", argv[0]); + exit(3); + } + /* just to be sure */ memset(&smsghdr, 0, sizeof(smsghdr)); memset(&smsgiov, 0, sizeof(smsgiov)); |