diff options
author | Werner Koch <[email protected]> | 2018-06-08 08:45:21 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2018-06-08 08:50:38 +0000 |
commit | 2326851c60793653069494379b16d84e4c10a0ac (patch) | |
tree | 733ab4c75fd1333ed7e4874dbfa54a0ddb4b2e02 | |
parent | g10: Push compress filter only if compressed. (diff) | |
download | gnupg-2326851c60793653069494379b16d84e4c10a0ac.tar.gz gnupg-2326851c60793653069494379b16d84e4c10a0ac.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.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/g10/mainproc.c b/g10/mainproc.c index 33a654b34..ffa7ef6d8 100644 --- a/g10/mainproc.c +++ b/g10/mainproc.c @@ -638,7 +638,11 @@ 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); + { + 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 ); c->mfx.md = md_open( 0, 0); /* fixme: we may need to push the textfilter if we have sigclass 1 |