Using Pipes with GS 9.50 and -dSAFER

Sheri Steeves <[email protected]> Tue, 29 Oct 2019 18:21:30 +0000
Newsgroups gmane.comp.printing.ghostscript.devel
Message-ID <[email protected]>
--_000_6ED7CC8A5DB1164BBF4E17873964BE64C4911261SBS2011peernetl_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hello,

We have existing code using the command line arguments and gs_init_args wit=
h Ghostscript to convert a PDF or a PostScript into a Windows bitmap.

With the latest version, GS 9.50, this code fails and I'm pretty sure I'm h=
itting issues with the new file path restrictions.


The error messages are as follows:
GPL Ghostscript 9.50: **** Could not open the file 0000083C .
      Error: /invalidfileaccess in --showpage-


I tried adding the appropriate paths hardcoded as a test (gsargv[i++] =3D "=
--permit-file-all=3DC:\\Test;C:\\Users\\User\\AppData\\Local\\Temp";) but s=
till got the same error messages.

This means that I either don't have all the paths that I need yet, or my ot=
her thought was that my issue stems from the fact that my output is set to =
a pipe handle. (sprintf(pBuf, "-sOutputFile=3D%%handle%%%p", m_hGSPipeWrite=
r );)

Does 9.50 still support writing to the OutputFile as a pipe? If it does, th=
en I know I just need to determine the correct file permission paths.

Here is my command line at this point.

gsargv[i++] =3D "PN" ;             // actual value does not matter

sprintf(pBuf, "-I%s;%s", szLibDir, szFontDir );
gsargv[i++] =3D pBuf ;

sprintf(pBuf, "-sFONTPATH=3D\"%s\"", szFontDir );
gsargv[i++] =3D pBuf ;

cbNeeded =3D (lstrlen(_T("-sOutputFile=3D%%handle%%")) + 12 ) * sizeof (TCH=
AR )  ;
pBuf =3D (char *)alloca( cbNeeded ) ;
memset( pBuf, 0, cbNeeded ) ;
sprintf(pBuf, "-sOutputFile=3D%%handle%%%p", hPipeWriter );
gsargv[i++] =3D pBuf ;

gsargv[i++] =3D "-sDEVICE=3Dbmp16m" ;
gsargv[i++] =3D "-dTextAlphaBits=3D4" ;
gsargv[i++] =3D "-dGraphicsAlphaBits=3D4" ;

gsargv[i++] =3D "--permit-file-all=3DC:\\Test;C:\\Users\\sheri\\AppData\\Lo=
cal\\Temp " ;

// batch mode, don't pause between files
gsargv[i++] =3D "-dSAFER" ;
gsargv[i++] =3D "-dNOPAUSE" ;
gsargv[i++] =3D "-dBATCH" ;


sprintf(pBuf, "-r%dx%d", dwResolutionX, dwResolutionY ) ;
gsargv[i++] =3D pBuf ;

etc...



Thanks for any help you can shed on this issue.

Sheri



--_000_6ED7CC8A5DB1164BBF4E17873964BE64C4911261SBS2011peernetl_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri",sans-serif;
	mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#0563C1;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:#954F72;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri",sans-serif;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri",sans-serif;
	mso-fareast-language:EN-US;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-CA" link=3D"#0563C1" vlink=3D"#954F72">
<div class=3D"WordSection1">
<p class=3D"MsoNormal">Hello, <o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">We have existing code using the command line argumen=
ts and gs_init_args with Ghostscript to convert a PDF or a PostScript into =
a Windows bitmap.
<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">With the latest version, GS 9.50, this code fails an=
d I&#8217;m pretty sure I&#8217;m hitting issues with the new file path res=
trictions.
<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">The error messages are as follows: <o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span lang=3D"EN-US" s=
tyle=3D"font-size:10.0pt;font-family:&quot;Courier New&quot;">GPL Ghostscri=
pt 9.50: **** Could not open the file 0000083C .<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:10.0pt;font-=
family:&quot;Courier New&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Error: /inva=
lidfileaccess in --showpage&#8212;<o:p></o:p></span></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">I tried adding the appropriate paths hardcoded as a =
test (<span style=3D"font-size:9.5pt;font-family:Consolas;color:black;backg=
round:white;mso-highlight:white">gsargv[i&#43;&#43;] =3D
</span><span style=3D"font-size:9.5pt;font-family:Consolas;color:#A31515;ba=
ckground:white;mso-highlight:white">&quot;--permit-file-all=3DC:\\Test;C:\\=
Users\\User\\AppData\\Local\\Temp&quot;</span><span style=3D"font-size:9.5p=
t;font-family:Consolas;color:black;background:white;mso-highlight:white">;<=
/span>)
 but still got the same error messages. <o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">This means that I either don&#8217;t have all the pa=
ths that I need yet, or my other thought was that my issue stems from the f=
act that my output is set to a pipe handle. (<span style=3D"font-size:9.5pt=
;font-family:Consolas">sprintf(pBuf,
<span style=3D"color:#A31515">&quot;-sOutputFile=3D%%handle%%%p&quot;</span=
>, m_hGSPipeWriter );</span>)<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Does 9.50 still support writing to the OutputFile as=
 a pipe? If it does, then I know I just need to determine the correct file =
permission paths.<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal">Here is my command line at this point.<o:p></o:p></p=
>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas">gsargv[i&#43;&#43;] =3D
<span style=3D"color:#A31515">&quot;PN&quot;</span> ;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style=3D"color:gre=
en">// actual value does not matter</span><o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas">sprintf(pBuf,
<span style=3D"color:#A31515">&quot;-I%s;%s&quot;</span>, szLibDir, szFontD=
ir );<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas">gsargv[i&#43;&#43;] =3D pBuf ;
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas">sprintf(pBuf,
<span style=3D"color:#A31515">&quot;-sFONTPATH=3D\&quot;%s\&quot;&quot;</sp=
an>, szFontDir );<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas">gsargv[i&#43;&#43;] =3D pBuf ;<o:p></o:p></s=
pan></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas;color:black;background:white;mso-highlight:wh=
ite">cbNeeded =3D (</span><span style=3D"font-size:9.5pt;font-family:Consol=
as;color:#6F008A;background:white;mso-highlight:white">lstrlen</span><span =
style=3D"font-size:9.5pt;font-family:Consolas;color:black;background:white;=
mso-highlight:white">(</span><span style=3D"font-size:9.5pt;font-family:Con=
solas;color:#6F008A;background:white;mso-highlight:white">_T</span><span st=
yle=3D"font-size:9.5pt;font-family:Consolas;color:black;background:white;ms=
o-highlight:white">(</span><span style=3D"font-size:9.5pt;font-family:Conso=
las;color:#A31515;background:white;mso-highlight:white">&quot;-sOutputFile=
=3D%%handle%%&quot;</span><span style=3D"font-size:9.5pt;font-family:Consol=
as;color:black;background:white;mso-highlight:white">))
 &#43; 12 ) * </span><span style=3D"font-size:9.5pt;font-family:Consolas;co=
lor:blue;background:white;mso-highlight:white">sizeof</span><span style=3D"=
font-size:9.5pt;font-family:Consolas;color:black;background:white;mso-highl=
ight:white"> (</span><span style=3D"font-size:9.5pt;font-family:Consolas;co=
lor:#2B91AF;background:white;mso-highlight:white">TCHAR</span><span style=
=3D"font-size:9.5pt;font-family:Consolas;color:black;background:white;mso-h=
ighlight:white">
 )&nbsp; ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p=
></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas;color:black;background:white;mso-highlight:wh=
ite">pBuf =3D (</span><span style=3D"font-size:9.5pt;font-family:Consolas;c=
olor:blue;background:white;mso-highlight:white">char</span><span style=3D"f=
ont-size:9.5pt;font-family:Consolas;color:black;background:white;mso-highli=
ght:white">
 *)</span><span style=3D"font-size:9.5pt;font-family:Consolas;color:#6F008A=
;background:white;mso-highlight:white">alloca</span><span style=3D"font-siz=
e:9.5pt;font-family:Consolas;color:black;background:white;mso-highlight:whi=
te">( cbNeeded ) ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas;color:black;background:white;mso-highlight:wh=
ite">memset( pBuf, 0, cbNeeded ) ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas;color:black;background:white;mso-highlight:wh=
ite">sprintf(pBuf,
</span><span style=3D"font-size:9.5pt;font-family:Consolas;color:#A31515;ba=
ckground:white;mso-highlight:white">&quot;-sOutputFile=3D%%handle%%%p&quot;=
</span><span style=3D"font-size:9.5pt;font-family:Consolas;color:black;back=
ground:white;mso-highlight:white">, hPipeWriter
 );</span><span style=3D"font-size:9.5pt;font-family:Consolas;color:black">=
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas;color:black;background:white;mso-highlight:wh=
ite">gsargv[i&#43;&#43;] =3D pBuf ;</span><span style=3D"font-size:9.5pt;fo=
nt-family:Consolas;color:black"><o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas;color:black;background:white;mso-highlight:wh=
ite">gsargv[i&#43;&#43;] =3D
</span><span style=3D"font-size:9.5pt;font-family:Consolas;color:#A31515;ba=
ckground:white;mso-highlight:white">&quot;-sDEVICE=3Dbmp16m&quot;</span><sp=
an style=3D"font-size:9.5pt;font-family:Consolas;color:black;background:whi=
te;mso-highlight:white"> ;
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas;color:black;background:white;mso-highlight:wh=
ite">gsargv[i&#43;&#43;] =3D
</span><span style=3D"font-size:9.5pt;font-family:Consolas;color:#A31515;ba=
ckground:white;mso-highlight:white">&quot;-dTextAlphaBits=3D4&quot;</span><=
span style=3D"font-size:9.5pt;font-family:Consolas;color:black;background:w=
hite;mso-highlight:white"> ;<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas;color:black;background:white;mso-highlight:wh=
ite">gsargv[i&#43;&#43;] =3D
</span><span style=3D"font-size:9.5pt;font-family:Consolas;color:#A31515;ba=
ckground:white;mso-highlight:white">&quot;-dGraphicsAlphaBits=3D4&quot;</sp=
an><span style=3D"font-size:9.5pt;font-family:Consolas;color:black;backgrou=
nd:white;mso-highlight:white"> ;<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas;color:black;background:white;mso-highlight:wh=
ite"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas">gsargv[i&#43;&#43;] =3D
<span style=3D"color:#A31515">&quot;--permit-file-all=3DC:\\Test;C:\\Users\=
\sheri\\AppData\\Local\\Temp &quot;</span> ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas;color:black;background:white;mso-highlight:wh=
ite"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas;color:green">// batch mode, don't pause betwe=
en files&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;
</span><span style=3D"font-size:9.5pt;font-family:Consolas"><o:p></o:p></sp=
an></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas">gsargv[i&#43;&#43;] =3D
<span style=3D"color:#A31515">&quot;-dSAFER&quot;</span> ;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas">gsargv[i&#43;&#43;] =3D
<span style=3D"color:#A31515">&quot;-dNOPAUSE&quot;</span> ;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span=
></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas">gsargv[i&#43;&#43;] =3D
<span style=3D"color:#A31515">&quot;-dBATCH&quot;</span> ;<o:p></o:p></span=
></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas;color:black;background:white;mso-highlight:wh=
ite"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas;color:black;background:white;mso-highlight:wh=
ite">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><span style=3D"font-size:9.5pt;font-family:Consolas"><o:p></o:p></sp=
an></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas">sprintf(pBuf,
<span style=3D"color:#A31515">&quot;-r%dx%d&quot;</span>, dwResolutionX, dw=
ResolutionY ) ; <o:p>
</o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas">gsargv[i&#43;&#43;] =3D pBuf ;
<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas">etc...<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"text-autospace:none"><span style=3D"font-si=
ze:9.5pt;font-family:Consolas">Thanks for any help you can shed on this iss=
ue.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><span style=3D"font-size:10.0pt;color:black;mso-fare=
ast-language:EN-CA">Sheri</span><span style=3D"font-size:10.0pt;mso-fareast=
-language:EN-CA">
<br>
<br>
<span style=3D"color:black"><o:p></o:p></span></span></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>

--_000_6ED7CC8A5DB1164BBF4E17873964BE64C4911261SBS2011peernetl_--