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:
parent
a9c6523c52
commit
a263be7c26
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue