From 5d595480189f2cfdb428e073cd461faf58e7054b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dag-Erling=20Sm=C3=B8rgrav?= Date: Sun, 9 Mar 2014 14:11:44 +0000 Subject: [PATCH] When I changed the argument type from uint8_t * to char *, I forgot that they were being used as array indices. Cast them back to uint8_t. git-svn-id: svn+ssh://svn.openpam.org/svn/openpam/trunk@779 185d5e19-27fe-0310-9dcf-9bff6b9f3609 --- lib/liboath/oath_base32.c | 10 ++++++---- lib/liboath/oath_base64.c | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/liboath/oath_base32.c b/lib/liboath/oath_base32.c index 4c62377..f45d319 100644 --- a/lib/liboath/oath_base32.c +++ b/lib/liboath/oath_base32.c @@ -85,8 +85,9 @@ static const char b32dec[256] = { * have room for base32_enclen(len) characters and a terminating NUL. */ int -base32_enc(const char *in, size_t ilen, char *out, size_t *olen) +base32_enc(const char *cin, size_t ilen, char *out, size_t *olen) { + const uint8_t *in = (uint8_t *)cin; uint64_t bits; if (*olen <= base32_enclen(ilen)) { @@ -160,8 +161,9 @@ base32_enc(const char *in, size_t ilen, char *out, size_t *olen) * returns the total amount. */ int -base32_dec(const char *in, size_t ilen, char *out, size_t *olen) +base32_dec(const char *cin, size_t ilen, char *out, size_t *olen) { + const uint8_t *in = (uint8_t *)cin; size_t len; int bits, shift, padding; @@ -170,10 +172,10 @@ base32_dec(const char *in, size_t ilen, char *out, size_t *olen) (padding && *in == '=')) { /* consume */ continue; - } else if (!padding && b32dec[(int)*in] >= 0) { + } else if (!padding && b32dec[*in] >= 0) { /* shift into accumulator */ shift += 5; - bits = bits << 5 | b32dec[(int)*in]; + bits = bits << 5 | b32dec[*in]; } else if (!padding && shift > 0 && shift < 5 && *in == '=') { /* final byte */ shift = 0; diff --git a/lib/liboath/oath_base64.c b/lib/liboath/oath_base64.c index e1cce09..03f06a6 100644 --- a/lib/liboath/oath_base64.c +++ b/lib/liboath/oath_base64.c @@ -87,8 +87,9 @@ static const char b64dec[256] = { * have room for base64_enclen(len) characters and a terminating NUL. */ int -base64_enc(const char *in, size_t ilen, char *out, size_t *olen) +base64_enc(const char *cin, size_t ilen, char *out, size_t *olen) { + const uint8_t *in = (uint8_t *)cin; uint32_t bits; if (*olen <= base64_enclen(ilen)) { @@ -148,8 +149,9 @@ base64_enc(const char *in, size_t ilen, char *out, size_t *olen) * returns the total amount. */ int -base64_dec(const char *in, size_t ilen, char *out, size_t *olen) +base64_dec(const char *cin, size_t ilen, char *out, size_t *olen) { + const uint8_t *in = (uint8_t *)cin; size_t len; int bits, shift, padding; @@ -158,10 +160,10 @@ base64_dec(const char *in, size_t ilen, char *out, size_t *olen) (padding && *in == '=')) { /* consume */ continue; - } else if (!padding && b64dec[(int)*in] >= 0) { + } else if (!padding && b64dec[*in] >= 0) { /* shift into accumulator */ shift += 6; - bits = bits << 6 | b64dec[(int)*in]; + bits = bits << 6 | b64dec[*in]; } else if (!padding && shift > 0 && shift != 6 && *in == '=') { /* final byte */ shift = 0;