Hello Tom,

Here is another example that causes a crash, probably for the same reason but 
better be safe than sorry:

select xslt_process('<root xml_tb_version="2.0" type="struct" >
<ttm type="int32" >60</ttm>
<delta type="double" >0.75</delta>
<ttm2 type="int32" >30</ttm2>
<delta2 type="double" >0.75</delta2>
<expMonthNum type="int32" >1</expMonthNum>
<assetComb type="cell" >
        <item type="char" >calendar spread</item>
</assetComb>
</root>',
'<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="root">
        <xsl:for-each select="*">
        <xsl:if test="item">
                <elem type="{@type}" name="{global-name()}">
                <xsl:value-of select="./item"/>
                </elem>
                <xsl:text>&#10;</xsl:text>              
        </xsl:if>
        <xsl:if test="not(item)">
                <elem type="{@type}" name="{name()}">
                <xsl:value-of select="."/>
                </elem>
                <xsl:text>&#10;</xsl:text>              
        </xsl:if>        
        </xsl:for-each>
</xsl:template>
</xsl:stylesheet>','')

A correct error report for this case would be something like "function 
global-name is unknown" (I've just replaced a correct "name" function with 
"global-name") but of course "failed to apply stylesheet" is still better than 
a crash :)

Thanks,
Peter


Peter Gagarinov | Head of Modelling and Analytics

Allied Testing


-----Original Message-----
From: Tom Lane [mailto:t...@sss.pgh.pa.us] 
Sent: Tuesday, June 05, 2012 4:16 AM
To: Peter Gagarinov
Cc: pgsql-bugs@postgresql.org
Subject: Re: [BUGS] Calling xlst_process with certain arguments causes server 
crash 

I wrote:
> Hm, apparently xsltApplyStylesheet returns a NULL in this example, and 
> we're passing that on to xsltSaveResultToString which is not expecting 
> any such thing.  I presume we need another error check here, but what 
> should the error say exactly?  Can we get any info more detailed than 
> "failed to apply stylesheet"?

Apparently not -- or at least, if libxslt provides any easy way to extract 
error reports, it's not evident from the pretty-awful documentation.  I've 
committed a fix that just reports "failed to apply stylesheet".

                        regards, tom lane

-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to