Skip to content

Commit

Permalink
dvi: Mitigate command injection attacks by quoting filename
Browse files Browse the repository at this point in the history
With commit 1fcca0b8041de0d6074d7e17fba174da36c65f99 came a DVI backend.
It exports to PDF via the dvipdfm tool.
It calls that tool with the filename of the currently loaded document.
If that filename is cleverly crafted, it can escape the currently
used manual quoting of the filename.  Instead of manually quoting the
filename, we use g_shell_quote.

https://bugzilla.gnome.org/show_bug.cgi?id=784947

origin commit:
https://git.gnome.org/browse/evince/commit/?id=350404c
  • Loading branch information
muelli authored and raveit65 committed Aug 20, 2017
1 parent 6adf8d1 commit 4650fb0
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions backend/dvi/dvi-document.c
Original file line number Diff line number Diff line change
Expand Up @@ -374,11 +374,13 @@ dvi_document_file_exporter_end (EvFileExporter *exporter)
gboolean success;

DviDocument *dvi_document = DVI_DOCUMENT(exporter);
gchar* quoted_filename = g_shell_quote (dvi_document->context->filename);

command_line = g_strdup_printf ("dvipdfm %s -o %s \"%s\"", /* dvipdfm -s 1,2,.., -o exporter_filename dvi_filename */
command_line = g_strdup_printf ("dvipdfm %s -o %s %s", /* dvipdfm -s 1,2,.., -o exporter_filename dvi_filename */
dvi_document->exporter_opts->str,
dvi_document->exporter_filename,
dvi_document->context->filename);
quoted_filename);
g_free (quoted_filename);

success = g_spawn_command_line_sync (command_line,
NULL,
Expand Down

0 comments on commit 4650fb0

Please sign in to comment.