From 33e955ab91d2f76bd8ea6e12fce215d863f4d7d7 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Mon, 30 Nov 2020 11:18:00 +0100 Subject: unicode: fix handling of short 1-4 char tables function old new delta in_uint16_table 92 107 +15 Signed-off-by: Denys Vlasenko --- libbb/time.c | 1 - libbb/unicode.c | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'libbb') diff --git a/libbb/time.c b/libbb/time.c index 86b88a414..74a69eefb 100644 --- a/libbb/time.c +++ b/libbb/time.c @@ -250,7 +250,6 @@ char* FAST_FUNC strftime_YYYYMMDDHHMMSS(char *buf, unsigned len, time_t *tp) #if ENABLE_MONOTONIC_SYSCALL -#include /* Old glibc (< 2.3.4) does not provide this constant. We use syscall * directly so this definition is safe. */ #ifndef CLOCK_MONOTONIC diff --git a/libbb/unicode.c b/libbb/unicode.c index 79481f159..bfeaef895 100644 --- a/libbb/unicode.c +++ b/libbb/unicode.c @@ -306,8 +306,10 @@ static int in_uint16_table(unsigned ucs, const uint16_t *table, unsigned max) unsigned first, last; first = table[0] >> 2; - last = first + (table[0] & 3); - if (ucs < first || ucs > last) + if (ucs < first) + return 0; + last = (table[max] >> 2) + (table[max] & 3); + if (ucs > last) return 0; min = 0; -- cgit v1.2.3