diff --git a/modules/pam_oath/oath_base32.c b/modules/pam_oath/oath_base32.c index b070acd..9c0ecee 100644 --- a/modules/pam_oath/oath_base32.c +++ b/modules/pam_oath/oath_base32.c @@ -72,7 +72,7 @@ base32_enc(const uint8_t *in, size_t ilen, char *out, size_t *olen) out[5] = b32[bits >> 10 & 0x1f]; out[6] = b32[bits >> 5 & 0x1f]; out[7] = b32[bits & 0x1f]; - olen += 8; + *olen += 8; out += 8; } if (ilen > 0) { @@ -95,10 +95,11 @@ base32_enc(const uint8_t *in, size_t ilen, char *out, size_t *olen) out[5] = ilen > 3 ? b32[bits >> 10 & 0x1f] : '='; out[6] = ilen > 3 ? b32[bits >> 5 & 0x1f] : '='; out[7] = '='; - olen += 8; + *olen += 8; out += 8; } out[0] = '\0'; + ++*olen; return (0); } diff --git a/modules/pam_oath/oath_base64.c b/modules/pam_oath/oath_base64.c index 8e20cc7..d53309c 100644 --- a/modules/pam_oath/oath_base64.c +++ b/modules/pam_oath/oath_base64.c @@ -68,7 +68,7 @@ base64_enc(const uint8_t *in, size_t ilen, char *out, size_t *olen) out[1] = b64[bits >> 12 & 0x3f]; out[2] = b64[bits >> 6 & 0x3f]; out[3] = b64[bits & 0x3f]; - olen += 4; + *olen += 4; out += 4; } if (ilen > 0) { @@ -79,14 +79,15 @@ base64_enc(const uint8_t *in, size_t ilen, char *out, size_t *olen) case 1: bits |= (uint32_t)in[0] << 16; } - out[0] = b64[bits >> 18 & 0x1f]; - out[1] = b64[bits >> 12 & 0x1f]; - out[2] = ilen > 1 ? b64[bits >> 6 & 0x1f] : '='; + out[0] = b64[bits >> 18 & 0x3f]; + out[1] = b64[bits >> 12 & 0x3f]; + out[2] = ilen > 1 ? b64[bits >> 6 & 0x3f] : '='; out[3] = '='; - olen += 4; + *olen += 4; out += 4; } out[0] = '\0'; + ++*olen; return (0); }