Changeset 11526 in josm
- Timestamp:
- 2017-02-02T01:22:52+01:00 (8 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/com/kitfox/svg/ImageSVG.java
r11525 r11526 115 115 { 116 116 URI src = sty.getURIValue(getXMLBase()); 117 // CVE-2017-5617: Allow only data scheme 117 118 if ("data".equals(src.getScheme())) 118 119 { 119 120 imageSrc = new URL(null, src.toASCIIString(), new Handler()); 120 } else121 {122 try123 {124 imageSrc = src.toURL();125 } catch (Exception e)126 {127 Logger.getLogger(SVGConst.SVG_LOGGER).log(Level.WARNING,128 "Could not parse xlink:href " + src, e);129 // e.printStackTrace();130 imageSrc = null;131 }132 121 } 133 122 } … … 137 126 } 138 127 139 diagram.getUniverse().registerImage(imageSrc); 140 141 //Set widths if not set 142 BufferedImage img = diagram.getUniverse().getImage(imageSrc); 143 if (img == null) 144 { 128 if (imageSrc != null) 129 { 130 diagram.getUniverse().registerImage(imageSrc); 131 132 //Set widths if not set 133 BufferedImage img = diagram.getUniverse().getImage(imageSrc); 134 if (img == null) 135 { 136 xform = new AffineTransform(); 137 bounds = new Rectangle2D.Float(); 138 return; 139 } 140 141 if (width == 0) 142 { 143 width = img.getWidth(); 144 } 145 if (height == 0) 146 { 147 height = img.getHeight(); 148 } 149 150 //Determine image xform 145 151 xform = new AffineTransform(); 146 bounds = new Rectangle2D.Float(); 147 return; 148 } 149 150 if (width == 0) 151 { 152 width = img.getWidth(); 153 } 154 if (height == 0) 155 { 156 height = img.getHeight(); 157 } 158 159 //Determine image xform 160 xform = new AffineTransform(); 161 // xform.setToScale(this.width / img.getWidth(), this.height / img.getHeight()); 162 // xform.translate(this.x, this.y); 163 xform.translate(this.x, this.y); 164 xform.scale(this.width / img.getWidth(), this.height / img.getHeight()); 152 xform.translate(this.x, this.y); 153 xform.scale(this.width / img.getWidth(), this.height / img.getHeight()); 154 } 165 155 166 156 bounds = new Rectangle2D.Float(this.x, this.y, this.width, this.height); … … 336 326 URI src = sty.getURIValue(getXMLBase()); 337 327 338 URL newVal; 328 URL newVal = null; 329 // CVE-2017-5617: Allow only data scheme 339 330 if ("data".equals(src.getScheme())) 340 331 { 341 332 newVal = new URL(null, src.toASCIIString(), new Handler()); 342 } else343 {344 newVal = src.toURL();345 333 } 346 334 347 if ( !newVal.equals(imageSrc))335 if (newVal != null && !newVal.equals(imageSrc)) 348 336 { 349 337 imageSrc = newVal; -
trunk/test/unit/org/openstreetmap/josm/tools/ImageProviderTest.java
r10409 r11526 3 3 4 4 import static org.junit.Assert.assertEquals; 5 import static org.junit.Assert.assertFalse; 5 6 import static org.junit.Assert.assertNotNull; 6 7 … … 9 10 import java.io.File; 10 11 import java.io.IOException; 12 import java.util.logging.Handler; 13 import java.util.logging.LogRecord; 14 import java.util.logging.Logger; 15 16 import javax.swing.ImageIcon; 11 17 12 18 import org.junit.BeforeClass; … … 15 21 import org.openstreetmap.josm.TestUtils; 16 22 23 import com.kitfox.svg.SVGConst; 24 17 25 /** 18 26 * Unit tests of {@link ImageProvider} class. 19 27 */ 20 28 public class ImageProviderTest { 29 30 private static final class LogHandler14319 extends Handler { 31 boolean failed; 32 33 @Override 34 public void publish(LogRecord record) { 35 if ("Could not load image: https://host-in-the-trusted-network.com/test.jpg".equals(record.getMessage())) { 36 failed = true; 37 } 38 } 39 40 @Override 41 public void flush() { 42 } 43 44 @Override 45 public void close() throws SecurityException { 46 } 47 } 21 48 22 49 /** … … 53 80 54 81 /** 82 * Non-regression test for ticket <a href="https://josm.openstreetmap.de/ticket/14319">#14319</a> 83 * @throws IOException if an error occurs during reading 84 */ 85 @Test 86 public void testTicket14319() throws IOException { 87 LogHandler14319 handler = new LogHandler14319(); 88 Logger.getLogger(SVGConst.SVG_LOGGER).addHandler(handler); 89 ImageIcon img = new ImageProvider( 90 new File(TestUtils.getRegressionDataDir(14319)).getAbsolutePath(), "attack.svg").get(); 91 assertNotNull(img); 92 assertFalse(handler.failed); 93 } 94 95 /** 55 96 * Test fetching an image using {@code wiki://} protocol. 56 97 */
Note:
See TracChangeset
for help on using the changeset viewer.