forked from mirrors/nixpkgs
network-manager: patch for libnl-3.2.25
This commit is contained in:
parent
07e80c6d98
commit
c2740b5017
|
@ -49,6 +49,7 @@ stdenv.mkDerivation rec {
|
||||||
inherit avahi dnsmasq ppp bind;
|
inherit avahi dnsmasq ppp bind;
|
||||||
glibc = stdenv.gcc.libc;
|
glibc = stdenv.gcc.libc;
|
||||||
})
|
})
|
||||||
|
./libnl-3.2.25.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
preInstall =
|
preInstall =
|
||||||
|
|
61
pkgs/tools/networking/network-manager/libnl-3.2.25.patch
Normal file
61
pkgs/tools/networking/network-manager/libnl-3.2.25.patch
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
diff --git a/src/nm-netlink-monitor.c b/src/nm-netlink-monitor.c
|
||||||
|
index ba8053e..5ac39d3 100644
|
||||||
|
--- a/src/nm-netlink-monitor.c
|
||||||
|
+++ b/src/nm-netlink-monitor.c
|
||||||
|
@@ -177,40 +177,15 @@ link_msg_handler (struct nl_object *obj, void *arg)
|
||||||
|
static int
|
||||||
|
event_msg_recv (struct nl_msg *msg, void *arg)
|
||||||
|
{
|
||||||
|
- struct nl_sock *nlh = arg;
|
||||||
|
- struct nlmsghdr *hdr = nlmsg_hdr (msg);
|
||||||
|
struct ucred *creds = nlmsg_get_creds (msg);
|
||||||
|
- const struct sockaddr_nl *snl;
|
||||||
|
- guint32 local_port;
|
||||||
|
- gboolean accept_msg = FALSE;
|
||||||
|
-
|
||||||
|
- /* Only messages sent from the kernel */
|
||||||
|
- if (!creds || creds->uid != 0) {
|
||||||
|
- nm_log_dbg (LOGD_HW, "ignoring netlink message from UID %d",
|
||||||
|
- creds ? creds->uid : -1);
|
||||||
|
- return NL_SKIP;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- snl = nlmsg_get_src (msg);
|
||||||
|
- g_assert (snl);
|
||||||
|
-
|
||||||
|
- /* Accept any messages from the kernel */
|
||||||
|
- if (hdr->nlmsg_pid == 0 || snl->nl_pid == 0)
|
||||||
|
- accept_msg = TRUE;
|
||||||
|
|
||||||
|
- /* And any multicast message directed to our netlink PID, since multicast
|
||||||
|
- * currently requires CAP_ADMIN to use.
|
||||||
|
- */
|
||||||
|
- local_port = nl_socket_get_local_port (nlh);
|
||||||
|
- if ((hdr->nlmsg_pid == local_port) && snl->nl_groups)
|
||||||
|
- accept_msg = TRUE;
|
||||||
|
-
|
||||||
|
- if (accept_msg == FALSE) {
|
||||||
|
- nm_log_dbg (LOGD_HW, "ignoring netlink message from PID %d (local PID %d, multicast %d)",
|
||||||
|
- hdr->nlmsg_pid,
|
||||||
|
- local_port,
|
||||||
|
- (hdr->nlmsg_flags & NLM_F_MULTI));
|
||||||
|
- return NL_SKIP;
|
||||||
|
+ if (!creds || creds->pid || creds->uid || creds->gid) {
|
||||||
|
+ if (creds)
|
||||||
|
+ nm_log_dbg (LOGD_HW, "netlink: received non-kernel message (pid %d uid %d gid %d)",
|
||||||
|
+ creds->pid, creds->uid, creds->gid);
|
||||||
|
+ else
|
||||||
|
+ nm_log_dbg (LOGD_HW, "netlink: received message without credentials");
|
||||||
|
+ return NL_STOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
return NL_OK;
|
||||||
|
@@ -285,7 +260,7 @@ nlh_setup (struct nl_sock *nlh,
|
||||||
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
|
- nl_socket_modify_cb (nlh, NL_CB_MSG_IN, NL_CB_CUSTOM, event_msg_recv, cb_data);
|
||||||
|
+ nl_socket_modify_cb (nlh, NL_CB_MSG_IN, NL_CB_CUSTOM, event_msg_recv, NULL);
|
||||||
|
|
||||||
|
if (valid_func)
|
||||||
|
nl_socket_modify_cb (nlh, NL_CB_VALID, NL_CB_CUSTOM, valid_func, cb_data);
|
Loading…
Reference in a new issue