From 212a1567a263b99fc5d2a32da281cae940df8c8b Mon Sep 17 00:00:00 2001 From: Steve Conklin Date: Mon, 11 Feb 2008 15:33:43 +0000 Subject: [PATCH] New patch that fixes BZ 431766 --- netlabel_tools-0.17-newlibnl.patch | 220 ++++++++++++++++++----------- netlabel_tools.spec | 2 +- 2 files changed, 141 insertions(+), 81 deletions(-) diff --git a/netlabel_tools-0.17-newlibnl.patch b/netlabel_tools-0.17-newlibnl.patch index 5931896..88eda66 100644 --- a/netlabel_tools-0.17-newlibnl.patch +++ b/netlabel_tools-0.17-newlibnl.patch @@ -1,5 +1,6 @@ ---- netlabel_tools-0.17/libnetlabel/netlabel_comm.c.spc 2008-02-07 08:57:38.000000000 -0600 -+++ netlabel_tools-0.17/libnetlabel/netlabel_comm.c 2008-02-07 09:02:01.000000000 -0600 +diff -up netlabel_tools-0.17/libnetlabel/netlabel_internal.h.libnl netlabel_tools-0.17/libnetlabel/netlabel_internal.h +--- netlabel_tools-0.17/libnetlabel/netlabel_internal.h.libnl 2006-09-28 17:18:05.000000000 -0500 ++++ netlabel_tools-0.17/libnetlabel/netlabel_internal.h 2008-02-11 09:24:06.000000000 -0600 @@ -8,19 +8,17 @@ /* * (c) Copyright Hewlett-Packard Development Company, L.P., 2006 @@ -27,86 +28,14 @@ * */ -@@ -100,7 +98,10 @@ - goto open_failure; - - /* set the netlink handle properties */ --#if LIBNL_VERSION >= 1006 -+#if LIBNL_VERSION >= 1008 -+ nl_socket_set_peer_port(hndl->nl_hndl, 0); -+ nl_set_passcred(hndl->nl_hndl, 1); -+#elif LIBNL_VERSION == 1006 - nl_handle_set_peer_pid(hndl->nl_hndl, 0); - nl_set_passcred(hndl->nl_hndl, 1); - #endif -@@ -177,7 +178,11 @@ - * is waiting to be read from the handle */ - timeout.tv_sec = nlcomm_read_timeout; - timeout.tv_usec = 0; -+#if LIBNL_VERSION >= 1008 -+ nl_fd = nl_socket_get_fd(hndl->nl_hndl); -+#else - nl_fd = nl_handle_get_fd(hndl->nl_hndl); -+#endif - FD_ZERO(&read_fds); - FD_SET(nl_fd, &read_fds); - ret_val = select(nl_fd + 1, &read_fds, NULL, NULL, &timeout); -@@ -250,7 +255,11 @@ - * is waiting to be read from the handle */ - timeout.tv_sec = nlcomm_read_timeout; - timeout.tv_usec = 0; -+#if LIBNL_VERSION >= 1008 -+ nl_fd = nl_socket_get_fd(hndl->nl_hndl); -+#else - nl_fd = nl_handle_get_fd(hndl->nl_hndl); -+#endif - FD_ZERO(&read_fds); - FD_SET(nl_fd, &read_fds); - ret_val = select(nl_fd + 1, &read_fds, NULL, NULL, &timeout); -@@ -349,6 +358,6 @@ - #if LIBNL_VERSION == 1005 - return nl_send_auto_complete(hndl->nl_hndl, nlbl_msg_nlhdr(msg)); - #elif LIBNL_VERSION >= 1006 -- return = nl_send_auto_complete(hndl->nl_hndl, msg); -+ return nl_send_auto_complete(hndl->nl_hndl, msg); - #endif - } ---- netlabel_tools-0.17/libnetlabel/netlabel_internal.h.spc 2008-02-07 08:58:27.000000000 -0600 -+++ netlabel_tools-0.17/libnetlabel/netlabel_internal.h 2008-02-07 09:02:01.000000000 -0600 -@@ -8,19 +8,17 @@ - /* - * (c) Copyright Hewlett-Packard Development Company, L.P., 2006 - * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -+ * This program is free software: you can redistribute it and/or modify -+ * it under the terms of version 2 of the GNU General Public License as -+ * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See -- * the GNU General Public License for more details. -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software -- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ * along with this program. If not, see . - * - */ - -@@ -37,11 +35,12 @@ +@@ -37,11 +35,13 @@ struct nlbl_handle_s { /* Specify which version of libnl we are using */ /* 1.0-pre5 => 1005 */ /* 1.0-pre6 => 1006 */ -#define LIBNL_VERSION 1005 +/* 1.0-pre8 => 1008 */ -+#define LIBNL_VERSION 1008 ++/* 1.1 => 1100 */ ++#define LIBNL_VERSION 1100 /* XXX - this whole block will most likely go away once libnl supports Generic * Netlink */ @@ -115,8 +44,9 @@ /* Generic Netlink message header */ struct genlmsghdr { ---- netlabel_tools-0.17/libnetlabel/netlabel_msg.c.spc 2008-02-07 08:57:55.000000000 -0600 -+++ netlabel_tools-0.17/libnetlabel/netlabel_msg.c 2008-02-07 09:02:01.000000000 -0600 +diff -up netlabel_tools-0.17/libnetlabel/netlabel_msg.c.libnl netlabel_tools-0.17/libnetlabel/netlabel_msg.c +--- netlabel_tools-0.17/libnetlabel/netlabel_msg.c.libnl 2006-09-28 17:18:05.000000000 -0500 ++++ netlabel_tools-0.17/libnetlabel/netlabel_msg.c 2008-02-11 09:22:13.000000000 -0600 @@ -8,19 +8,17 @@ /* * (c) Copyright Hewlett-Packard Development Company, L.P., 2006 @@ -144,7 +74,7 @@ * */ -@@ -52,7 +50,11 @@ +@@ -52,7 +50,11 @@ nlbl_msg *nlbl_msg_new(void) struct genlmsghdr genl_hdr; /* create the message with a simple netlink header */ @@ -156,3 +86,133 @@ if (msg == NULL) goto msg_new_failure; +diff -up netlabel_tools-0.17/libnetlabel/netlabel_comm.c.libnl netlabel_tools-0.17/libnetlabel/netlabel_comm.c +--- netlabel_tools-0.17/libnetlabel/netlabel_comm.c.libnl 2006-09-28 17:18:05.000000000 -0500 ++++ netlabel_tools-0.17/libnetlabel/netlabel_comm.c 2008-02-11 09:24:06.000000000 -0600 +@@ -8,28 +8,33 @@ + /* + * (c) Copyright Hewlett-Packard Development Company, L.P., 2006 + * +- * This program is free software; you can redistribute it and/or modify +- * it under the terms of the GNU General Public License as published by +- * the Free Software Foundation; either version 2 of the License, or +- * (at your option) any later version. ++ * This program is free software: you can redistribute it and/or modify ++ * it under the terms of version 2 of the GNU General Public License as ++ * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, +- * but WITHOUT ANY WARRANTY; without even the implied warranty of +- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +- * the GNU General Public License for more details. ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License +- * along with this program; if not, write to the Free Software +- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ * along with this program. If not, see . + * + */ + + #include + #include + #include ++#include + #include ++ ++#ifndef __USE_GNU ++#define __USE_GNU + #include +-#include ++#undef __USE_GNU ++#else ++#include ++#endif + + #include + +@@ -100,7 +105,10 @@ nlbl_handle *nlbl_comm_open(void) + goto open_failure; + + /* set the netlink handle properties */ +-#if LIBNL_VERSION >= 1006 ++#if LIBNL_VERSION >= 1008 ++ nl_socket_set_peer_port(hndl->nl_hndl, 0); ++ nl_set_passcred(hndl->nl_hndl, 1); ++#elif LIBNL_VERSION == 1006 + nl_handle_set_peer_pid(hndl->nl_hndl, 0); + nl_set_passcred(hndl->nl_hndl, 1); + #endif +@@ -177,7 +185,11 @@ int nlbl_comm_recv_raw(nlbl_handle *hndl + * is waiting to be read from the handle */ + timeout.tv_sec = nlcomm_read_timeout; + timeout.tv_usec = 0; ++#if LIBNL_VERSION >= 1008 ++ nl_fd = nl_socket_get_fd(hndl->nl_hndl); ++#else + nl_fd = nl_handle_get_fd(hndl->nl_hndl); ++#endif + FD_ZERO(&read_fds); + FD_SET(nl_fd, &read_fds); + ret_val = select(nl_fd + 1, &read_fds, NULL, NULL, &timeout); +@@ -188,14 +200,12 @@ int nlbl_comm_recv_raw(nlbl_handle *hndl + + /* perform the read operation */ + *data = NULL; +-#if LIBNL_VERSION == 1005 +- ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data); ++#if LIBNL_VERSION >= 1006 ++ ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data, &creds); + if (ret_val < 0) + return ret_val; +- /* XXX - avoid a compiler warning about unused variables */ +- creds = NULL; +-#elif LIBNL_VERSION >= 1006 +- ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data, &creds); ++#else ++ ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data); + if (ret_val < 0) + return ret_val; + #endif +@@ -250,7 +260,11 @@ int nlbl_comm_recv(nlbl_handle *hndl, nl + * is waiting to be read from the handle */ + timeout.tv_sec = nlcomm_read_timeout; + timeout.tv_usec = 0; ++#if LIBNL_VERSION >= 1008 ++ nl_fd = nl_socket_get_fd(hndl->nl_hndl); ++#else + nl_fd = nl_handle_get_fd(hndl->nl_hndl); ++#endif + FD_ZERO(&read_fds); + FD_SET(nl_fd, &read_fds); + ret_val = select(nl_fd + 1, &read_fds, NULL, NULL, &timeout); +@@ -260,12 +274,16 @@ int nlbl_comm_recv(nlbl_handle *hndl, nl + return -EAGAIN; + + /* perform the read operation */ +-#if LIBNL_VERSION == 1005 +- ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, &data); ++#if LIBNL_VERSION >= 1100 ++ ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, &data, &creds); + if (ret_val < 0) + return ret_val; + #elif LIBNL_VERSION >= 1006 +- ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, &data, &creds); ++ ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data, &creds); ++ if (ret_val < 0) ++ return ret_val; ++#else ++ ret_val = nl_recv(hndl->nl_hndl, &peer_nladdr, data); + if (ret_val < 0) + return ret_val; + #endif +@@ -349,6 +367,6 @@ int nlbl_comm_send(nlbl_handle *hndl, nl + #if LIBNL_VERSION == 1005 + return nl_send_auto_complete(hndl->nl_hndl, nlbl_msg_nlhdr(msg)); + #elif LIBNL_VERSION >= 1006 +- return = nl_send_auto_complete(hndl->nl_hndl, msg); ++ return nl_send_auto_complete(hndl->nl_hndl, msg); + #endif + } diff --git a/netlabel_tools.spec b/netlabel_tools.spec index 19541c2..ff5dcfe 100644 --- a/netlabel_tools.spec +++ b/netlabel_tools.spec @@ -29,7 +29,7 @@ configure the kernel subsystem. %patch1 -p1 # Upstream patch. %patch2 -p0 -%patch3 -p1 +%patch3 -p1 -b .libnl %build # Don't use _smp_mflags, it's small and a hand crafted Makefile