git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 1/2] commit: reject invalid UTF-8 codepoints

From
Peter Krefting <peter@softwolves.pp.se>
Date
Jul 5, 2013, 12:51 UTC
Message-ID
<alpine.DEB.2.00.1307051345260.11814@ds9.cixit.se>
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].*<not a' NamesList.txt FDD0 <not a character> FDD1 <not a character> FDD2 <not a character> FDD3 <not a character> FDD4 <not a character> FDD5 <not a character> FDD6 <not a character> FDD7 <not a character> FDD8 <not a character> FDD9 <not a character> FDDA <not a character> FDDB <not a character> FDDC <not a character> FDDD <not a character> FDDE <not a character> FDDF <not a character> FDE0 <not a character> FDE1 <not a character> FDE2 <not a character> FDE3 <not a character> FDE4 <not a character> FDE5 <not a character> FDE6 <not a character> FDE7 <not a character> FDE8 <not a character> FDE9 <not a character> FDEA <not a character> FDEB <not a character> FDEC <not a character> FDED <not a character> FDEE <not a character> FDEF <not a character> FFFE <not a character> FFFF <not a character> 1FFFE <not a character> 1FFFF <not a character> 2FFFE <not a character> 2FFFF <not a character> 3FFFE <not a character> 3FFFF <not a character> 4FFFE <not a character> 4FFFF <not a character> 5FFFE <not a character> 5FFFF <not a character> 6FFFE <not a character> 6FFFF <not a character> 7FFFE <not a character> 7FFFF <not a character> 8FFFE <not a character> 8FFFF <not a character> 9FFFE <not a character> 9FFFF <not a character> AFFFE <not a character> AFFFF <not a character> BFFFE <not a character> BFFFF <not a character> CFFFE <not a character> CFFFF <not a character> DFFFE <not a character> DFFFF <not a character> EFFFE <not a character> EFFFF <not a character> FFFFE <not a character> FFFFF <not a character> 10FFFE <not a character> 10FFFF <not a character>

-- 
\\// Peter - http://www.softwolves.pp.se/
Previous: brian m. carlsonNext: Junio C Hamano
Message 5 of 11 in “commit: improve UTF-8 validation”
  1. 0/2 commit: improve UTF-8 validationbrian m. carlson, Jul 4, 2013
  2. 1/2 commit: reject invalid UTF-8 codepointsbrian m. carlson, Jul 4, 2013
  3. Torsten BögershausenJul 4, 2013
  4. brian m. carlsonJul 4, 2013
  5. Peter KreftingJul 5, 2013
  6. Junio C HamanoJul 8, 2013
  7. commit: reject non-charactersPeter Krefting, Jul 9, 2013
  8. Peter KreftingAug 5, 2013
  9. Junio C HamanoAug 5, 2013
  10. Peter KreftingAug 6, 2013
  11. 2/2 commit: reject overlong UTF-8 sequencesbrian m. carlson, Jul 4, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.