1
0
mirror of https://github.com/octoleo/plantuml.git synced 2024-11-28 15:56:31 +00:00

Version 1.2022.14

This commit is contained in:
Arnaud Roques 2022-12-06 20:47:32 +01:00
parent 3cf5e15bb4
commit 117102bb65
7 changed files with 33 additions and 15 deletions

View File

@ -293,11 +293,11 @@ public enum FileFormat {
if (svg == null) if (svg == null)
return false; return false;
final String currentSignature = SvgGraphics.getMD5Hex(currentMetadata); final String currentSignature = SvgGraphics.getMetadataHex(currentMetadata);
final int idx = svg.lastIndexOf(SvgGraphics.MD5_HEADER); final int idx = svg.lastIndexOf(SvgGraphics.META_HEADER);
if (idx != -1) { if (idx != -1) {
final String part = svg.substring(idx + SvgGraphics.MD5_HEADER.length()); final String part = svg.substring(idx + SvgGraphics.META_HEADER.length());
return part.startsWith(currentSignature); return part.startsWith(currentSignature + "]");
} }
} }

View File

@ -245,10 +245,14 @@ public class SURL {
} }
private boolean forbiddenURL(String full) { private boolean forbiddenURL(String full) {
if (full.startsWith("https://") == false && full.startsWith("http://") == false)
return true;
if (full.matches("^https?://[-#.0-9:\\[\\]+]+/.*")) if (full.matches("^https?://[-#.0-9:\\[\\]+]+/.*"))
return true; return true;
if (full.matches("^https?://[^.]+/.*")) if (full.matches("^https?://[^.]+/.*"))
return true; return true;
if (full.matches("^https?://[^.]+$"))
return true;
return false; return false;
} }

View File

@ -181,7 +181,9 @@ public class Style {
public UFont getUFont() { public UFont getUFont() {
final String family = value(PName.FontName).asString(); final String family = value(PName.FontName).asString();
final int fontStyle = value(PName.FontStyle).asFontStyle(); final int fontStyle = value(PName.FontStyle).asFontStyle();
final int size = value(PName.FontSize).asInt(); int size = value(PName.FontSize).asInt();
if (size == 0)
size = 14;
return new UFont(family, fontStyle, size); return new UFont(family, fontStyle, size);
} }

View File

@ -115,6 +115,8 @@ public class ValueImpl implements Value {
public int asInt() { public int asInt() {
String s = value.getValue1(); String s = value.getValue1();
s = s.replaceAll("[^0-9]", ""); s = s.replaceAll("[^0-9]", "");
if (s.length() == 0)
return 0;
return Integer.parseInt(s); return Integer.parseInt(s);
} }

View File

@ -67,9 +67,9 @@ import org.w3c.dom.Element;
import net.sourceforge.plantuml.FileUtils; import net.sourceforge.plantuml.FileUtils;
import net.sourceforge.plantuml.Log; import net.sourceforge.plantuml.Log;
import net.sourceforge.plantuml.SignatureUtils;
import net.sourceforge.plantuml.awt.geom.XDimension2D; import net.sourceforge.plantuml.awt.geom.XDimension2D;
import net.sourceforge.plantuml.code.Base64Coder; import net.sourceforge.plantuml.code.Base64Coder;
import net.sourceforge.plantuml.code.TranscoderUtil;
import net.sourceforge.plantuml.log.Logme; import net.sourceforge.plantuml.log.Logme;
import net.sourceforge.plantuml.security.SImageIO; import net.sourceforge.plantuml.security.SImageIO;
import net.sourceforge.plantuml.security.SecurityProfile; import net.sourceforge.plantuml.security.SecurityProfile;
@ -985,15 +985,25 @@ public class SvgGraphics {
this.hidden = hidden; this.hidden = hidden;
} }
public static final String MD5_HEADER = "<!--MD5=["; public static final String META_HEADER = "<!--SRC=[";
public static String getMD5Hex(String comment) { public static String getMetadataHex(String comment) {
return SignatureUtils.getMD5Hex(comment); try {
final String encoded = TranscoderUtil.getDefaultTranscoderProtected().encode(comment);
return encoded;
} catch (IOException e) {
return "ERROR42";
}
}
public void addCommentMetadata(String metadata) {
final String signature = getMetadataHex(metadata);
final String comment = "SRC=[" + signature + "]";
final Comment commentElement = document.createComment(comment);
getG().appendChild(commentElement);
} }
public void addComment(String comment) { public void addComment(String comment) {
final String signature = getMD5Hex(comment);
comment = "MD5=[" + signature + "]\n" + comment;
final Comment commentElement = document.createComment(comment); final Comment commentElement = document.createComment(comment);
getG().appendChild(commentElement); getG().appendChild(commentElement);
} }

View File

@ -147,7 +147,7 @@ public class UGraphicSvg extends AbstractUGraphic<SvgGraphics> implements ClipCo
public void writeToStream(OutputStream os, String metadata, int dpi) throws IOException { public void writeToStream(OutputStream os, String metadata, int dpi) throws IOException {
try { try {
if (metadata != null) if (metadata != null)
getGraphicObject().addComment(metadata); getGraphicObject().addCommentMetadata(metadata);
if (interactive) { if (interactive) {
// For performance reasons and also because we want the entire graph DOM to be // For performance reasons and also because we want the entire graph DOM to be

View File

@ -45,7 +45,7 @@ public class Version {
private static final int MAJOR_SEPARATOR = 1000000; private static final int MAJOR_SEPARATOR = 1000000;
public static int version() { public static int version() {
return 1202213; return 1202214;
} }
public static int versionPatched() { public static int versionPatched() {
@ -81,7 +81,7 @@ public class Version {
} }
public static int beta() { public static int beta() {
final int beta = 7; final int beta = 0;
return beta; return beta;
} }
@ -94,7 +94,7 @@ public class Version {
} }
public static long compileTime() { public static long compileTime() {
return 1668864137549L; return 1670351053526L;
} }
public static String compileTimeString() { public static String compileTimeString() {