Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNickolay V. Shmyrev <nshmyrev@yandex.ru>2007-05-09 22:27:29 (GMT)
committer Nickolay V. Shmyrev <nshmyrev@src.gnome.org>2007-05-09 22:27:29 (GMT)
commitbfcdcc910f8e5e8e073db56ea8c1c3832925ce5f (patch)
tree10f2b7c8a77bd3d0b83eeb749364b405b89d7949
parent0d7c338831d7d741f4c0a61e8c3b40f8bdd5f87f (diff)
Correctly quote symbols. Fixes crash in the bug #415370.
2007-05-10 Nickolay V. Shmyrev <nshmyrev@yandex.ru> * backend/comics/comics-document.c: (comics_regex_quote), (extract_argv): Correctly quote symbols. Fixes crash in the bug #415370. svn path=/trunk/; revision=2446
-rw-r--r--ChangeLog8
-rw-r--r--backend/comics/comics-document.c13
2 files changed, 19 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 0cc791f..ace5fe9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2007-05-10 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
+ * backend/comics/comics-document.c: (comics_regex_quote),
+ (extract_argv):
+
+ Correctly quote symbols. Fixes crash in the bug
+ #415370.
+
+2007-05-10 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
+
* shell/ev-navigation-action-widget.c:
(ev_navigation_action_widget_init),
(ev_navigation_action_widget_class_init),
diff --git a/backend/comics/comics-document.c b/backend/comics/comics-document.c
index e0fdd31..64bd2b7 100644
--- a/backend/comics/comics-document.c
+++ b/backend/comics/comics-document.c
@@ -72,7 +72,7 @@ comics_regex_quote (const char *s)
{
char *ret, *d;
- d = ret = g_malloc (strlen (s) * 2 + 3);
+ d = ret = g_malloc (strlen (s) * 4 + 3);
*d++ = '\'';
@@ -85,7 +85,9 @@ comics_regex_quote (const char *s)
case '*':
case '\\':
case '\'':
+ *d++ = '\'';
*d++ = '\\';
+ *d++ = '\'';
break;
}
*d = *s;
@@ -461,6 +463,7 @@ extract_argv (EvDocument *document, gint page)
ComicsDocument *comics_document = COMICS_DOCUMENT (document);
char **argv;
char *command_line, *quoted_archive, *quoted_filename;
+ GError *err = NULL;
quoted_archive = g_shell_quote (comics_document->archive);
if (comics_document->regex_arg) {
@@ -475,8 +478,14 @@ extract_argv (EvDocument *document, gint page)
comics_document->extract_command,
quoted_archive,
quoted_filename);
- g_shell_parse_argv (command_line, NULL, &argv, NULL);
+ g_shell_parse_argv (command_line, NULL, &argv, &err);
+
+ if (err) {
+ g_warning ("Error %s", err->message);
+ return NULL;
+ }
+
g_free (command_line);
g_free (quoted_archive);
g_free (quoted_filename);