From 266aaaf46e136d63532a797fd8604e30d4350443 Mon Sep 17 00:00:00 2001 From: Michael Deutschmann Date: Wed, 17 Mar 2010 13:36:34 +0100 Subject: lift printf field width limit uClibc mishandles printf field width limits larger than 40959, as a result of misguided overflow-protection code. This causes spurious test failures with GNU coreutils, which depends on "%65536s" and "%20000000f" working according to spec. Signed-off-by: Michael Deutschmann Signed-off-by: Bernhard Reutner-Fischer --- libc/stdio/_vfprintf.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'libc/stdio') diff --git a/libc/stdio/_vfprintf.c b/libc/stdio/_vfprintf.c index f288cb501..6fa8ecb8d 100644 --- a/libc/stdio/_vfprintf.c +++ b/libc/stdio/_vfprintf.c @@ -161,9 +161,6 @@ /* Now controlled by uClibc_stdio.h. */ /* #define __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__ */ -/* TODO -- move these to a configuration section? */ -#define MAX_FIELD_WIDTH 4095 - #ifdef __UCLIBC_MJN3_ONLY__ #ifdef L_register_printf_function /* emit only once */ @@ -893,8 +890,11 @@ int attribute_hidden _ppfs_parsespec(ppfs_t *ppfs) } i = 0; while (isdigit(*fmt)) { - if (i < MAX_FIELD_WIDTH) { /* Avoid overflow. */ + if (i < INT_MAX / 10 + || (i == INT_MAX / 10 && (*fmt - '0') <= INT_MAX % 10)) { i = (i * 10) + (*fmt - '0'); + } else { + i = INT_MAX; /* best we can do... */ } ++fmt; } -- cgit v1.2.3 From abdbaa897b3d7b5b72c8521a38aa84cada242837 Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Thu, 25 Mar 2010 15:17:10 +0100 Subject: prettify make clean Signed-off-by: Bernhard Reutner-Fischer --- libc/stdio/Makefile.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'libc/stdio') diff --git a/libc/stdio/Makefile.in b/libc/stdio/Makefile.in index 634b9a47d..1ca2dcff4 100644 --- a/libc/stdio/Makefile.in +++ b/libc/stdio/Makefile.in @@ -103,7 +103,7 @@ ifeq ($(UCLIBC_HAS_WCHAR),y) libc-nomulti-y += $(STDIO_OUT)/vfwprintf.o $(STDIO_OUT)/vfwscanf.o endif -objclean-y += stdio_clean +objclean-y += CLEAN_libc/stdio -stdio_clean: +CLEAN_libc/stdio: $(do_rm) $(addprefix $(STDIO_OUT)/*., o os oS) -- cgit v1.2.3