Re: [PATCH 1/4] Add base64 encoder and decoder

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



(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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]