[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#8230) [PATCH] totp: bug fixes and improvements



On 29/08/15 17:44, hyc@symas.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).