mirror of
				https://gitlab.gnome.org/GNOME/libxslt
				synced 2025-11-04 00:53:12 +03:00 
			
		
		
		
	Fix xsl:number generating invalid UTF-8
xsl:number with an empty grouping separator would generate 0xFF bytes. Found by OSS-Fuzz.
This commit is contained in:
		@@ -1494,6 +1494,8 @@ xsltNumberComp(xsltStylesheetPtr style, xmlNodePtr cur) {
 | 
			
		||||
        comp->numdata.groupingCharacterLen = xmlStrlen(prop);
 | 
			
		||||
	comp->numdata.groupingCharacter =
 | 
			
		||||
	    xsltGetUTF8Char(prop, &(comp->numdata.groupingCharacterLen));
 | 
			
		||||
        if (comp->numdata.groupingCharacter < 0)
 | 
			
		||||
            comp->numdata.groupingCharacter = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    prop = xsltGetCNsProp(style, cur, (const xmlChar *)"grouping-size", XSLT_NAMESPACE);
 | 
			
		||||
 
 | 
			
		||||
@@ -74,6 +74,7 @@ EXTRA_DIST = 						\
 | 
			
		||||
    test-7.7-3.out test-7.7-3.xml test-7.7-3.xsl	\
 | 
			
		||||
    test-7.7-4.out test-7.7-4.xml test-7.7-4.xsl	\
 | 
			
		||||
    test-7.7-5.out test-7.7-5.xml test-7.7-5.xsl	\
 | 
			
		||||
    test-7.7-6.out test-7.7-6.xml test-7.7-6.xsl	\
 | 
			
		||||
    test-8-1.out test-8-1.xml test-8-1.xsl		\
 | 
			
		||||
    test-9.1-1.out test-9.1-1.xml test-9.1-1.xsl	\
 | 
			
		||||
    test-9.1-2.out test-9.1-2.xml test-9.1-2.xsl	\
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								tests/REC/test-7.7-6.out
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								tests/REC/test-7.7-6.out
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
<?xml version="1.0"?>
 | 
			
		||||
<results>
 | 
			
		||||
  <r>1.234.567.890</r>
 | 
			
		||||
  <r>1’234’567’890</r>
 | 
			
		||||
  <r>1.2.3.4.5.6.7.8.9.0</r>
 | 
			
		||||
  <r>1234567890</r>
 | 
			
		||||
  <r>1234567890</r>
 | 
			
		||||
  <r>1234567890</r>
 | 
			
		||||
  <r>1234567890</r>
 | 
			
		||||
  <r>1234567890</r>
 | 
			
		||||
</results>
 | 
			
		||||
							
								
								
									
										1
									
								
								tests/REC/test-7.7-6.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tests/REC/test-7.7-6.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
<doc/>
 | 
			
		||||
							
								
								
									
										36
									
								
								tests/REC/test-7.7-6.xsl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								tests/REC/test-7.7-6.xsl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
			
		||||
<xsl:stylesheet
 | 
			
		||||
  version="1.0"
 | 
			
		||||
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 | 
			
		||||
 | 
			
		||||
<xsl:output indent="yes"/>
 | 
			
		||||
 | 
			
		||||
<xsl:template match="/">
 | 
			
		||||
  <results>
 | 
			
		||||
    <r>
 | 
			
		||||
      <xsl:number value="1234567890" grouping-separator="." grouping-size="3"/>
 | 
			
		||||
    </r>
 | 
			
		||||
    <r>
 | 
			
		||||
      <xsl:number value="1234567890" grouping-separator="’" grouping-size="3"/>
 | 
			
		||||
    </r>
 | 
			
		||||
    <r>
 | 
			
		||||
      <xsl:number value="1234567890" grouping-separator="." grouping-size="1"/>
 | 
			
		||||
    </r>
 | 
			
		||||
    <r>
 | 
			
		||||
      <xsl:number value="1234567890" grouping-separator="." grouping-size="0"/>
 | 
			
		||||
    </r>
 | 
			
		||||
    <r>
 | 
			
		||||
      <xsl:number value="1234567890" grouping-separator="." grouping-size="-1"/>
 | 
			
		||||
    </r>
 | 
			
		||||
    <r>
 | 
			
		||||
      <xsl:number value="1234567890" grouping-separator="." grouping-size="99"/>
 | 
			
		||||
    </r>
 | 
			
		||||
    <r>
 | 
			
		||||
      <xsl:number value="1234567890" grouping-separator="." grouping-size="abc"/>
 | 
			
		||||
    </r>
 | 
			
		||||
    <r>
 | 
			
		||||
      <xsl:number value="1234567890" grouping-separator="" grouping-size="3"/>
 | 
			
		||||
    </r>
 | 
			
		||||
  </results>
 | 
			
		||||
</xsl:template>
 | 
			
		||||
 | 
			
		||||
</xsl:stylesheet>
 | 
			
		||||
		Reference in New Issue
	
	Block a user