--- ipfw3-2012.orig/glue.h +++ ipfw3-2012/glue.h @@ -102,6 +102,24 @@ #include /* struct in_addr */ #include /* struct in6_addr */ #include + +#ifdef CONFIG_UIDGID_STRICT_TYPE_CHECKS +#include + +#define KUID_TO_SUID(x) (x.val) +#define KGID_TO_SGID(x) (x.val) +#define SUID_TO_KUID(x) (KUIDT_INIT(x)) +#define SGID_TO_KGID(x) (KGIDT_INIT(x)) + +#else + +#define KUID_TO_SUID(x) (x) +#define KGID_TO_SGID(x) (x) +#define SUID_TO_KUID(x) (x) +#define SGID_TO_KGID(x) (x) + +#endif + /* * LIST_HEAD in queue.h conflict with linux/list.h * some previous linux include need list.h definition --- ipfw3-2012.orig/kipfw/ipfw2_mod.c +++ ipfw3-2012/kipfw/ipfw2_mod.c @@ -737,8 +737,8 @@ if ((1<sk_callback_lock); if (sk->sk_socket && sk->sk_socket->file) { - u->uid = sk->sk_socket->file->_CURR_UID; - u->gid = sk->sk_socket->file->_CURR_GID; + u->uid = KUID_TO_SUID(sk->sk_socket->file->_CURR_UID.val); + u->gid = KGID_TO_SGID(sk->sk_socket->file->_CURR_GID.val); } read_unlock_bh(&sk->sk_callback_lock); } else {