]> www.average.org Git - pam_pcsc_cr.git/commitdiff
base64: do not add trailing '\n', cleanup test
authorEugene Crosser <crosser@average.org>
Mon, 26 Dec 2022 22:00:07 +0000 (23:00 +0100)
committerEugene Crosser <crosser@average.org>
Mon, 26 Dec 2022 22:00:07 +0000 (23:00 +0100)
authfile.c
base64.c
test_base64.c

index 89d32438383d935b08fa85ee18c784a740c55695..93157a4e1a9a8460c46a6fc609e1b18a62fd5885 100644 (file)
@@ -190,7 +190,7 @@ struct _auth_obj authfile(const char *userid, const char *password,
 
        oldmask = umask(077);
        if ((fp = fopen(nfn, "w"))) {
 
        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)) {
                char *b64 = alloca(bsize);
 
                if (b64_encode(ao.data, ao.datasize, b64, &bsize)) {
index 8f16cdc0306b0dd1125ab9ca40459f6e779ee95b..3ef6bb2bd8539995441b34e678982fd9cc7aad1a 100644 (file)
--- 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;
        }
        case step_A:
                break;
        }
-       *codechar++ = '\n';
        
        return codechar - code_out;
 }
        
        return codechar - code_out;
 }
index 2df9639a6249fadefde82b6cee51b6b8c2de156d..f099be27a259733b41da81d5b3d780997dc7fbd2 100644 (file)
@@ -34,22 +34,23 @@ static unsigned char src[40] = "Quick brown fox jumps over the lazy dog";
 
 int main(int argc, char *argv[])
 {
 
 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;
 
        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;
        }
        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);
        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;
        }
                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));
 }
        return !(dsize == sizeof(src) && !memcmp(src, dst, dsize));
 }