[Buildroot] [PATCH 05/11] dialog: Patch incorrect use of toupper()

Paul Cercueil paul at crapouillou.net
Thu Apr 3 21:01:15 UTC 2014


On some platforms (e.g. MIPS), the "char" type is signed by default.
The problem is that toupper() takes an int as argument: a signed
char then gets sign-extended to 32bit, which causes an assertion
failure as toupper() verifies that its argument fits in 8 bits.

Signed-Off-By: Paul Cercueil <paul at crapouillou.net>
Acked-By: Maarten ter Huurne <maarten at treewalker.org>
---
 package/dialog/dialog-toupper.patch | 13 +++++++++++++
 1 file changed, 13 insertions(+)
 create mode 100644 package/dialog/dialog-toupper.patch

diff --git a/package/dialog/dialog-toupper.patch b/package/dialog/dialog-toupper.patch
new file mode 100644
index 0000000..3fe0e19
--- /dev/null
+++ b/package/dialog/dialog-toupper.patch
@@ -0,0 +1,13 @@
+diff --git a/dlg_keys.h b/dlg_keys.h
+index 6a96c0f..b7b42d9 100644
+--- a/dlg_keys.h
++++ b/dlg_keys.h
+@@ -31,7 +31,7 @@
+ #define dlg_toupper(ch) towupper((wint_t)ch)
+ #define dlg_isupper(ch) iswupper((wint_t)ch)
+ #else
+-#define dlg_toupper(ch) toupper(ch)
++#define dlg_toupper(ch) toupper((unsigned char)(ch))
+ #define dlg_isupper(ch) (isalpha(ch) && isupper(ch))
+ #endif
+ 
-- 
1.9.0




More information about the buildroot mailing list