From: Peter Krefting Date: Fri, 05 Jul 2013 12:51:03 GMT Subject: Re: [PATCH v2 1/2] commit: reject invalid UTF-8 codepoints Message-ID: In-Reply-To: <20130704171943.GA267700@vauxhall.crustytoothpaste.net> brian m. carlson: > + /* U+FFFE and U+FFFF are guaranteed non-characters. */ > + if ((codepoint & 0x1ffffe) == 0xfffe) > + return bad_offset; I missed this the first time around: All Unicode characters whose lower 16-bits are FFFE or FFFF are non-characters, so you can re-write that to: /* U+xxFFFE and U+xxFFFF are guaranteed non-characters. */ if ((codepoint & 0xfffe) == 0xfffe) return bad_offset; Also, the range U+FDD0--U+FDEF are also non-characters, if you wish to be really pedantic. $ grep '^[0-9A-F].* FDD1 FDD2 FDD3 FDD4 FDD5 FDD6 FDD7 FDD8 FDD9 FDDA FDDB FDDC FDDD FDDE FDDF FDE0 FDE1 FDE2 FDE3 FDE4 FDE5 FDE6 FDE7 FDE8 FDE9 FDEA FDEB FDEC FDED FDEE FDEF FFFE FFFF 1FFFE 1FFFF 2FFFE 2FFFF 3FFFE 3FFFF 4FFFE 4FFFF 5FFFE 5FFFF 6FFFE 6FFFF 7FFFE 7FFFF 8FFFE 8FFFF 9FFFE 9FFFF AFFFE AFFFF BFFFE BFFFF CFFFE CFFFF DFFFE DFFFF EFFFE EFFFF FFFFE FFFFF 10FFFE 10FFFF -- \\// Peter - http://www.softwolves.pp.se/