Merge pull request #66 from michaelnmmeyer/master

Fix overrun
This commit is contained in:
Steven G. Johnson 2016-02-04 10:57:25 -05:00
commit 5a84e53b0c
5 changed files with 14 additions and 8 deletions

View File

@ -9,7 +9,7 @@ project (utf8proc C)
# Be sure to also update these in Makefile! # Be sure to also update these in Makefile!
set(SO_MAJOR 2) set(SO_MAJOR 2)
set(SO_MINOR 0) set(SO_MINOR 0)
set(SO_PATCH 0) set(SO_PATCH 1)
add_definitions ( add_definitions (
-DUTF8PROC_EXPORTS -DUTF8PROC_EXPORTS

View File

@ -2,6 +2,6 @@ include/
include/utf8proc.h include/utf8proc.h
lib/ lib/
lib/libutf8proc.a lib/libutf8proc.a
lib/libutf8proc.so -> libutf8proc.so.2.0.0 lib/libutf8proc.so -> libutf8proc.so.2.0.1
lib/libutf8proc.so.2 -> libutf8proc.so.2.0.0 lib/libutf8proc.so.2 -> libutf8proc.so.2.0.1
lib/libutf8proc.so.2.0.0 lib/libutf8proc.so.2.0.1

View File

@ -21,7 +21,7 @@ UCFLAGS = $(CFLAGS) $(PICFLAG) $(C99FLAG) $(WCFLAGS) -DUTF8PROC_EXPORTS
# Be sure to also update these in MANIFEST and CMakeLists.txt! # Be sure to also update these in MANIFEST and CMakeLists.txt!
MAJOR=2 MAJOR=2
MINOR=0 MINOR=0
PATCH=0 PATCH=1
OS := $(shell uname) OS := $(shell uname)
ifeq ($(OS),Darwin) # MacOS X ifeq ($(OS),Darwin) # MacOS X

View File

@ -13,11 +13,17 @@ static void testbytes(unsigned char *buf, int len, utf8proc_ssize_t retval, int
utf8proc_int32_t out[16]; utf8proc_int32_t out[16];
utf8proc_ssize_t ret; utf8proc_ssize_t ret;
/* Make a copy to ensure that memory is left uninitialized after "len"
* bytes. This way, Valgrind can detect overreads.
*/
unsigned char tmp[16];
memcpy(tmp, buf, len);
tests++; tests++;
if ((ret = utf8proc_iterate(buf, len, out)) != retval) { if ((ret = utf8proc_iterate(tmp, len, out)) != retval) {
fprintf(stderr, "Failed (%d):", line); fprintf(stderr, "Failed (%d):", line);
for (int i = 0; i < len ; i++) { for (int i = 0; i < len ; i++) {
fprintf(stderr, " 0x%02x", buf[i]); fprintf(stderr, " 0x%02x", tmp[i]);
} }
fprintf(stderr, " -> %zd\n", ret); fprintf(stderr, " -> %zd\n", ret);
error++; error++;

View File

@ -128,7 +128,7 @@ UTF8PROC_DLLEXPORT utf8proc_ssize_t utf8proc_iterate(
if ((uc - 0xc2) > (0xf4-0xc2)) return UTF8PROC_ERROR_INVALIDUTF8; if ((uc - 0xc2) > (0xf4-0xc2)) return UTF8PROC_ERROR_INVALIDUTF8;
if (uc < 0xe0) { // 2-byte sequence if (uc < 0xe0) { // 2-byte sequence
// Must have valid continuation character // Must have valid continuation character
if (!utf_cont(*str)) return UTF8PROC_ERROR_INVALIDUTF8; if (str >= end || !utf_cont(*str)) return UTF8PROC_ERROR_INVALIDUTF8;
*dst = ((uc & 0x1f)<<6) | (*str & 0x3f); *dst = ((uc & 0x1f)<<6) | (*str & 0x3f);
return 2; return 2;
} }