(2010年02月09日 23:45), Erik Faye-Lund wrote:
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.
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,
--
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