On Tue, Feb 9, 2010 at 1:09 PM, Hitoshi Mitake <mitake@xxxxxxxxxxxxxxxxxxxxx> wrote: > +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. > + > + 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. -- Erik "kusma" Faye-Lund -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html