The idiomatic way of coping with signed char vs unsigned char (which
authorderaadt <deraadt@openbsd.org>
Thu, 15 Dec 2022 18:20:39 +0000 (18:20 +0000)
committerderaadt <deraadt@openbsd.org>
Thu, 15 Dec 2022 18:20:39 +0000 (18:20 +0000)
did not come from stdio read functions) in the presence of ctype
macros, is to always cast to (unsigned char).  casting to (int) for
a "macro" which is documented to take int, is weird.  And sadly wrong,
because of the sing extension risk..
same diff from florian

usr.bin/ssh/misc.c

index 05fa81f..2d65927 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: misc.c,v 1.178 2022/11/09 09:01:52 dtucker Exp $ */
+/* $OpenBSD: misc.c,v 1.179 2022/12/15 18:20:39 deraadt Exp $ */
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
  * Copyright (c) 2005-2020 Damien Miller.  All rights reserved.
@@ -80,7 +80,7 @@ rtrim(char *s)
        if ((i = strlen(s)) == 0)
                return;
        for (i--; i > 0; i--) {
-               if (isspace((int)s[i]))
+               if (isspace((unsigned char)s[i]))
                        s[i] = '\0';
        }
 }