Modify wchar conversion routines to not fetch the next byte past the end
Tom Lane <tgl@sss.pgh.pa.us>
Modify wchar conversion routines to not fetch the next byte past the end of a counted input string. Marinos Yannikos' recent crash report turns out to be due to applying pg_ascii2wchar_with_len to a TEXT object that is smack up against the end of memory. This is the second just-barely- reproducible bug report I have seen that traces to some bit of code fetching one more byte than it is allowed to. Let's be more careful out there, boys and girls. While at it, I changed the code to not risk a similar crash when there is a truncated multibyte character at the end of an input string. The output in this case might not be the most reasonable output possible; if anyone wants to improve it further, step right up...
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/utils/mb/mbutils.c | modified | +4 −4 |
| src/backend/utils/mb/wchar.c | modified | +29 −31 |