tcp-wrappers: remove size_t.patch

1. it introduces bug in 64bit big endian process with __GLIBC__, At that
condition, size_t is 8byte, and the third parameter of getpeername is
socklen_t which is 4 byte. As a result, getpeername sees third parameter
is always 0, and can not return right value.

The similar program is below, the output is 0, not 9 on PPC64 cpu
	main()
	{
		long aa=9;
		printf("%d \n", *((int *)&aa));
	}

2. The correct fix is to change getpeername/getsockopt/recvfrom.. last
parameter type from int to socklen_t, but to simplify, we can remove
size_t.patch, since the size of int is same as socklen_t in 32bit/64bit
cpu. and size_t.patch only change three places, there are other places
which uses int, and work well.

2. Fedora, redhat el4 do not use this patch, but Debian uses it, does not
find why this patch is written, maybe it is gcc legency issue which does
not exist.

(From OE-Core rev: 6c418ec278335c93692c2e19ec0b7b84b471e2b9)

Signed-off-by: Roy.Li <rongqing.li@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Roy.Li 2013-02-02 16:18:22 +08:00 committed by Richard Purdie
parent 7f484df0ea
commit 8f262e8b7e
2 changed files with 1 additions and 46 deletions

View File

@ -1,44 +0,0 @@
Upstream-Status: Backport
diff -ruN tcp_wrappers_7.6.orig/fix_options.c tcp_wrappers_7.6/fix_options.c
--- tcp_wrappers_7.6.orig/fix_options.c 2003-08-21 03:41:33.000000000 +0200
+++ tcp_wrappers_7.6/fix_options.c 2003-08-21 03:41:27.000000000 +0200
@@ -38,7 +38,11 @@
#ifdef IP_OPTIONS
unsigned char optbuf[BUFFER_SIZE / 3], *cp;
char lbuf[BUFFER_SIZE], *lp;
+#ifdef __GLIBC__
+ size_t optsize = sizeof(optbuf), ipproto;
+#else
int optsize = sizeof(optbuf), ipproto;
+#endif
struct protoent *ip;
int fd = request->fd;
unsigned int opt;
diff -ruN tcp_wrappers_7.6.orig/socket.c tcp_wrappers_7.6/socket.c
--- tcp_wrappers_7.6.orig/socket.c 2003-08-21 03:41:33.000000000 +0200
+++ tcp_wrappers_7.6/socket.c 2003-08-21 03:40:51.000000000 +0200
@@ -90,7 +90,11 @@
static struct sockaddr_in client;
static struct sockaddr_in server;
#endif
+#ifdef __GLIBC__
+ size_t len;
+#else
int len;
+#endif
char buf[BUFSIZ];
int fd = request->fd;
@@ -421,7 +425,11 @@
#else
struct sockaddr_in sin;
#endif
+#ifdef __GLIBC__
+ size_t size = sizeof(sin);
+#else
int size = sizeof(sin);
+#endif
/*
* Eat up the not-yet received datagram. Some systems insist on a

View File

@ -5,7 +5,7 @@ SECTION = "console/network"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://DISCLAIMER;md5=071bd69cb78b18888ea5e3da5c3127fa"
PR ="r9"
PR ="r10"
PACKAGES = "${PN}-dbg libwrap libwrap-doc libwrap-dev libwrap-staticdev ${PN} ${PN}-doc"
@ -36,7 +36,6 @@ SRC_URI = "ftp://ftp.porcupine.org/pub/security/tcp_wrappers_${PV}.tar.gz \
file://safe_finger.patch \
file://sig_fix.patch \
file://siglongjmp.patch \
file://size_t.patch \
file://tcpdchk_libwrapped.patch \
file://ldflags.patch \
\