[sushi] sushi-pdf-loader: make sure not to reference out of scope values



commit 0e7856afb9f2194579cfc0e5545f2a402df6f020
Author: Cosimo Cecchi <cosimo endlessm com>
Date:   Mon Apr 23 16:08:53 2018 -0700

    sushi-pdf-loader: make sure not to reference out of scope values
    
    Use g_strdupv() to copy the argv array, or we may end up using out of
    scope values when actually trying to spawn libreoffice, which will break
    document conversion.

 src/libsushi/sushi-pdf-loader.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)
---
diff --git a/src/libsushi/sushi-pdf-loader.c b/src/libsushi/sushi-pdf-loader.c
index c1f3649..16c3221 100644
--- a/src/libsushi/sushi-pdf-loader.c
+++ b/src/libsushi/sushi-pdf-loader.c
@@ -209,7 +209,7 @@ load_libreoffice (SushiPdfLoader *self)
   gboolean res;
   GPid pid;
   GError *error = NULL;
-  const gchar **argv = NULL;
+  gchar **argv = NULL;
 
   flatpak_path = g_find_program_in_path ("flatpak");
   if (flatpak_path != NULL)
@@ -265,7 +265,7 @@ load_libreoffice (SushiPdfLoader *self)
     flatpak_argv[10] = pdf_dir;
     flatpak_argv[11] = doc_path;
 
-    argv = flatpak_argv;
+    argv = g_strdupv ((gchar **) flatpak_argv);
   } else {
     const gchar *libreoffice_argv[] = {
       NULL, /* to be replaced with binary */
@@ -279,7 +279,7 @@ load_libreoffice (SushiPdfLoader *self)
     libreoffice_argv[4] = pdf_dir;
     libreoffice_argv[5] = doc_path;
 
-    argv = libreoffice_argv;
+    argv = g_strdupv ((gchar **) libreoffice_argv);
   }
 
   tmp_name = g_strjoinv (" ", (gchar **) argv);
@@ -297,6 +297,7 @@ load_libreoffice (SushiPdfLoader *self)
   g_free (flatpak_path);
   g_free (flatpak_doc);
   g_free (flatpak_dir);
+  g_strfreev (argv);
 
   if (!res) {
     g_warning ("Error while spawning libreoffice: %s",


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]