adbd: unconditionally call setgroups
We should ensure that the appropriate supplementary groups are set, regardless of whether we're running UID=0 or UID=shell. Change-Id: I3a1624a574102be08176a41f9c7eb5f82af2b3e5
This commit is contained in:
parent
0ef3fa24fb
commit
e5cbf4e044
36
adb/adb.c
36
adb/adb.c
|
@ -1344,29 +1344,29 @@ int adb_main(int is_daemon, int server_port)
|
|||
" unchanged.\n");
|
||||
}
|
||||
|
||||
/* add extra groups:
|
||||
** AID_ADB to access the USB driver
|
||||
** AID_LOG to read system logs (adb logcat)
|
||||
** AID_INPUT to diagnose input issues (getevent)
|
||||
** AID_INET to diagnose network issues (netcfg, ping)
|
||||
** AID_GRAPHICS to access the frame buffer
|
||||
** AID_NET_BT and AID_NET_BT_ADMIN to diagnose bluetooth (hcidump)
|
||||
** AID_SDCARD_R to allow reading from the SD card
|
||||
** AID_SDCARD_RW to allow writing to the SD card
|
||||
** AID_NET_BW_STATS to read out qtaguid statistics
|
||||
*/
|
||||
gid_t groups[] = { AID_ADB, AID_LOG, AID_INPUT, AID_INET, AID_GRAPHICS,
|
||||
AID_NET_BT, AID_NET_BT_ADMIN, AID_SDCARD_R, AID_SDCARD_RW,
|
||||
AID_NET_BW_STATS };
|
||||
if (setgroups(sizeof(groups)/sizeof(groups[0]), groups) != 0) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* don't listen on a port (default 5037) if running in secure mode */
|
||||
/* don't run as root if we are running in secure mode */
|
||||
if (should_drop_privileges()) {
|
||||
drop_capabilities_bounding_set_if_needed();
|
||||
|
||||
/* add extra groups:
|
||||
** AID_ADB to access the USB driver
|
||||
** AID_LOG to read system logs (adb logcat)
|
||||
** AID_INPUT to diagnose input issues (getevent)
|
||||
** AID_INET to diagnose network issues (netcfg, ping)
|
||||
** AID_GRAPHICS to access the frame buffer
|
||||
** AID_NET_BT and AID_NET_BT_ADMIN to diagnose bluetooth (hcidump)
|
||||
** AID_SDCARD_R to allow reading from the SD card
|
||||
** AID_SDCARD_RW to allow writing to the SD card
|
||||
** AID_NET_BW_STATS to read out qtaguid statistics
|
||||
*/
|
||||
gid_t groups[] = { AID_ADB, AID_LOG, AID_INPUT, AID_INET, AID_GRAPHICS,
|
||||
AID_NET_BT, AID_NET_BT_ADMIN, AID_SDCARD_R, AID_SDCARD_RW,
|
||||
AID_NET_BW_STATS };
|
||||
if (setgroups(sizeof(groups)/sizeof(groups[0]), groups) != 0) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* then switch user and group to "shell" */
|
||||
if (setgid(AID_SHELL) != 0) {
|
||||
exit(1);
|
||||
|
|
Loading…
Reference in New Issue