Don't call the system toupper or tolower.

Yes, we could cast to unsigned char first, but it's probably safest
to just use our own (in test_util), or remove bad-idea features that
we don't use (in readpassphrase.c).

Fixes 18728.
This commit is contained in:
Nick Mathewson 2016-04-05 23:22:28 -04:00
parent d037369e56
commit d7a0382ba3
4 changed files with 10 additions and 1 deletions

4
changes/bug18728 Normal file
View File

@ -0,0 +1,4 @@
o Minor bugfixes (build):
- Resolve warnings when building on systems that are concerned with
signed char. Fixes bug 18728; bugfix on 0.2.7.2-alpha and
0.2.6.1-alpha.

View File

@ -142,6 +142,7 @@ restart:
p = buf;
while ((nr = read(input, &ch, 1)) == 1 && ch != '\n' && ch != '\r') {
if (p < end) {
#if 0
if ((flags & RPP_SEVENBIT))
ch &= 0x7f;
if (isalpha(ch)) {
@ -150,6 +151,7 @@ restart:
if ((flags & RPP_FORCEUPPER))
ch = (char)toupper(ch);
}
#endif
*p++ = ch;
}
}

View File

@ -32,9 +32,11 @@
#define RPP_ECHO_OFF 0x00 /* Turn off echo (default). */
#define RPP_ECHO_ON 0x01 /* Leave echo on. */
#define RPP_REQUIRE_TTY 0x02 /* Fail if there is no tty. */
#if 0
#define RPP_FORCELOWER 0x04 /* Force input to lower case. */
#define RPP_FORCEUPPER 0x08 /* Force input to upper case. */
#define RPP_SEVENBIT 0x10 /* Strip the high bit from input. */
#endif
#define RPP_STDIN 0x20 /* Read from stdin, not /dev/tty */
char * readpassphrase(const char *, char *, size_t, int);

View File

@ -2297,7 +2297,8 @@ test_util_sscanf(void *arg)
}
#define tt_char_op(a,op,b) tt_assert_op_type(a,op,b,char,"%c")
#define tt_ci_char_op(a,op,b) tt_char_op(tolower(a),op,tolower(b))
#define tt_ci_char_op(a,op,b) \
tt_char_op(TOR_TOLOWER((int)a),op,TOR_TOLOWER((int)b))
#ifndef HAVE_STRNLEN
static size_t