# HG changeset patch # User Bruno Haible # Date 1552073902 -3600 # Node ID 5f58d2ac35ea2fc31ccc90cb6d21b8327ce30986 # Parent 44073ad4207fa948b0465c2133820d26ee8b604b unistr/u8-cmp: Fix undefined behaviour. Reported by Jeffrey Walton . * lib/unistr/u8-cmp.c (u8_cmp): Don't invoke memcmp if n is zero. diff -r 44073ad4207f -r 5f58d2ac35ea ChangeLog --- a/ChangeLog Fri Mar 08 19:17:37 2019 +0100 +++ b/ChangeLog Fri Mar 08 20:38:22 2019 +0100 @@ -1,3 +1,9 @@ +2019-03-08 Bruno Haible + + unistr/u8-cmp: Fix undefined behaviour. + Reported by Jeffrey Walton . + * lib/unistr/u8-cmp.c (u8_cmp): Don't invoke memcmp if n is zero. + 2019-03-08 Bruno Haible unictype/numeric: Fix undefined behaviour. diff -r 44073ad4207f -r 5f58d2ac35ea lib/unistr/u8-cmp.c --- a/lib/unistr/u8-cmp.c Fri Mar 08 19:17:37 2019 +0100 +++ b/lib/unistr/u8-cmp.c Fri Mar 08 20:38:22 2019 +0100 @@ -26,5 +26,5 @@ u8_cmp (const uint8_t *s1, const uint8_t *s2, size_t n) { /* Use the fact that the UTF-8 encoding preserves lexicographic order. */ - return memcmp ((const char *) s1, (const char *) s2, n); + return n == 0 ? 0 : memcmp ((const char *) s1, (const char *) s2, n); }