public class org.owasp.validator.html.scan.AntiSamyDOMScanner extends org.owasp.validator.html.scan.AbstractAntiSamyScanner
{
private org.w3c.dom.Document document;
private org.w3c.dom.DocumentFragment dom;
private org.owasp.validator.html.CleanResults results;
private static final int maxDepth;
private static final java.util.regex.Pattern invalidXmlCharacters;
private static final java.util.regex.Pattern conditionalDirectives;
private static final java.util.Queue cachedItems;
static void <clinit>()
{
java.util.regex.Pattern v, v;
java.util.concurrent.ConcurrentLinkedQueue v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("[\\u0000-\\u001F\\uD800-\\uDFFF\\uFFFE-\\uFFFF&&[^\\u0009\\u000A\\u000D]]");
<org.owasp.validator.html.scan.AntiSamyDOMScanner: java.util.regex.Pattern invalidXmlCharacters> = v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("<?!?\\[\\s*(?:end)?if[^]]*\\]>?");
<org.owasp.validator.html.scan.AntiSamyDOMScanner: java.util.regex.Pattern conditionalDirectives> = v;
v = new java.util.concurrent.ConcurrentLinkedQueue;
specialinvoke v.<java.util.concurrent.ConcurrentLinkedQueue: void <init>()>();
<org.owasp.validator.html.scan.AntiSamyDOMScanner: java.util.Queue cachedItems> = v;
return;
}
public void <init>(org.owasp.validator.html.Policy)
{
org.w3c.dom.DocumentFragment v;
org.owasp.validator.html.Policy v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.w3c.dom.Document v;
org.htmlunit.cyberneko.xerces.dom.DocumentImpl v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.owasp.validator.html.Policy;
specialinvoke v.<org.owasp.validator.html.scan.AbstractAntiSamyScanner: void <init>(org.owasp.validator.html.Policy)>(v);
v = new org.htmlunit.cyberneko.xerces.dom.DocumentImpl;
specialinvoke v.<org.htmlunit.cyberneko.xerces.dom.DocumentImpl: void <init>()>();
v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.w3c.dom.Document document> = v;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.w3c.dom.Document document>;
v = interfaceinvoke v.<org.w3c.dom.Document: org.w3c.dom.DocumentFragment createDocumentFragment()>();
v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.w3c.dom.DocumentFragment dom> = v;
v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.CleanResults results> = null;
return;
}
public void <init>() throws org.owasp.validator.html.PolicyException
{
org.w3c.dom.DocumentFragment v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.w3c.dom.Document v;
org.htmlunit.cyberneko.xerces.dom.DocumentImpl v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
specialinvoke v.<org.owasp.validator.html.scan.AbstractAntiSamyScanner: void <init>()>();
v = new org.htmlunit.cyberneko.xerces.dom.DocumentImpl;
specialinvoke v.<org.htmlunit.cyberneko.xerces.dom.DocumentImpl: void <init>()>();
v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.w3c.dom.Document document> = v;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.w3c.dom.Document document>;
v = interfaceinvoke v.<org.w3c.dom.Document: org.w3c.dom.DocumentFragment createDocumentFragment()>();
v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.w3c.dom.DocumentFragment dom> = v;
v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.CleanResults results> = null;
return;
}
public org.owasp.validator.html.CleanResults scan(java.lang.String) throws org.owasp.validator.html.ScanException
{
java.lang.Integer v, v;
java.lang.NullPointerException v;
java.util.regex.Matcher v;
org.owasp.validator.html.scan.AntiSamyDOMScanner$1 v;
boolean v, v, v;
org.htmlunit.cyberneko.parsers.DOMFragmentParser v;
org.owasp.validator.html.CleanResults v, v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.apache.xml.serialize.HTMLSerializer v;
java.lang.Exception v, v;
org.w3c.dom.DocumentFragment v, v, v, v;
java.util.List v, v, v;
java.util.Queue v, v;
java.lang.Object[] v;
org.owasp.validator.html.scan.AntiSamyDOMScanner$CachedItem v;
org.owasp.validator.html.InternalPolicy v, v, v, v;
long v;
org.owasp.validator.html.ScanException v, v, v, v;
java.lang.StringBuffer v;
int v, v, v;
java.lang.String v, v, v, v;
org.xml.sax.InputSource v;
java.io.StringWriter v;
org.apache.xml.serialize.OutputFormat v;
java.io.StringReader v;
java.lang.Object v, v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: java.lang.String;
if v != null goto label;
v = new org.owasp.validator.html.ScanException;
v = new java.lang.NullPointerException;
specialinvoke v.<java.lang.NullPointerException: void <init>(java.lang.String)>("Null HTML input");
specialinvoke v.<org.owasp.validator.html.ScanException: void <init>(java.lang.Exception)>(v);
throw v;
label:
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: java.util.List errorMessages>;
interfaceinvoke v.<java.util.List: void clear()>();
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: int getMaxInputSize()>();
v = virtualinvoke v.<java.lang.String: int length()>();
if v >= v goto label;
v = newarray (java.lang.Object)[2];
v = virtualinvoke v.<java.lang.String: int length()>();
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[0] = v;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v[1] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.size.toolarge", v);
v = new org.owasp.validator.html.ScanException;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: java.util.List errorMessages>;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
specialinvoke v.<org.owasp.validator.html.ScanException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: boolean isNofollowAnchors()>();
v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: boolean isNofollowAnchors> = v;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: boolean isNoopenerAndNoreferrerAnchors()>();
v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: boolean isNoopenerAndNoreferrerAnchors> = v;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: boolean isValidateParamAsEmbed()>();
v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: boolean isValidateParamAsEmbed> = v;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
label:
v = <org.owasp.validator.html.scan.AntiSamyDOMScanner: java.util.Queue cachedItems>;
v = interfaceinvoke v.<java.util.Queue: java.lang.Object poll()>();
if v != null goto label;
v = new org.owasp.validator.html.scan.AntiSamyDOMScanner$CachedItem;
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner$CachedItem: void <init>()>();
v = v;
label:
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner$CachedItem: java.util.regex.Matcher invalidXmlCharMatcher>;
v = specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: java.lang.String stripNonValidXMLCharacters(java.lang.String,java.util.regex.Matcher)>(v, v);
v = virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner$CachedItem: org.htmlunit.cyberneko.parsers.DOMFragmentParser getDomFragmentParser()>();
label:
v = new org.xml.sax.InputSource;
v = new java.io.StringReader;
specialinvoke v.<java.io.StringReader: void <init>(java.lang.String)>(v);
specialinvoke v.<org.xml.sax.InputSource: void <init>(java.io.Reader)>(v);
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.w3c.dom.DocumentFragment dom>;
virtualinvoke v.<org.htmlunit.cyberneko.parsers.DOMFragmentParser: void parse(org.xml.sax.InputSource,org.w3c.dom.DocumentFragment)>(v, v);
label:
goto label;
label:
v := @caughtexception;
v = new org.owasp.validator.html.ScanException;
specialinvoke v.<org.owasp.validator.html.ScanException: void <init>(java.lang.Exception)>(v);
throw v;
label:
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.w3c.dom.DocumentFragment dom>;
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void processChildren(org.w3c.dom.Node,int)>(v, 0);
v = new java.io.StringWriter;
specialinvoke v.<java.io.StringWriter: void <init>()>();
v = virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.apache.xml.serialize.OutputFormat getOutputFormat()>();
v = virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.apache.xml.serialize.HTMLSerializer getHTMLSerializer(java.io.Writer,org.apache.xml.serialize.OutputFormat)>(v, v);
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.w3c.dom.DocumentFragment dom>;
virtualinvoke v.<org.apache.xml.serialize.HTMLSerializer: void serialize(org.w3c.dom.DocumentFragment)>(v);
v = virtualinvoke v.<java.io.StringWriter: java.lang.StringBuffer getBuffer()>();
v = virtualinvoke v.<java.lang.StringBuffer: java.lang.String toString()>();
v = virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: java.lang.String trim(java.lang.String,java.lang.String)>(v, v);
v = new org.owasp.validator.html.scan.AntiSamyDOMScanner$1;
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner$1: void <init>(org.owasp.validator.html.scan.AntiSamyDOMScanner,java.lang.String)>(v, v);
v = new org.owasp.validator.html.CleanResults;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.w3c.dom.DocumentFragment dom>;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: java.util.List errorMessages>;
specialinvoke v.<org.owasp.validator.html.CleanResults: void <init>(long,java.util.concurrent.Callable,org.w3c.dom.DocumentFragment,java.util.List)>(v, v, v, v);
v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.CleanResults results> = v;
v = <org.owasp.validator.html.scan.AntiSamyDOMScanner: java.util.Queue cachedItems>;
interfaceinvoke v.<java.util.Queue: boolean add(java.lang.Object)>(v);
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.CleanResults results>;
label:
return v;
label:
v := @caughtexception;
v = new org.owasp.validator.html.ScanException;
specialinvoke v.<org.owasp.validator.html.ScanException: void <init>(java.lang.Exception)>(v);
throw v;
catch java.lang.Exception from label to label with label;
catch org.xml.sax.SAXException from label to label with label;
catch java.io.IOException from label to label with label;
}
static org.htmlunit.cyberneko.parsers.DOMFragmentParser getDomParser() throws org.xml.sax.SAXNotRecognizedException, org.xml.sax.SAXNotSupportedException
{
org.htmlunit.cyberneko.parsers.DOMFragmentParser v;
v = new org.htmlunit.cyberneko.parsers.DOMFragmentParser;
specialinvoke v.<org.htmlunit.cyberneko.parsers.DOMFragmentParser: void <init>()>();
virtualinvoke v.<org.htmlunit.cyberneko.parsers.DOMFragmentParser: void setProperty(java.lang.String,java.lang.Object)>("http://cyberneko.org/html/properties/names/elems", "lower");
virtualinvoke v.<org.htmlunit.cyberneko.parsers.DOMFragmentParser: void setFeature(java.lang.String,boolean)>("http://cyberneko.org/html/features/scanner/style/strip-cdata-delims", 0);
virtualinvoke v.<org.htmlunit.cyberneko.parsers.DOMFragmentParser: void setFeature(java.lang.String,boolean)>("http://cyberneko.org/html/features/scanner/cdata-sections", 1);
return v;
}
private void recursiveValidateTag(org.w3c.dom.Node, int) throws org.owasp.validator.html.ScanException
{
java.lang.Object[] v;
org.owasp.validator.html.InternalPolicy v, v, v;
short v;
org.owasp.validator.html.ScanException v;
org.w3c.dom.Node v, v;
int v, v, v;
java.lang.String v, v, v;
org.owasp.validator.html.model.Tag v, v;
boolean v, v, v, v, v, v, v, v, v, v, v;
org.w3c.dom.NodeList v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.Node;
v := @parameter: int;
v = v + 1;
if v <= 250 goto label;
v = new org.owasp.validator.html.ScanException;
specialinvoke v.<org.owasp.validator.html.ScanException: void <init>(java.lang.String)>("Too many nested tags");
throw v;
label:
v = v instanceof org.w3c.dom.Comment;
if v == 0 goto label;
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void processCommentNode(org.w3c.dom.Node)>(v);
return;
label:
v = v instanceof org.w3c.dom.Element;
v = interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.NodeList getChildNodes()>();
if v == 0 goto label;
v = interfaceinvoke v.<org.w3c.dom.NodeList: int getLength()>();
if v != 0 goto label;
v = specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: boolean removeDisallowedEmpty(org.w3c.dom.Node)>(v);
if v == 0 goto label;
return;
label:
v = v instanceof org.w3c.dom.Text;
if v == 0 goto label;
v = interfaceinvoke v.<org.w3c.dom.Node: short getNodeType()>();
if 4 != v goto label;
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void stripCData(org.w3c.dom.Node)>(v);
return;
label:
v = v instanceof org.w3c.dom.ProcessingInstruction;
if v == 0 goto label;
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void removePI(org.w3c.dom.Node)>(v);
label:
if v != 0 goto label;
return;
label:
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.Node getParentNode()>();
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getNodeName()>();
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase()>();
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: org.owasp.validator.html.model.Tag getTagByLowercaseName(java.lang.String)>(v);
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: org.owasp.validator.html.model.Tag getEmbedTag()>();
v = specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: boolean isMasqueradingParam(org.owasp.validator.html.model.Tag,org.owasp.validator.html.model.Tag,java.lang.String)>(v, v, v);
if v == 0 goto label;
v = <org.owasp.validator.html.scan.Constants: org.owasp.validator.html.model.Tag BASIC_PARAM_TAG_RULE>;
label:
if v != null goto label;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: boolean isEncodeUnknownTag()>();
if v != 0 goto label;
label:
if v == null goto label;
v = virtualinvoke v.<org.owasp.validator.html.model.Tag: boolean isAction(java.lang.String)>("encode");
if v == 0 goto label;
label:
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void encodeTag(int,org.w3c.dom.Element,java.lang.String,org.w3c.dom.NodeList)>(v, v, v, v);
goto label;
label:
if v == null goto label;
v = virtualinvoke v.<org.owasp.validator.html.model.Tag: boolean isAction(java.lang.String)>("filter");
if v == 0 goto label;
label:
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void actionFilter(int,org.w3c.dom.Element,java.lang.String,org.owasp.validator.html.model.Tag,org.w3c.dom.NodeList)>(v, v, v, v, v);
goto label;
label:
v = virtualinvoke v.<org.owasp.validator.html.model.Tag: boolean isAction(java.lang.String)>("validate");
if v == 0 goto label;
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void actionValidate(int,org.w3c.dom.Element,org.w3c.dom.Node,java.lang.String,java.lang.String,org.owasp.validator.html.model.Tag,boolean,org.owasp.validator.html.model.Tag,org.w3c.dom.NodeList)>(v, v, v, v, v, v, v, v, v);
goto label;
label:
v = virtualinvoke v.<org.owasp.validator.html.model.Tag: boolean isAction(java.lang.String)>("truncate");
if v == 0 goto label;
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void actionTruncate(org.w3c.dom.Element,java.lang.String,org.w3c.dom.NodeList)>(v, v, v);
goto label;
label:
v = newarray (java.lang.Object)[1];
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[0] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.tag.removed", v);
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void removeNode(org.w3c.dom.Node)>(v);
label:
return;
}
private boolean isMasqueradingParam(org.owasp.validator.html.model.Tag, org.owasp.validator.html.model.Tag, java.lang.String)
{
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
java.lang.String v, v;
org.owasp.validator.html.model.Tag v, v;
boolean v, v, v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.owasp.validator.html.model.Tag;
v := @parameter: org.owasp.validator.html.model.Tag;
v := @parameter: java.lang.String;
if v != null goto label;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: boolean isValidateParamAsEmbed>;
if v == 0 goto label;
v = "param";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
if v == null goto label;
v = virtualinvoke v.<org.owasp.validator.html.model.Tag: boolean isAction(java.lang.String)>("validate");
if v == 0 goto label;
return 1;
label:
return 0;
label:
return 0;
}
private void encodeTag(int, org.w3c.dom.Element, java.lang.String, org.w3c.dom.NodeList) throws org.owasp.validator.html.ScanException
{
java.lang.Object[] v;
org.w3c.dom.Element v;
org.w3c.dom.NodeList v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
int v;
java.lang.String v, v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: int;
v := @parameter: org.w3c.dom.Element;
v := @parameter: java.lang.String;
v := @parameter: org.w3c.dom.NodeList;
v = newarray (java.lang.Object)[1];
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[0] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.tag.encoded", v);
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void processChildren(org.w3c.dom.NodeList,int)>(v, v);
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void encodeAndPromoteChildren(org.w3c.dom.Element)>(v);
return;
}
private void actionFilter(int, org.w3c.dom.Element, java.lang.String, org.owasp.validator.html.model.Tag, org.w3c.dom.NodeList) throws org.owasp.validator.html.ScanException
{
java.lang.Object[] v, v;
org.w3c.dom.NodeList v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.w3c.dom.Element v;
int v;
java.lang.String v, v, v;
org.owasp.validator.html.model.Tag v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: int;
v := @parameter: org.w3c.dom.Element;
v := @parameter: java.lang.String;
v := @parameter: org.owasp.validator.html.model.Tag;
v := @parameter: org.w3c.dom.NodeList;
if v != null goto label;
v = newarray (java.lang.Object)[1];
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[0] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.tag.notfound", v);
goto label;
label:
v = newarray (java.lang.Object)[1];
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[0] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.tag.filtered", v);
label:
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void processChildren(org.w3c.dom.NodeList,int)>(v, v);
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void promoteChildren(org.w3c.dom.Element)>(v);
return;
}
private void actionValidate(int, org.w3c.dom.Element, org.w3c.dom.Node, java.lang.String, java.lang.String, org.owasp.validator.html.model.Tag, boolean, org.owasp.validator.html.model.Tag, org.w3c.dom.NodeList) throws org.owasp.validator.html.ScanException
{
org.owasp.validator.html.model.Tag v, v, v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.owasp.validator.html.InternalPolicy v;
org.w3c.dom.Node v, v, v;
int v;
org.w3c.dom.NamedNodeMap v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v;
org.w3c.dom.NodeList v;
org.w3c.dom.Element v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: int;
v := @parameter: org.w3c.dom.Element;
v := @parameter: org.w3c.dom.Node;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: org.owasp.validator.html.model.Tag;
v := @parameter: boolean;
v := @parameter: org.owasp.validator.html.model.Tag;
v := @parameter: org.w3c.dom.NodeList;
v = null;
if v == 0 goto label;
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getAttribute(java.lang.String)>("name");
if v == null goto label;
v = "";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getAttribute(java.lang.String)>("value");
interfaceinvoke v.<org.w3c.dom.Element: void setAttribute(java.lang.String,java.lang.String)>(v, v);
interfaceinvoke v.<org.w3c.dom.Element: void removeAttribute(java.lang.String)>("name");
interfaceinvoke v.<org.w3c.dom.Element: void removeAttribute(java.lang.String)>("value");
v = v;
label:
v = "style";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: org.owasp.validator.html.model.Tag getStyleTag()>();
if v == null goto label;
v = specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: boolean processStyleTag(org.w3c.dom.Element,org.w3c.dom.Node)>(v, v);
if v == 0 goto label;
return;
label:
v = specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: boolean processAttributes(org.w3c.dom.Element,java.lang.String,org.owasp.validator.html.model.Tag,int)>(v, v, v, v);
if v == 0 goto label;
return;
label:
v = "a";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: boolean isNofollowAnchors>;
v = 0;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: boolean isNoopenerAndNoreferrerAnchors>;
if v == 0 goto label;
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.NamedNodeMap getAttributes()>();
v = interfaceinvoke v.<org.w3c.dom.NamedNodeMap: org.w3c.dom.Node getNamedItem(java.lang.String)>("target");
if v == null goto label;
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeValue()>();
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>("_blank");
if v == 0 goto label;
v = 1;
label:
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.NamedNodeMap getAttributes()>();
v = interfaceinvoke v.<org.w3c.dom.NamedNodeMap: org.w3c.dom.Node getNamedItem(java.lang.String)>("rel");
v = v;
if v != null goto label;
v = "";
goto label;
label:
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeValue()>();
label:
v = staticinvoke <org.owasp.validator.html.model.Attribute: java.lang.String mergeRelValuesInAnchor(boolean,boolean,java.lang.String)>(v, v, v);
v = virtualinvoke v.<java.lang.String: boolean isEmpty()>();
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
interfaceinvoke v.<org.w3c.dom.Element: void setAttribute(java.lang.String,java.lang.String)>("rel", v);
label:
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void processChildren(org.w3c.dom.NodeList,int)>(v, v);
if v == 0 goto label;
if v == null goto label;
v = "";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getAttribute(java.lang.String)>(v);
interfaceinvoke v.<org.w3c.dom.Element: void setAttribute(java.lang.String,java.lang.String)>("name", v);
interfaceinvoke v.<org.w3c.dom.Element: void setAttribute(java.lang.String,java.lang.String)>("value", v);
interfaceinvoke v.<org.w3c.dom.Element: void removeAttribute(java.lang.String)>(v);
label:
return;
}
private boolean processStyleTag(org.w3c.dom.Element, org.w3c.dom.Node)
{
boolean v, v;
org.owasp.validator.html.CleanResults v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
java.util.List v, v;
java.lang.Throwable v;
java.lang.Object[] v;
org.owasp.validator.html.InternalPolicy v, v, v;
java.util.ResourceBundle v;
java.lang.StringBuffer v;
org.w3c.dom.Node v, v, v, v, v;
int v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v;
org.w3c.dom.NodeList v, v, v, v;
org.owasp.validator.css.CssScanner v;
org.w3c.dom.Element v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.Element;
v := @parameter: org.w3c.dom.Node;
v = new org.owasp.validator.css.CssScanner;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = <org.owasp.validator.html.scan.AntiSamyDOMScanner: java.util.ResourceBundle messages>;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: boolean isEmbedStyleSheets()>();
specialinvoke v.<org.owasp.validator.css.CssScanner: void <init>(org.owasp.validator.html.InternalPolicy,java.util.ResourceBundle,boolean)>(v, v, v);
label:
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.NodeList getChildNodes()>();
v = interfaceinvoke v.<org.w3c.dom.NodeList: int getLength()>();
if v <= 0 goto label;
v = new java.lang.StringBuffer;
specialinvoke v.<java.lang.StringBuffer: void <init>()>();
v = 0;
goto label;
label:
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.NodeList getChildNodes()>();
v = interfaceinvoke v.<org.w3c.dom.NodeList: org.w3c.dom.Node item(int)>(v);
v = virtualinvoke v.<java.lang.StringBuffer: int length()>();
if v <= 0 goto label;
virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>("\n");
label:
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getTextContent()>();
virtualinvoke v.<java.lang.StringBuffer: java.lang.StringBuffer append(java.lang.String)>(v);
v = v + 1;
label:
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.NodeList getChildNodes()>();
v = interfaceinvoke v.<org.w3c.dom.NodeList: int getLength()>();
if v < v goto label;
v = virtualinvoke v.<java.lang.StringBuffer: java.lang.String toString()>();
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: int getMaxInputSize()>();
v = virtualinvoke v.<org.owasp.validator.css.CssScanner: org.owasp.validator.html.CleanResults scanStyleSheet(java.lang.String,int)>(v, v);
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: java.util.List errorMessages>;
v = virtualinvoke v.<org.owasp.validator.html.CleanResults: java.util.List getErrorMessages()>();
interfaceinvoke v.<java.util.List: boolean addAll(java.util.Collection)>(v);
v = virtualinvoke v.<org.owasp.validator.html.CleanResults: java.lang.String getCleanHTML()>();
if v == null goto label;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("");
if v == 0 goto label;
label:
v = "/* */";
goto label;
label:
v = v;
label:
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.Node getFirstChild()>();
interfaceinvoke v.<org.w3c.dom.Node: void setNodeValue(java.lang.String)>(v);
v = v - 1;
goto label;
label:
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.NodeList getChildNodes()>();
v = interfaceinvoke v.<org.w3c.dom.NodeList: org.w3c.dom.Node item(int)>(v);
interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.Node removeChild(org.w3c.dom.Node)>(v);
v = v - 1;
label:
if v >= 1 goto label;
label:
goto label;
label:
v := @caughtexception;
v = newarray (java.lang.Object)[1];
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.Node getFirstChild()>();
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeValue()>();
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[0] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.css.tag.malformed", v);
interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Node removeChild(org.w3c.dom.Node)>(v);
return 1;
label:
return 0;
catch org.w3c.dom.DOMException from label to label with label;
catch org.owasp.validator.html.ScanException from label to label with label;
catch org.apache.batik.css.parser.ParseException from label to label with label;
catch java.lang.NumberFormatException from label to label with label;
}
private void actionTruncate(org.w3c.dom.Element, java.lang.String, org.w3c.dom.NodeList)
{
java.lang.Object[] v;
short v;
org.w3c.dom.Node v, v, v;
int v, v, v, v;
org.w3c.dom.NamedNodeMap v;
java.lang.String v, v, v, v;
org.w3c.dom.NodeList v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.w3c.dom.Element v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.Element;
v := @parameter: java.lang.String;
v := @parameter: org.w3c.dom.NodeList;
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.NamedNodeMap getAttributes()>();
goto label;
label:
v = newarray (java.lang.Object)[2];
v[0] = v;
v = interfaceinvoke v.<org.w3c.dom.NamedNodeMap: org.w3c.dom.Node item(int)>(0);
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeName()>();
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[1] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.attribute.notfound", v);
v = interfaceinvoke v.<org.w3c.dom.NamedNodeMap: org.w3c.dom.Node item(int)>(0);
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeName()>();
interfaceinvoke v.<org.w3c.dom.Element: void removeAttribute(java.lang.String)>(v);
label:
v = interfaceinvoke v.<org.w3c.dom.NamedNodeMap: int getLength()>();
if v > 0 goto label;
v = 0;
v = 0;
v = interfaceinvoke v.<org.w3c.dom.NodeList: int getLength()>();
goto label;
label:
v = interfaceinvoke v.<org.w3c.dom.NodeList: org.w3c.dom.Node item(int)>(v);
v = interfaceinvoke v.<org.w3c.dom.Node: short getNodeType()>();
if v == 3 goto label;
interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.Node removeChild(org.w3c.dom.Node)>(v);
goto label;
label:
v = v + 1;
label:
v = v + 1;
label:
if v < v goto label;
return;
}
private boolean processAttributes(org.w3c.dom.Element, java.lang.String, org.owasp.validator.html.model.Tag, int) throws org.owasp.validator.html.ScanException
{
org.owasp.validator.html.model.Tag v;
boolean v, v, v, v, v, v, v;
org.owasp.validator.html.CleanResults v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
java.lang.Exception v;
java.util.List v, v;
org.owasp.validator.html.model.Attribute v;
java.lang.Object[] v, v, v, v, v, v;
org.owasp.validator.html.InternalPolicy v, v, v, v, v;
java.util.ResourceBundle v;
org.w3c.dom.Node v;
int v, v, v, v;
org.w3c.dom.NamedNodeMap v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
org.owasp.validator.css.CssScanner v;
org.w3c.dom.Element v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.Element;
v := @parameter: java.lang.String;
v := @parameter: org.owasp.validator.html.model.Tag;
v := @parameter: int;
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.NamedNodeMap getAttributes()>();
v = 0;
goto label;
label:
v = interfaceinvoke v.<org.w3c.dom.NamedNodeMap: org.w3c.dom.Node item(int)>(v);
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeName()>();
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeValue()>();
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase()>();
v = virtualinvoke v.<org.owasp.validator.html.model.Tag: org.owasp.validator.html.model.Attribute getAttributeByName(java.lang.String)>(v);
if v != null goto label;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: org.owasp.validator.html.model.Attribute getGlobalAttributeByName(java.lang.String)>(v);
if v != null goto label;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: boolean isAllowDynamicAttributes()>();
if v == 0 goto label;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: org.owasp.validator.html.model.Attribute getDynamicAttributeByName(java.lang.String)>(v);
label:
v = "style";
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
if v == null goto label;
v = new org.owasp.validator.css.CssScanner;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = <org.owasp.validator.html.scan.AntiSamyDOMScanner: java.util.ResourceBundle messages>;
specialinvoke v.<org.owasp.validator.css.CssScanner: void <init>(org.owasp.validator.html.InternalPolicy,java.util.ResourceBundle,boolean)>(v, v, 0);
label:
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: int getMaxInputSize()>();
v = virtualinvoke v.<org.owasp.validator.css.CssScanner: org.owasp.validator.html.CleanResults scanInlineStyle(java.lang.String,java.lang.String,int)>(v, v, v);
v = virtualinvoke v.<org.owasp.validator.html.CleanResults: java.lang.String getCleanHTML()>();
interfaceinvoke v.<org.w3c.dom.Node: void setNodeValue(java.lang.String)>(v);
v = virtualinvoke v.<org.owasp.validator.html.CleanResults: java.util.List getErrorMessages()>();
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: java.util.List errorMessages>;
interfaceinvoke v.<java.util.List: boolean addAll(java.util.Collection)>(v);
label:
goto label;
label:
v := @caughtexception;
v = newarray (java.lang.Object)[2];
v[0] = v;
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getNodeValue()>();
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[1] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.css.attribute.malformed", v);
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeName()>();
interfaceinvoke v.<org.w3c.dom.Element: void removeAttribute(java.lang.String)>(v);
v = v - 1;
goto label;
label:
if v == null goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String toLowerCase()>();
v = virtualinvoke v.<org.owasp.validator.html.model.Attribute: boolean containsAllowedValue(java.lang.String)>(v);
if v != 0 goto label;
v = virtualinvoke v.<org.owasp.validator.html.model.Attribute: boolean matchesAllowedExpression(java.lang.String)>(v);
if v != 0 goto label;
v = virtualinvoke v.<org.owasp.validator.html.model.Attribute: java.lang.String getOnInvalid()>();
v = "removeTag";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void removeNode(org.w3c.dom.Node)>(v);
v = newarray (java.lang.Object)[3];
v[0] = v;
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[1] = v;
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[2] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.attribute.invalid.removed", v);
return 1;
label:
v = "filterTag";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void processChildren(org.w3c.dom.Node,int)>(v, v);
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void promoteChildren(org.w3c.dom.Element)>(v);
v = newarray (java.lang.Object)[3];
v[0] = v;
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[1] = v;
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[2] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.attribute.invalid.filtered", v);
return 1;
label:
v = "encodeTag";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void processChildren(org.w3c.dom.Node,int)>(v, v);
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void encodeAndPromoteChildren(org.w3c.dom.Element)>(v);
v = newarray (java.lang.Object)[3];
v[0] = v;
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[1] = v;
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[2] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.attribute.invalid.encoded", v);
return 1;
label:
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeName()>();
interfaceinvoke v.<org.w3c.dom.Element: void removeAttribute(java.lang.String)>(v);
v = v - 1;
v = newarray (java.lang.Object)[3];
v[0] = v;
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[1] = v;
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[2] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.attribute.invalid", v);
goto label;
label:
v = newarray (java.lang.Object)[3];
v[0] = v;
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[1] = v;
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[2] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.attribute.notfound", v);
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeName()>();
interfaceinvoke v.<org.w3c.dom.Element: void removeAttribute(java.lang.String)>(v);
v = v - 1;
label:
v = v + 1;
label:
v = interfaceinvoke v.<org.w3c.dom.NamedNodeMap: int getLength()>();
if v < v goto label;
return 0;
catch org.w3c.dom.DOMException from label to label with label;
catch org.owasp.validator.html.ScanException from label to label with label;
}
private void processChildren(org.w3c.dom.Node, int) throws org.owasp.validator.html.ScanException
{
org.w3c.dom.NodeList v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.w3c.dom.Node v;
int v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.Node;
v := @parameter: int;
v = interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.NodeList getChildNodes()>();
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void processChildren(org.w3c.dom.NodeList,int)>(v, v);
return;
}
private void processChildren(org.w3c.dom.NodeList, int) throws org.owasp.validator.html.ScanException
{
org.w3c.dom.NodeList v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.w3c.dom.Node v, v;
int v, v, v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.NodeList;
v := @parameter: int;
v = 0;
goto label;
label:
v = interfaceinvoke v.<org.w3c.dom.NodeList: org.w3c.dom.Node item(int)>(v);
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void recursiveValidateTag(org.w3c.dom.Node,int)>(v, v);
v = interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Node getParentNode()>();
if v != null goto label;
v = v - 1;
label:
v = v + 1;
label:
v = interfaceinvoke v.<org.w3c.dom.NodeList: int getLength()>();
if v < v goto label;
return;
}
private void removePI(org.w3c.dom.Node)
{
java.lang.Object[] v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.w3c.dom.Node v;
java.lang.String v, v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.Node;
v = newarray (java.lang.Object)[1];
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getTextContent()>();
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[0] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.pi.found", v);
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void removeNode(org.w3c.dom.Node)>(v);
return;
}
private void stripCData(org.w3c.dom.Node)
{
org.w3c.dom.Text v;
java.lang.Object[] v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.w3c.dom.Document v;
org.w3c.dom.Node v, v, v;
java.lang.String v, v, v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.Node;
v = newarray (java.lang.Object)[1];
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getTextContent()>();
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[0] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.cdata.found", v);
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.w3c.dom.Document document>;
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getTextContent()>();
v = interfaceinvoke v.<org.w3c.dom.Document: org.w3c.dom.Text createTextNode(java.lang.String)>(v);
v = interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Node getParentNode()>();
interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Node insertBefore(org.w3c.dom.Node,org.w3c.dom.Node)>(v, v);
v = interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Node getParentNode()>();
interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Node removeChild(org.w3c.dom.Node)>(v);
return;
}
private void processCommentNode(org.w3c.dom.Node)
{
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.owasp.validator.html.InternalPolicy v;
java.util.regex.Matcher v;
org.w3c.dom.Node v, v;
java.lang.String v, v;
java.util.regex.Pattern v;
boolean v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.Node;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: boolean isPreserveComments()>();
if v != 0 goto label;
v = interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Node getParentNode()>();
interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Node removeChild(org.w3c.dom.Node)>(v);
goto label;
label:
v = interfaceinvoke v.<org.w3c.dom.Comment: java.lang.String getData()>();
if v == null goto label;
v = <org.owasp.validator.html.scan.AntiSamyDOMScanner: java.util.regex.Pattern conditionalDirectives>;
v = virtualinvoke v.<java.util.regex.Pattern: java.util.regex.Matcher matcher(java.lang.CharSequence)>(v);
v = virtualinvoke v.<java.util.regex.Matcher: java.lang.String replaceAll(java.lang.String)>("");
interfaceinvoke v.<org.w3c.dom.Comment: void setData(java.lang.String)>(v);
label:
return;
}
private boolean removeDisallowedEmpty(org.w3c.dom.Node)
{
java.lang.Object[] v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.w3c.dom.Node v;
java.lang.String v, v, v;
boolean v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.Node;
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeName()>();
v = specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: boolean isAllowedEmptyTag(java.lang.String)>(v);
if v != 0 goto label;
v = newarray (java.lang.Object)[1];
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeName()>();
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[0] = v;
virtualinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void addError(java.lang.String,java.lang.Object[])>("error.tag.empty", v);
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void removeNode(org.w3c.dom.Node)>(v);
return 1;
label:
return 0;
}
private void removeNode(org.w3c.dom.Node)
{
org.w3c.dom.NodeList v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.w3c.dom.Node v, v;
int v;
java.lang.String v;
boolean v, v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.Node;
v = interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Node getParentNode()>();
interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Node removeChild(org.w3c.dom.Node)>(v);
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeName()>();
v = v instanceof org.w3c.dom.Element;
if v == 0 goto label;
v = interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.NodeList getChildNodes()>();
v = interfaceinvoke v.<org.w3c.dom.NodeList: int getLength()>();
if v != 0 goto label;
v = specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: boolean isAllowedEmptyTag(java.lang.String)>(v);
if v != 0 goto label;
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void removeNode(org.w3c.dom.Node)>(v);
label:
return;
}
private boolean isAllowedEmptyTag(java.lang.String)
{
org.owasp.validator.html.TagMatcher v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.owasp.validator.html.InternalPolicy v;
java.lang.String v, v;
boolean v, v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: java.lang.String;
v = "head";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: org.owasp.validator.html.TagMatcher getAllowedEmptyTags()>();
v = virtualinvoke v.<org.owasp.validator.html.TagMatcher: boolean matches(java.lang.String)>(v);
if v != 0 goto label;
return 0;
label:
return 1;
}
private void promoteChildren(org.w3c.dom.Element)
{
org.w3c.dom.Element v;
org.w3c.dom.NodeList v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.Element;
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.NodeList getChildNodes()>();
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void promoteChildren(org.w3c.dom.Element,org.w3c.dom.NodeList)>(v, v);
return;
}
private void promoteChildren(org.w3c.dom.Element, org.w3c.dom.NodeList)
{
org.w3c.dom.Element v;
org.w3c.dom.NodeList v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.w3c.dom.Node v, v, v;
int v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.Element;
v := @parameter: org.w3c.dom.NodeList;
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.Node getParentNode()>();
goto label;
label:
v = interfaceinvoke v.<org.w3c.dom.NodeList: org.w3c.dom.Node item(int)>(0);
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.Node removeChild(org.w3c.dom.Node)>(v);
interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Node insertBefore(org.w3c.dom.Node,org.w3c.dom.Node)>(v, v);
label:
v = interfaceinvoke v.<org.w3c.dom.NodeList: int getLength()>();
if v > 0 goto label;
if v == null goto label;
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void removeNode(org.w3c.dom.Node)>(v);
label:
return;
}
private java.lang.String stripNonValidXMLCharacters(java.lang.String, java.util.regex.Matcher)
{
java.util.regex.Matcher v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
java.lang.String v, v, v;
boolean v, v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: java.lang.String;
v := @parameter: java.util.regex.Matcher;
if v == null goto label;
v = "";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return "";
label:
virtualinvoke v.<java.util.regex.Matcher: java.util.regex.Matcher reset(java.lang.CharSequence)>(v);
v = virtualinvoke v.<java.util.regex.Matcher: boolean matches()>();
if v == 0 goto label;
v = virtualinvoke v.<java.util.regex.Matcher: java.lang.String replaceAll(java.lang.String)>("");
goto label;
label:
v = v;
label:
return v;
}
private void encodeAndPromoteChildren(org.w3c.dom.Element)
{
org.w3c.dom.Text v, v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.w3c.dom.Element v;
org.w3c.dom.Document v, v;
org.w3c.dom.Node v, v;
java.lang.StringBuilder v;
java.lang.String v, v, v;
boolean v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.Element;
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.Node getParentNode()>();
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getTagName()>();
v = interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Document getOwnerDocument()>();
v = specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: java.lang.String toString(org.w3c.dom.Element)>(v);
v = interfaceinvoke v.<org.w3c.dom.Document: org.w3c.dom.Text createTextNode(java.lang.String)>(v);
interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Node insertBefore(org.w3c.dom.Node,org.w3c.dom.Node)>(v, v);
v = interfaceinvoke v.<org.w3c.dom.Element: boolean hasChildNodes()>();
if v == 0 goto label;
v = interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Document getOwnerDocument()>();
specialinvoke v.<java.lang.StringBuilder: void <init>(java.lang.String)>("</");
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001>");
v = interfaceinvoke v.<org.w3c.dom.Document: org.w3c.dom.Text createTextNode(java.lang.String)>(v);
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.Node getNextSibling()>();
interfaceinvoke v.<org.w3c.dom.Node: org.w3c.dom.Node insertBefore(org.w3c.dom.Node,org.w3c.dom.Node)>(v, v);
label:
specialinvoke v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: void promoteChildren(org.w3c.dom.Element)>(v);
return;
}
private java.lang.String toString(org.w3c.dom.Element)
{
org.w3c.dom.Node v;
int v, v;
org.w3c.dom.NamedNodeMap v;
java.lang.String v, v, v, v, v, v, v;
boolean v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
org.w3c.dom.Element v;
java.lang.StringBuilder v, v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v := @parameter: org.w3c.dom.Element;
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>(java.lang.String)>("<");
v = interfaceinvoke v.<org.w3c.dom.Element: java.lang.String getNodeName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001");
specialinvoke v.<java.lang.StringBuilder: void <init>(java.lang.String)>(v);
v = interfaceinvoke v.<org.w3c.dom.Element: org.w3c.dom.NamedNodeMap getAttributes()>();
v = 0;
goto label;
label:
v = interfaceinvoke v.<org.w3c.dom.NamedNodeMap: org.w3c.dom.Node item(int)>(v);
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeName()>();
v = interfaceinvoke v.<org.w3c.dom.Node: java.lang.String getNodeValue()>();
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(" ");
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("=\"");
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("\"");
v = v + 1;
label:
v = interfaceinvoke v.<org.w3c.dom.NamedNodeMap: int getLength()>();
if v < v goto label;
v = interfaceinvoke v.<org.w3c.dom.Element: boolean hasChildNodes()>();
if v == 0 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(">");
goto label;
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("/>");
label:
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
public org.owasp.validator.html.CleanResults getResults()
{
org.owasp.validator.html.CleanResults v;
org.owasp.validator.html.scan.AntiSamyDOMScanner v;
v := @this: org.owasp.validator.html.scan.AntiSamyDOMScanner;
v = v.<org.owasp.validator.html.scan.AntiSamyDOMScanner: org.owasp.validator.html.CleanResults results>;
return v;
}
}