[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