Merge changes Id0fe51d0,Ie3b3907b
* changes: Support building diagnose_usb against musl Support building fs_mgr against musl
This commit is contained in:
commit
e0461422e1
|
@ -19,7 +19,9 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
#include <android-base/stringprintf.h>
|
#include <android-base/stringprintf.h>
|
||||||
|
|
||||||
|
@ -45,9 +47,25 @@ static std::string GetUdevProblem() {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// getgroups(2) indicates that the GNU group_member(3) may not check the egid so we check it
|
int ngroups = getgroups(0, nullptr);
|
||||||
// additionally just to be sure.
|
if (ngroups < 0) {
|
||||||
if (group_member(plugdev_group->gr_gid) || getegid() == plugdev_group->gr_gid) {
|
perror("failed to get groups list size");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<gid_t> groups(ngroups);
|
||||||
|
ngroups = getgroups(groups.size(), groups.data());
|
||||||
|
if (ngroups < 0) {
|
||||||
|
perror("failed to get groups list");
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
groups.resize(ngroups);
|
||||||
|
|
||||||
|
// getgroups(2) indicates that the egid may not be included so we check it additionally just
|
||||||
|
// to be sure.
|
||||||
|
if (std::find(groups.begin(), groups.end(), plugdev_group->gr_gid) != groups.end() ||
|
||||||
|
getegid() == plugdev_group->gr_gid) {
|
||||||
// The user is in plugdev so the problem is likely with the udev rules.
|
// The user is in plugdev so the problem is likely with the udev rules.
|
||||||
return "missing udev rules? user is in the plugdev group";
|
return "missing udev rules? user is in the plugdev group";
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <sys/sysmacros.h>
|
#include <sys/sysmacros.h>
|
||||||
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
|
|
Loading…
Reference in New Issue