[Date Prev][Date Next]
Re: (ITS#8230) [PATCH] totp: bug fixes and improvements
On 29/08/15 17:44, email@example.com wrote:
> This patch is incorrect. You must guard toupper(), it is not guaranteed not to
> distort non-lowercase characters.
Yes it is - for values in the range of unsigned char and EOF.
Behavior is undefined for other values. The bug is failing to
cast a char arguments to <ctype.h> functions to unsigned char.
It's a common bug, so some implementations support char args.
They cannot support that fully for (char)EOF, though.
> if (islower(x)) x = toupper(x)
That might hide the bug at times, maybe that's why you use it.
But it's not reliable, islower too expects EOF or unsigned char.
Use x = toupper((unsigned char)x).