aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2018-06-08 08:45:21 +0000
committerWerner Koch <[email protected]>2018-06-08 08:46:42 +0000
commit210e402acd3e284b32db1901e43bf1470e659e49 (patch)
treea77502cd9b13c160f84969b76546e81fa088fff5
parentgpg: Improve import's repair-key duplicate signature detection. (diff)
downloadgnupg-210e402acd3e284b32db1901e43bf1470e659e49.tar.gz
gnupg-210e402acd3e284b32db1901e43bf1470e659e49.zip
gpg: Sanitize diagnostic with the original file name.
* g10/mainproc.c (proc_plaintext): Sanitize verbose output. -- This fixes a forgotten sanitation of user supplied data in a verbose mode diagnostic. The mention CVE is about using this to inject status-fd lines into the stderr output. Other harm good as well be done. Note that GPGME based applications are not affected because GPGME does not fold status output into stderr. CVE-id: CVE-2018-12020 GnuPG-bug-id: 4012 (cherry picked from commit 13f135c7a252cc46cff96e75968d92b6dc8dce1b)
-rw-r--r--g10/mainproc.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/g10/mainproc.c b/g10/mainproc.c
index 116b72a6b..72b0dd828 100644
--- a/g10/mainproc.c
+++ b/g10/mainproc.c
@@ -758,7 +758,14 @@ proc_plaintext( CTX c, PACKET *pkt )
if (pt->namelen == 8 && !memcmp( pt->name, "_CONSOLE", 8))
log_info (_("Note: sender requested \"for-your-eyes-only\"\n"));
else if (opt.verbose)
- log_info (_("original file name='%.*s'\n"), pt->namelen, pt->name);
+ {
+ /* We don't use print_utf8_buffer because that would require a
+ * string change which we don't want in 2.2. It is also not
+ * clear whether the filename is always utf-8 encoded. */
+ char *tmp = make_printable_string (pt->name, pt->namelen, 0);
+ log_info (_("original file name='%.*s'\n"), (int)strlen (tmp), tmp);
+ xfree (tmp);
+ }
free_md_filter_context (&c->mfx);
if (gcry_md_open (&c->mfx.md, 0, 0))