SHA256
1
0
forked from pool/xfig
Dr. Werner Fink 2010-12-01 11:41:01 +00:00 committed by Git OBS Bridge
parent dce43f95aa
commit 5611593192
2 changed files with 43 additions and 4 deletions

View File

@ -1,12 +1,43 @@
--- f_readeps.c --- f_readeps.c
+++ f_readeps.c 2010-08-10 10:50:57.699132894 +0000 +++ f_readeps.c 2010-12-01 11:26:52.786700258 +0000
@@ -318,8 +318,8 @@ bitmap_from_gs(file, filetype, pic, urx, @@ -257,6 +257,7 @@ bitmap_from_gs(file, filetype, pic, urx,
gscom[0] = '\0'; char tmpfile[PATH_MAX],
pixnam[PATH_MAX],
errnam[PATH_MAX],
+ psnam[PATH_MAX],
gscom[2 * PATH_MAX];
wid = urx - llx;
@@ -307,19 +308,22 @@ bitmap_from_gs(file, filetype, pic, urx,
/* for color, use pcx */
driver = "pcx256";
} }
- /* avoid absolute paths (for Cygwin with gswin32) by changing directory */
- if (tmpfile[0] == '/') {
- psnam = strrchr(tmpfile, '/');
- *psnam = 0;
- sprintf(gscom, "cd \"%s/\";", tmpfile);
- *psnam++ = '/'; /* Restore name for unlink() below */
- } else {
- psnam = tmpfile;
- gscom[0] = '\0';
+ /* Canonicalize the eps file filename, needed to "defeat" gs after .locksafe */
+ if (!realpath(tmpfile, psnam)) {
+ file_msg("Cannot canonicalize %s: %s\n", tmpfile, strerror(errno));
+ return False;
}
+ /* From Language.htm of ghostscript 9.00 and higher:
+ * If Ghostscript is started with -dNOSAFER or -dDELAYSAFER, this operator can
+ * be used to enter SAFER mode with the current set of PermitFile... user
+ * parameters in effect. Since .setsafe sets the PermitFile... user parameters
+ * to empty arrays, a script or job server that needs to enable certain paths
+ * for file Reading, Writing and/or Control can use this operator to perform
+ * the locking needed to enter SAFER mode.
+ */
sprintf(&gscom[strlen(gscom)], sprintf(&gscom[strlen(gscom)],
- "%s -r72x72 -dSAFER -sDEVICE=%s -g%dx%d -sOutputFile=%s -q - > %s 2>&1", - "%s -r72x72 -dSAFER -sDEVICE=%s -g%dx%d -sOutputFile=%s -q - > %s 2>&1",
- appres.ghostscript, driver, wid, ht, pixnam, errnam); - appres.ghostscript, driver, wid, ht, pixnam, errnam);
+ "%s -r72x72 -dNOSAFER -sDEVICE=%s -g%dx%d -sOutputFile=%s -c '<</PermitFileReading[(%s)]>> setuserparams .locksafe' -q - > %s 2>&1", + "%s -r72x72 -sDEVICE=%s -g%dx%d -dDELAYSAFER -sOutputFile=%s -c '<</PermitFileReading[(%s)]>> setuserparams .locksafe' -q - > %s 2>&1",
+ appres.ghostscript, driver, wid, ht, pixnam, psnam, errnam); + appres.ghostscript, driver, wid, ht, pixnam, psnam, errnam);
if (appres.DEBUG) if (appres.DEBUG)
fprintf(stderr,"calling: %s\n",gscom); fprintf(stderr,"calling: %s\n",gscom);

View File

@ -1,3 +1,11 @@
-------------------------------------------------------------------
Wed Dec 1 12:27:48 CET 2010 - werner@suse.de
- Do canonicalize the eps files used with the previous fix
(thanks goes to Hans de Goede from RedHat)
- Make previous fix more clear by adding a command how the
used .locksafe operator works
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Aug 10 13:00:25 CEST 2010 - werner@suse.de Tue Aug 10 13:00:25 CEST 2010 - werner@suse.de