Re: [PATCH 1/4] Add base64 encoder and decoder
From: Hitoshi Mitake <hidden>
Date: 2016-06-15 22:48:13
(2010年02月09日 23:45), Erik Faye-Lund wrote:
On Tue, Feb 9, 2010 at 1:09 PM, Hitoshi Mitake [off-list ref] wrote:quoted
+void base64_encode(char *out, const char *in, int inlen) +{ + const char *inp = in; + char *outp = out;...Why? It's copying the pointers to pointers of identical type with different names, and never using the originals again... Looks like a sloppy extraction from another code-base to me.quoted
+ + while (inlen>= 3) { + *outp++ = base64char[(inp[0]>> 2)& 0x3f]; + *outp++ = base64char[((inp[0]& 0x03)<< 4) | + ((inp[1]>> 4)& 0x0f)]; + *outp++ = base64char[((inp[1]& 0x0f)<< 2) | + ((inp[2]>> 6)& 0x03)]; + *outp++ = base64char[inp[2]& 0x3f]; + + inp += 3; + inlen -= 3; + } + + if (inlen> 0) { + *outp++ = base64char[(inp[0]>> 2)& 0x3f]; + if (inlen == 1) { + *outp++ = base64char[(inp[0]& 0x03)<< 4]; + *outp++ = '='; + } else { + *outp++ = base64char[((inp[0]& 0x03)<< 4) | + ((inp[1]>> 4)& 0x0f)]; + *outp++ = base64char[((inp[1]& 0x0f)<< 2)]; + } + *outp++ = '='; + } + + *outp = '\0'; +}If inlen is 0, a single '=' should be emitted (plus the obvious zero termination). It could be that the code deals with that by making sure that inlen never is zero, though.
Thanks for your review, I was careless... I decided to use base64 and md5 stuffs OpenSSL provides. I'll remove 1 and 2 of my patch series. Thanks,