summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2009-12-03 15:36:49 +0100
committerTor Andersson <tor@ghostscript.com>2009-12-03 15:36:49 +0100
commitc639b84d440cac6dc6e3406fbf647a4bd219ca6f (patch)
treefd861b1506cc14f2e05b3d1425dbb1bfe0821a79 /apps
parent02cc12ac3d22e36454fa8564fbe8c111f44d09b7 (diff)
downloadmupdf-c639b84d440cac6dc6e3406fbf647a4bd219ca6f.tar.xz
Fix possible buffer overflows in the viewer application.
Diffstat (limited to 'apps')
-rw-r--r--apps/common/pdfapp.c5
-rw-r--r--apps/unix/x11pdf.c10
2 files changed, 7 insertions, 8 deletions
diff --git a/apps/common/pdfapp.c b/apps/common/pdfapp.c
index 367a195c..14a710b5 100644
--- a/apps/common/pdfapp.c
+++ b/apps/common/pdfapp.c
@@ -288,13 +288,14 @@ static void pdfapp_showpage(pdfapp_t *app, int loadpage, int drawpage)
wincursor(app, ARROW);
}
-
static void pdfapp_gotouri(pdfapp_t *app, fz_obj *uri)
{
- char buf[2048];
+ char *buf;
+ buf = fz_malloc(fz_tostrlen(uri) + 1);
memcpy(buf, fz_tostrbuf(uri), fz_tostrlen(uri));
buf[fz_tostrlen(uri)] = 0;
winopenuri(app, buf);
+ fz_free(buf);
}
static void pdfapp_gotopage(pdfapp_t *app, fz_obj *obj)
diff --git a/apps/unix/x11pdf.c b/apps/unix/x11pdf.c
index 68c93ac1..20b9d79e 100644
--- a/apps/unix/x11pdf.c
+++ b/apps/unix/x11pdf.c
@@ -428,12 +428,10 @@ void onselreq(Window requestor, Atom selection, Atom target, Atom property, Time
void winopenuri(pdfapp_t *app, char *buf)
{
- char cmd[2048];
- if (getenv("BROWSER"))
- sprintf(cmd, "$BROWSER %s &", buf);
- else
- sprintf(cmd, "open %s", buf);
- system(cmd);
+ char *browser = getenv("BROWSER");
+ if (!browser)
+ browser = "open";
+ execlp(browser, browser, buf, 0);
}
static void onkey(int c)