Fix encoder bugs: increment *olen rather than olen, and use the correct

mask for base64 (which was copy-pasted from the base32 code)


git-svn-id: svn+ssh://svn.openpam.org/svn/openpam/trunk@641 185d5e19-27fe-0310-9dcf-9bff6b9f3609
This commit is contained in:
Dag-Erling Smørgrav 2013-03-05 09:53:33 +00:00
parent a9c6523c52
commit a263be7c26
2 changed files with 9 additions and 7 deletions

View File

@ -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);
}

View File

@ -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);
}