[Pkg-gnupg-commit] [gnupg2] 33/205: gpg: Make ASCII armor decoding more robust to encoding errors.

Daniel Kahn Gillmor dkg at fifthhorseman.net
Wed May 11 08:38:12 UTC 2016


This is an automated email from the git hooks/post-receive script.

dkg pushed a commit to branch experimental
in repository gnupg2.

commit 2f02ed75a9671a7aae36968d5a1618f71b491325
Author: Neal H. Walfield <neal at g10code.com>
Date:   Sun Feb 14 16:00:10 2016 +0100

    gpg: Make ASCII armor decoding more robust to encoding errors.
    
    * g10/armor.c (radix64_read): If the = is followed by the string "3D",
    check if the following four characters are valid radix 64 and are
    followed by a new line.  If so, warn and ignore the '3D'.
    
    --
    Signed-off-by: Neal H. Walfield <neal at g10code.com>
    GnuPG-bug-id: 2250
---
 g10/armor.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/g10/armor.c b/g10/armor.c
index 55ee5d3..e34518e 100644
--- a/g10/armor.c
+++ b/g10/armor.c
@@ -796,6 +796,24 @@ radix64_read( armor_filter_context_t *afx, IOBUF a, size_t *retn,
 		}
 	    }
 
+            /* Occasionally a bug MTA will leave the = escaped as
+               =3D.  If the 4 characters following that are valid
+               Radix64 characters and they are following by a new
+               line, assume that this is the case and skip the
+               3D.  */
+            if (afx->buffer_pos + 6 < afx->buffer_len
+                && afx->buffer[afx->buffer_pos + 0] == '3'
+                && afx->buffer[afx->buffer_pos + 1] == 'D'
+                && asctobin[afx->buffer[afx->buffer_pos + 2]] != 255
+                && asctobin[afx->buffer[afx->buffer_pos + 3]] != 255
+                && asctobin[afx->buffer[afx->buffer_pos + 4]] != 255
+                && asctobin[afx->buffer[afx->buffer_pos + 5]] != 255
+                && afx->buffer[afx->buffer_pos + 6] == '\n')
+              {
+                afx->buffer_pos += 2;
+                afx->qp_detected = 1;
+              }
+
 	    if (!n)
 	      onlypad = 1;
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gnupg2.git



More information about the Pkg-gnupg-commit mailing list