Christian Wiese
14 years ago
committed by
Alejandro Mery
5 changed files with 264 additions and 0 deletions
@ -0,0 +1,52 @@
|
||||
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
||||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
||||
#
|
||||
# Filename: package/.../uclibc/uClibc-0.9.31-dnslookup-use-after-free.patch
|
||||
# Copyright (C) 2010 The OpenSDE Project
|
||||
#
|
||||
# More information can be found in the files COPYING and README.
|
||||
#
|
||||
# This patch file is dual-licensed. It is available under the license the
|
||||
# patched project is licensed under, as long as it is an OpenSource license
|
||||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or 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.
|
||||
# --- SDE-COPYRIGHT-NOTE-END ---
|
||||
|
||||
From eb1d8c8289f466ba3ad10b9a88ab2e426b8a9dc7 Mon Sep 17 00:00:00 2001
|
||||
From: Gabor Juhos <juhosg@openwrt.org>
|
||||
Date: Tue, 6 Apr 2010 09:55:19 +0200
|
||||
Subject: [PATCH] Fix use-after-free bug in __dns_lookup
|
||||
|
||||
If the type of the first answer does not match with the requested type,
|
||||
then the dotted name was freed. If there are no further answers in
|
||||
the DNS reply, this pointer was used later on in the same function.
|
||||
Additionally it is passed to the caller, and caused strange
|
||||
behaviour.
|
||||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
|
||||
---
|
||||
libc/inet/resolv.c | 4 +---
|
||||
1 files changed, 1 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c
|
||||
index 056539f..9459199 100644
|
||||
--- a/libc/inet/resolv.c
|
||||
+++ b/libc/inet/resolv.c
|
||||
@@ -1517,10 +1517,8 @@ int attribute_hidden __dns_lookup(const char *name,
|
||||
memcpy(a, &ma, sizeof(ma));
|
||||
if (a->atype != T_SIG && (NULL == a->buf || (type != T_A && type != T_AAAA)))
|
||||
break;
|
||||
- if (a->atype != type) {
|
||||
- free(a->dotted);
|
||||
+ if (a->atype != type)
|
||||
continue;
|
||||
- }
|
||||
a->add_count = h.ancount - j - 1;
|
||||
if ((a->rdlength + sizeof(struct in_addr*)) * a->add_count > a->buflen)
|
||||
break;
|
||||
--
|
||||
1.7.0
|
||||
|
@ -0,0 +1,33 @@
|
||||
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
||||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
||||
#
|
||||
# Filename: package/.../uclibc/uClibc-0.9.31-fix-error-locale-utf-8.patch
|
||||
# Copyright (C) 2010 The OpenSDE Project
|
||||
#
|
||||
# More information can be found in the files COPYING and README.
|
||||
#
|
||||
# This patch file is dual-licensed. It is available under the license the
|
||||
# patched project is licensed under, as long as it is an OpenSource license
|
||||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or 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.
|
||||
# --- SDE-COPYRIGHT-NOTE-END ---
|
||||
|
||||
---
|
||||
extra/locale/gen_wc8bit.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: uClibc-0.9.31/extra/locale/gen_wc8bit.c
|
||||
===================================================================
|
||||
--- uClibc-0.9.31.orig/extra/locale/gen_wc8bit.c
|
||||
+++ uClibc-0.9.31/extra/locale/gen_wc8bit.c
|
||||
@@ -120,7 +120,7 @@
|
||||
}
|
||||
|
||||
locale_failure:
|
||||
- printf("could not find a UTF8 locale ... please enable en_US.UTF-8\n");
|
||||
+ fprintf(stderr, "could not find a UTF8 locale ... please enable en_US.UTF-8\n");
|
||||
return EXIT_FAILURE;
|
||||
locale_success:
|
||||
pclose(fp);
|
@ -0,0 +1,50 @@
|
||||
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
||||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
||||
#
|
||||
# Filename: package/.../uclibc/uClibc-0.9.31-fix-fcntl64-for-64-bit-targets.patch
|
||||
# Copyright (C) 2010 The OpenSDE Project
|
||||
#
|
||||
# More information can be found in the files COPYING and README.
|
||||
#
|
||||
# This patch file is dual-licensed. It is available under the license the
|
||||
# patched project is licensed under, as long as it is an OpenSource license
|
||||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or 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.
|
||||
# --- SDE-COPYRIGHT-NOTE-END ---
|
||||
|
||||
From 6f1daaaf2d94c1e6184add44eda38b0781b88cf0 Mon Sep 17 00:00:00 2001
|
||||
From: Rob Landley <rob@landley.net>
|
||||
Date: Sun, 16 May 2010 21:41:36 +0000
|
||||
Subject: Fix fcntl64 for 64 bit targets.
|
||||
|
||||
64 bit targets often don't have a separate fcntl64() system call, because they don't need one.
|
||||
|
||||
Signed-off-by: Rob Landley <rob@landley.net>
|
||||
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
|
||||
---
|
||||
diff --git a/include/fcntl.h b/include/fcntl.h
|
||||
index e37073f..3cfb25f 100644
|
||||
--- a/include/fcntl.h
|
||||
+++ b/include/fcntl.h
|
||||
@@ -73,7 +73,7 @@ __BEGIN_DECLS
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
-#ifndef __USE_FILE_OFFSET64
|
||||
+#if !defined(__USE_FILE_OFFSET64) || defined(__LP64__)
|
||||
extern int fcntl (int __fd, int __cmd, ...);
|
||||
libc_hidden_proto(fcntl)
|
||||
#else
|
||||
@@ -83,7 +83,7 @@ extern int __REDIRECT (fcntl, (int __fd, int __cmd, ...), fcntl64);
|
||||
# define fcntl fcntl64
|
||||
# endif
|
||||
#endif
|
||||
-#ifdef __USE_LARGEFILE64
|
||||
+#if defined(__USE_LARGEFILE64) && !defined(__LP64__)
|
||||
extern int fcntl64 (int __fd, int __cmd, ...);
|
||||
libc_hidden_proto(fcntl64)
|
||||
#endif
|
||||
--
|
||||
cgit v0.8.2.1
|
@ -0,0 +1,56 @@
|
||||
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
||||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
||||
#
|
||||
# Filename: package/.../uclibc/uClibc-0.9.31-more-workarounds-GCC-PR32219.patch
|
||||
# Copyright (C) 2010 The OpenSDE Project
|
||||
#
|
||||
# More information can be found in the files COPYING and README.
|
||||
#
|
||||
# This patch file is dual-licensed. It is available under the license the
|
||||
# patched project is licensed under, as long as it is an OpenSource license
|
||||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or 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.
|
||||
# --- SDE-COPYRIGHT-NOTE-END ---
|
||||
|
||||
From aa67771881d65373da448ad5f7a8393f3a1d9469 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
|
||||
Date: Wed, 30 Jun 2010 14:46:37 +0300
|
||||
Subject: [PATCH] more workarounds for GCC PR32219
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Commit 2e53dd645d5348f207cec7f8595969dc566c5a55 workarounds GCC
|
||||
bug when accessing _locale_init and _stdio_init. We need the same
|
||||
fix for __errno_location and __h_errno_location otherwise we crash
|
||||
calling null with static and non-threaded builds.
|
||||
|
||||
Signed-off-by: Timo Teräs <timo.teras@iki.fi>
|
||||
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
|
||||
---
|
||||
libc/misc/internals/__uClibc_main.c | 4 ++--
|
||||
1 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c
|
||||
index 3f09ad2..58f6643 100644
|
||||
--- a/libc/misc/internals/__uClibc_main.c
|
||||
+++ b/libc/misc/internals/__uClibc_main.c
|
||||
@@ -447,11 +447,11 @@ void __uClibc_main(int (*main)(int, char **, char **), int argc,
|
||||
* have resulted in errno being set nonzero, so set it to 0 before
|
||||
* we call main.
|
||||
*/
|
||||
- if (likely(__errno_location!=NULL))
|
||||
+ if (likely(not_null_ptr(__errno_location)))
|
||||
*(__errno_location()) = 0;
|
||||
|
||||
/* Set h_errno to 0 as well */
|
||||
- if (likely(__h_errno_location!=NULL))
|
||||
+ if (likely(not_null_ptr(__h_errno_location)))
|
||||
*(__h_errno_location()) = 0;
|
||||
|
||||
#if defined HAVE_CLEANUP_JMP_BUF && defined __UCLIBC_HAS_THREADS_NATIVE__
|
||||
--
|
||||
1.7.1
|
||||
|
@ -0,0 +1,73 @@
|
||||
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
|
||||
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
|
||||
#
|
||||
# Filename: package/.../uclibc/uClibc-0.9.31-workaround-GCC-PR32219.patch
|
||||
# Copyright (C) 2010 The OpenSDE Project
|
||||
#
|
||||
# More information can be found in the files COPYING and README.
|
||||
#
|
||||
# This patch file is dual-licensed. It is available under the license the
|
||||
# patched project is licensed under, as long as it is an OpenSource license
|
||||
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or 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.
|
||||
# --- SDE-COPYRIGHT-NOTE-END ---
|
||||
|
||||
From 2e53dd645d5348f207cec7f8595969dc566c5a55 Mon Sep 17 00:00:00 2001
|
||||
From: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Date: Mon, 17 May 2010 15:56:19 +0200
|
||||
Subject: [PATCH] workaround GCC PR32219
|
||||
|
||||
we ended up calling 0
|
||||
Fixes bug #1033
|
||||
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
|
||||
---
|
||||
libc/misc/internals/__uClibc_main.c | 15 +++++++++++++--
|
||||
1 files changed, 13 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c
|
||||
index f9e1244..4ee4443 100644
|
||||
--- a/libc/misc/internals/__uClibc_main.c
|
||||
+++ b/libc/misc/internals/__uClibc_main.c
|
||||
@@ -105,6 +105,17 @@ _pthread_cleanup_pop_restore(struct _pthread_cleanup_buffer *__buffer,
|
||||
|
||||
#endif /* !SHARED */
|
||||
|
||||
+/* Defeat compiler optimization which assumes function addresses are never NULL */
|
||||
+static __always_inline int not_null_ptr(const void *p)
|
||||
+{
|
||||
+ const void *q;
|
||||
+ __asm__ (""
|
||||
+ : "=r" (q) /* output */
|
||||
+ : "0" (p) /* input */
|
||||
+ );
|
||||
+ return q != 0;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Prototypes.
|
||||
*/
|
||||
@@ -254,7 +265,7 @@ void __uClibc_init(void)
|
||||
|
||||
#ifdef __UCLIBC_HAS_LOCALE__
|
||||
/* Initialize the global locale structure. */
|
||||
- if (likely(_locale_init!=NULL))
|
||||
+ if (likely(not_null_ptr(_locale_init)))
|
||||
_locale_init();
|
||||
#endif
|
||||
|
||||
@@ -264,7 +275,7 @@ void __uClibc_init(void)
|
||||
* Thus we get a nice size savings because the stdio functions
|
||||
* won't be pulled into the final static binary unless used.
|
||||
*/
|
||||
- if (likely(_stdio_init != NULL))
|
||||
+ if (likely(not_null_ptr(_stdio_init)))
|
||||
_stdio_init();
|
||||
|
||||
}
|
||||
--
|
||||
1.7.1
|
||||
|
Loading…
Reference in new issue