Loading CleanSpec.mk +1 −0 Original line number Diff line number Diff line Loading @@ -54,3 +54,4 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/bin/reboot) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/default.prop) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/recovery/root/default.prop) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/EXECUTABLES/lmkd_intermediates/import_includes) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libsysutils_intermediates/import_includes) include/cutils/uevent.h +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ extern "C" { int uevent_open_socket(int buf_sz, bool passcred); ssize_t uevent_kernel_multicast_recv(int socket, void *buffer, size_t length); ssize_t uevent_kernel_multicast_uid_recv(int socket, void *buffer, size_t length, uid_t *uid); ssize_t uevent_kernel_recv(int socket, void *buffer, size_t length, bool require_group, uid_t *uid); #ifdef __cplusplus } Loading include/sysutils/NetlinkEvent.h +1 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ public: bool parseIfInfoMessage(const struct nlmsghdr *nh); bool parseIfAddrMessage(const struct nlmsghdr *nh); bool parseUlogPacketMessage(const struct nlmsghdr *nh); bool parseNfPacketMessage(struct nlmsghdr *nh); bool parseRtMessage(const struct nlmsghdr *nh); bool parseNdUserOptMessage(const struct nlmsghdr *nh); }; Loading include/sysutils/NetlinkListener.h +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ class NetlinkListener : public SocketListener { public: static const int NETLINK_FORMAT_ASCII = 0; static const int NETLINK_FORMAT_BINARY = 1; static const int NETLINK_FORMAT_BINARY_UNICAST = 2; #if 1 /* temporary version until we can get Motorola to update their Loading libcutils/uevent.c +17 −9 Original line number Diff line number Diff line Loading @@ -31,12 +31,12 @@ */ ssize_t uevent_kernel_multicast_recv(int socket, void *buffer, size_t length) { uid_t user = -1; return uevent_kernel_multicast_uid_recv(socket, buffer, length, &user); uid_t uid = -1; return uevent_kernel_multicast_uid_recv(socket, buffer, length, &uid); } /** * Like the above, but passes a uid_t in by reference. In the event that this * Like the above, but passes a uid_t in by pointer. In the event that this * fails due to a bad uid check, the uid_t will be set to the uid of the * socket's peer. * Loading @@ -44,8 +44,12 @@ ssize_t uevent_kernel_multicast_recv(int socket, void *buffer, size_t length) * returns -1, sets errno to EIO, and sets "user" to the UID associated with the * message. If the peer UID cannot be determined, "user" is set to -1." */ ssize_t uevent_kernel_multicast_uid_recv(int socket, void *buffer, size_t length, uid_t *user) ssize_t uevent_kernel_multicast_uid_recv(int socket, void *buffer, size_t length, uid_t *uid) { return uevent_kernel_recv(socket, buffer, length, true, uid); } ssize_t uevent_kernel_recv(int socket, void *buffer, size_t length, bool require_group, uid_t *uid) { struct iovec iov = { buffer, length }; struct sockaddr_nl addr; Loading @@ -60,7 +64,7 @@ ssize_t uevent_kernel_multicast_uid_recv(int socket, void *buffer, 0, }; *user = -1; *uid = -1; ssize_t n = recvmsg(socket, &hdr, 0); if (n <= 0) { return n; Loading @@ -73,14 +77,18 @@ ssize_t uevent_kernel_multicast_uid_recv(int socket, void *buffer, } struct ucred *cred = (struct ucred *)CMSG_DATA(cmsg); *user = cred->uid; *uid = cred->uid; if (cred->uid != 0) { /* ignoring netlink message from non-root user */ goto out; } if (addr.nl_groups == 0 || addr.nl_pid != 0) { /* ignoring non-kernel or unicast netlink message */ if (addr.nl_pid != 0) { /* ignore non-kernel */ goto out; } if (require_group && addr.nl_groups == 0) { /* ignore unicast messages when requested */ goto out; } Loading Loading
CleanSpec.mk +1 −0 Original line number Diff line number Diff line Loading @@ -54,3 +54,4 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/bin/reboot) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/root/default.prop) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/recovery/root/default.prop) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/EXECUTABLES/lmkd_intermediates/import_includes) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libsysutils_intermediates/import_includes)
include/cutils/uevent.h +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ extern "C" { int uevent_open_socket(int buf_sz, bool passcred); ssize_t uevent_kernel_multicast_recv(int socket, void *buffer, size_t length); ssize_t uevent_kernel_multicast_uid_recv(int socket, void *buffer, size_t length, uid_t *uid); ssize_t uevent_kernel_recv(int socket, void *buffer, size_t length, bool require_group, uid_t *uid); #ifdef __cplusplus } Loading
include/sysutils/NetlinkEvent.h +1 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ public: bool parseIfInfoMessage(const struct nlmsghdr *nh); bool parseIfAddrMessage(const struct nlmsghdr *nh); bool parseUlogPacketMessage(const struct nlmsghdr *nh); bool parseNfPacketMessage(struct nlmsghdr *nh); bool parseRtMessage(const struct nlmsghdr *nh); bool parseNdUserOptMessage(const struct nlmsghdr *nh); }; Loading
include/sysutils/NetlinkListener.h +1 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ class NetlinkListener : public SocketListener { public: static const int NETLINK_FORMAT_ASCII = 0; static const int NETLINK_FORMAT_BINARY = 1; static const int NETLINK_FORMAT_BINARY_UNICAST = 2; #if 1 /* temporary version until we can get Motorola to update their Loading
libcutils/uevent.c +17 −9 Original line number Diff line number Diff line Loading @@ -31,12 +31,12 @@ */ ssize_t uevent_kernel_multicast_recv(int socket, void *buffer, size_t length) { uid_t user = -1; return uevent_kernel_multicast_uid_recv(socket, buffer, length, &user); uid_t uid = -1; return uevent_kernel_multicast_uid_recv(socket, buffer, length, &uid); } /** * Like the above, but passes a uid_t in by reference. In the event that this * Like the above, but passes a uid_t in by pointer. In the event that this * fails due to a bad uid check, the uid_t will be set to the uid of the * socket's peer. * Loading @@ -44,8 +44,12 @@ ssize_t uevent_kernel_multicast_recv(int socket, void *buffer, size_t length) * returns -1, sets errno to EIO, and sets "user" to the UID associated with the * message. If the peer UID cannot be determined, "user" is set to -1." */ ssize_t uevent_kernel_multicast_uid_recv(int socket, void *buffer, size_t length, uid_t *user) ssize_t uevent_kernel_multicast_uid_recv(int socket, void *buffer, size_t length, uid_t *uid) { return uevent_kernel_recv(socket, buffer, length, true, uid); } ssize_t uevent_kernel_recv(int socket, void *buffer, size_t length, bool require_group, uid_t *uid) { struct iovec iov = { buffer, length }; struct sockaddr_nl addr; Loading @@ -60,7 +64,7 @@ ssize_t uevent_kernel_multicast_uid_recv(int socket, void *buffer, 0, }; *user = -1; *uid = -1; ssize_t n = recvmsg(socket, &hdr, 0); if (n <= 0) { return n; Loading @@ -73,14 +77,18 @@ ssize_t uevent_kernel_multicast_uid_recv(int socket, void *buffer, } struct ucred *cred = (struct ucred *)CMSG_DATA(cmsg); *user = cred->uid; *uid = cred->uid; if (cred->uid != 0) { /* ignoring netlink message from non-root user */ goto out; } if (addr.nl_groups == 0 || addr.nl_pid != 0) { /* ignoring non-kernel or unicast netlink message */ if (addr.nl_pid != 0) { /* ignore non-kernel */ goto out; } if (require_group && addr.nl_groups == 0) { /* ignore unicast messages when requested */ goto out; } Loading