From: Eugene Crosser Date: Mon, 26 Dec 2022 22:00:07 +0000 (+0100) Subject: base64: do not add trailing '\n', cleanup test X-Git-Url: http://www.average.org/gitweb/?p=pam_pcsc_cr.git;a=commitdiff_plain;h=a91fa6c2aaa95825f3d9db6c7ed9291e7b2b7263 base64: do not add trailing '\n', cleanup test --- diff --git a/authfile.c b/authfile.c index 89d3243..93157a4 100644 --- a/authfile.c +++ b/authfile.c @@ -190,7 +190,7 @@ struct _auth_obj authfile(const char *userid, const char *password, oldmask = umask(077); if ((fp = fopen(nfn, "w"))) { - int bsize = ((ao.datasize-1)/3+1)*4+2; /* why +2 ??? */ + int bsize = ((ao.datasize-1)/3+1)*4+1; char *b64 = alloca(bsize); if (b64_encode(ao.data, ao.datasize, b64, &bsize)) { diff --git a/base64.c b/base64.c index 8f16cdc..3ef6bb2 100644 --- a/base64.c +++ b/base64.c @@ -140,7 +140,6 @@ static int base64_encode_blockend(char* code_out, base64_encodestate* state_in) case step_A: break; } - *codechar++ = '\n'; return codechar - code_out; } diff --git a/test_base64.c b/test_base64.c index 2df9639..f099be2 100644 --- a/test_base64.c +++ b/test_base64.c @@ -34,22 +34,23 @@ static unsigned char src[40] = "Quick brown fox jumps over the lazy dog"; int main(int argc, char *argv[]) { - char b64[80]; - unsigned char dst[44]; + int rc; + char b64[57]; /* Must be: ((ssize-1)/3+1)*4+1) = 57 */ + char unsigned dst[42]; /* Must be: strlen(b64)*3/4 = 42 */ int bsize, dsize; - printf("src=\"%s\" (%d)\n", src, (int)sizeof(src)); + printf("src=\"%s\" (%lu/%d)\n", src, strlen((char *)src), (int)sizeof(src)); bsize = sizeof(b64); if (b64_encode(src, sizeof(src), b64, &bsize)) { fprintf(stderr, "encode error\n"); return 1; } - printf("b64=\"%s\" (%d)\n", b64, bsize); + printf("b64=\"%s\" (%lu/%d)\n", b64, strlen(b64), bsize); dsize = sizeof(dst); - if (b64_decode(b64, dst, &dsize)) { - fprintf(stderr, "decode error\n"); + if ((rc = b64_decode(b64, dst, &dsize))) { + fprintf(stderr, "decode error, rc=%d\n", rc); return 1; } - printf("dst=\"%s\" (%d)\n", dst, dsize); + printf("dst=\"%s\" (%lu/%d)\n", dst, strlen((char *)dst), dsize); return !(dsize == sizeof(src) && !memcmp(src, dst, dsize)); }