base64: Try to avoid static analyzer warning (part 2)

Shift right on unsigned char limits the value to 0..63 which is within
bounds for base64_table[]. Anyway, some static analyzers do not seem to
understand that. See if an otherwise unnecessary masking gets rid of
false warnings. (CID 62858)

Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
Jouni Malinen 2014-12-07 22:02:57 +02:00
parent d02dcb28bc
commit ff1dd3e9a1

View file

@ -63,14 +63,14 @@ unsigned char * base64_encode(const unsigned char *src, size_t len,
} }
if (end - in) { if (end - in) {
*pos++ = base64_table[in[0] >> 2]; *pos++ = base64_table[(in[0] >> 2) & 0x3f];
if (end - in == 1) { if (end - in == 1) {
*pos++ = base64_table[(in[0] & 0x03) << 4]; *pos++ = base64_table[((in[0] & 0x03) << 4) & 0x3f];
*pos++ = '='; *pos++ = '=';
} else { } else {
*pos++ = base64_table[((in[0] & 0x03) << 4) | *pos++ = base64_table[(((in[0] & 0x03) << 4) |
(in[1] >> 4)]; (in[1] >> 4)) & 0x3f];
*pos++ = base64_table[(in[1] & 0x0f) << 2]; *pos++ = base64_table[((in[1] & 0x0f) << 2) & 0x3f];
} }
*pos++ = '='; *pos++ = '=';
line_len += 4; line_len += 4;