]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Regression: Certificate data is corrupted during base64 conversion 726/head
authorRose <83477269+AtariDreams@users.noreply.github.com>
Sun, 11 Jun 2023 20:09:53 +0000 (16:09 -0400)
committerRose <83477269+AtariDreams@users.noreply.github.com>
Sun, 11 Jun 2023 20:48:40 +0000 (16:48 -0400)
The bug during which certificates become corrupt was introduced in a521b235a1abc008cb0b2f490a765bb31e2ec14b. It turns out some data was not being truncated after being promoted to an integer, causing 1s to be ORed into the index number when they should not have been.

I only intended to remove the & 255 from the other side, where the & 63 would have rendered that operation redundant.

I apologize for this error. I made the appropriate changes I intended to make in this new PR.

Please merge and make a new release if possible.

Thank you so much!

cups/http-support.c

index f92bcba4808a96ae83082a9fbf2b35a306186116..51a098acdcc1ffe6f9f28bc9f2fd7323930e7fba 100644 (file)
@@ -746,7 +746,7 @@ httpEncode64_2(char       *out,             /* I - String to write to */
     if (outptr < outend)
     {
       if (inlen > 1)
-        *outptr ++ = base64[((in[0] << 2) | (in[1] >> 6)) & 63];
+        *outptr ++ = base64[(((in[0] & 255) << 2) | ((in[1] & 255) >> 6)) & 63];
       else
         *outptr ++ = base64[(in[0] << 2) & 63];
     }