public class org.owasp.validator.css.CssScanner extends java.lang.Object
{
protected static final org.slf4j.Logger logger;
protected static final org.apache.hc.core.util.Timeout DEFAULT_TIMEOUT;
private static final java.lang.String CDATA;
private final org.apache.batik.css.parser.Parser parser;
private final org.owasp.validator.html.InternalPolicy policy;
private final java.util.ResourceBundle messages;
private final boolean shouldParseImportedStyles;
private static final java.util.regex.Pattern cdataMatchPattern;
public void <init>(org.owasp.validator.html.InternalPolicy, java.util.ResourceBundle)
{
org.owasp.validator.html.InternalPolicy v;
org.owasp.validator.css.CssScanner v;
java.util.ResourceBundle v;
v := @this: org.owasp.validator.css.CssScanner;
v := @parameter: org.owasp.validator.html.InternalPolicy;
v := @parameter: java.util.ResourceBundle;
specialinvoke v.<org.owasp.validator.css.CssScanner: void <init>(org.owasp.validator.html.InternalPolicy,java.util.ResourceBundle,boolean)>(v, v, 0);
return;
}
public void <init>(org.owasp.validator.html.InternalPolicy, java.util.ResourceBundle, boolean)
{
org.slf4j.Logger v;
java.util.ResourceBundle v;
org.owasp.validator.html.InternalPolicy v;
org.owasp.validator.css.CssScanner v;
org.owasp.validator.css.CssParser v;
boolean v;
v := @this: org.owasp.validator.css.CssScanner;
v := @parameter: org.owasp.validator.html.InternalPolicy;
v := @parameter: java.util.ResourceBundle;
v := @parameter: boolean;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new org.owasp.validator.css.CssParser;
specialinvoke v.<org.owasp.validator.css.CssParser: void <init>()>();
v.<org.owasp.validator.css.CssScanner: org.apache.batik.css.parser.Parser parser> = v;
v.<org.owasp.validator.css.CssScanner: org.owasp.validator.html.InternalPolicy policy> = v;
v.<org.owasp.validator.css.CssScanner: java.util.ResourceBundle messages> = v;
v.<org.owasp.validator.css.CssScanner: boolean shouldParseImportedStyles> = v;
if v == 0 goto label;
v = <org.owasp.validator.css.CssScanner: org.slf4j.Logger logger>;
interfaceinvoke v.<org.slf4j.Logger: void warn(java.lang.String)>("Allowing CSS imports from external URLs is a dangerous practice. It is recommended you disable this feature. Support for this feature in AntiSamy is deprecated and will be removed in a future release.");
label:
return;
}
public org.owasp.validator.html.CleanResults scanStyleSheet(java.lang.String, int) throws org.owasp.validator.html.ScanException
{
java.lang.Throwable v;
org.owasp.validator.css.CssHandler v;
org.owasp.validator.html.InternalPolicy v;
long v;
org.apache.batik.css.parser.Parser v, v;
java.util.ArrayList v;
java.util.regex.Matcher v;
java.util.ResourceBundle v;
org.owasp.validator.html.ScanException v;
int v;
java.lang.String v, v;
boolean v;
org.owasp.validator.html.CleanResults v;
org.owasp.validator.css.CssScanner v;
org.w3c.css.sac.InputSource v;
java.io.StringReader v;
java.util.regex.Pattern v;
v := @this: org.owasp.validator.css.CssScanner;
v := @parameter: java.lang.String;
v := @parameter: int;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = <org.owasp.validator.css.CssScanner: java.util.regex.Pattern cdataMatchPattern>;
v = virtualinvoke v.<java.util.regex.Pattern: java.util.regex.Matcher matcher(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 group(int)>(1);
label:
v = new org.owasp.validator.css.CssHandler;
v = v.<org.owasp.validator.css.CssScanner: org.owasp.validator.html.InternalPolicy policy>;
v = v.<org.owasp.validator.css.CssScanner: java.util.ResourceBundle messages>;
specialinvoke v.<org.owasp.validator.css.CssHandler: void <init>(org.owasp.validator.html.Policy,java.util.List,java.util.ResourceBundle)>(v, v, v);
v = v.<org.owasp.validator.css.CssScanner: org.apache.batik.css.parser.Parser parser>;
virtualinvoke v.<org.apache.batik.css.parser.Parser: void setDocumentHandler(org.w3c.css.sac.DocumentHandler)>(v);
label:
v = v.<org.owasp.validator.css.CssScanner: org.apache.batik.css.parser.Parser parser>;
v = new org.w3c.css.sac.InputSource;
v = new java.io.StringReader;
specialinvoke v.<java.io.StringReader: void <init>(java.lang.String)>(v);
specialinvoke v.<org.w3c.css.sac.InputSource: void <init>(java.io.Reader)>(v);
virtualinvoke v.<org.apache.batik.css.parser.Parser: void parseStyleSheet(org.w3c.css.sac.InputSource)>(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 = specialinvoke v.<org.owasp.validator.css.CssScanner: java.lang.String getCleanStylesheetWithImports(int,java.util.List,org.owasp.validator.css.CssHandler)>(v, v, v);
if v == 0 goto label;
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[])>("<![CDATA[\u]]>");
label:
v = new org.owasp.validator.html.CleanResults;
specialinvoke v.<org.owasp.validator.html.CleanResults: void <init>(long,java.lang.String,org.w3c.dom.DocumentFragment,java.util.List)>(v, v, null, v);
return v;
catch java.io.IOException from label to label with label;
catch org.apache.batik.css.parser.ParseException from label to label with label;
}
public org.owasp.validator.html.CleanResults scanInlineStyle(java.lang.String, java.lang.String, int) throws org.owasp.validator.html.ScanException
{
org.owasp.validator.css.CssHandler v;
org.owasp.validator.html.CleanResults v;
org.owasp.validator.html.InternalPolicy v;
java.io.IOException v;
long v;
org.owasp.validator.css.CssScanner v;
org.apache.batik.css.parser.Parser v, v;
java.util.ArrayList v;
java.util.ResourceBundle v;
org.owasp.validator.html.ScanException v;
int v;
java.lang.String v, v, v;
v := @this: org.owasp.validator.css.CssScanner;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: int;
v = staticinvoke <java.lang.System: long currentTimeMillis()>();
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v = new org.owasp.validator.css.CssHandler;
v = v.<org.owasp.validator.css.CssScanner: org.owasp.validator.html.InternalPolicy policy>;
v = v.<org.owasp.validator.css.CssScanner: java.util.ResourceBundle messages>;
specialinvoke v.<org.owasp.validator.css.CssHandler: void <init>(org.owasp.validator.html.Policy,java.util.List,java.util.ResourceBundle,java.lang.String)>(v, v, v, v);
v = v.<org.owasp.validator.css.CssScanner: org.apache.batik.css.parser.Parser parser>;
virtualinvoke v.<org.apache.batik.css.parser.Parser: void setDocumentHandler(org.w3c.css.sac.DocumentHandler)>(v);
label:
v = v.<org.owasp.validator.css.CssScanner: org.apache.batik.css.parser.Parser parser>;
virtualinvoke v.<org.apache.batik.css.parser.Parser: void parseStyleDeclaration(java.lang.String)>(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 = specialinvoke v.<org.owasp.validator.css.CssScanner: java.lang.String getCleanStylesheetWithImports(int,java.util.List,org.owasp.validator.css.CssHandler)>(v, v, v);
v = new org.owasp.validator.html.CleanResults;
specialinvoke v.<org.owasp.validator.html.CleanResults: void <init>(long,java.lang.String,org.w3c.dom.DocumentFragment,java.util.List)>(v, v, null, v);
return v;
catch java.io.IOException from label to label with label;
}
private java.lang.String getCleanStylesheetWithImports(int, java.util.List, org.owasp.validator.css.CssHandler) throws org.owasp.validator.html.ScanException
{
org.owasp.validator.css.CssHandler v;
org.owasp.validator.css.CssScanner v;
java.util.List v;
int v;
java.lang.String v, v;
java.util.LinkedList v;
boolean v;
v := @this: org.owasp.validator.css.CssScanner;
v := @parameter: int;
v := @parameter: java.util.List;
v := @parameter: org.owasp.validator.css.CssHandler;
v = virtualinvoke v.<org.owasp.validator.css.CssHandler: java.lang.String getCleanStylesheet()>();
v = v.<org.owasp.validator.css.CssScanner: boolean shouldParseImportedStyles>;
if v == 0 goto label;
virtualinvoke v.<org.owasp.validator.css.CssHandler: void emptyStyleSheet()>();
v = virtualinvoke v.<org.owasp.validator.css.CssHandler: java.util.LinkedList getImportedStylesheetsURIList()>();
specialinvoke v.<org.owasp.validator.css.CssScanner: void parseImportedStylesheets(java.util.LinkedList,java.util.List,int)>(v, v, v);
v = virtualinvoke v.<org.owasp.validator.css.CssHandler: java.lang.String getCleanStylesheet()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, 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\u0001");
label:
return v;
}
private void parseImportedStylesheets(java.util.LinkedList, java.util.List, int) throws org.owasp.validator.html.ScanException
{
byte[] v;
org.apache.batik.css.parser.Parser v;
org.owasp.validator.css.CssScanner$1 v;
java.io.ByteArrayInputStream v;
boolean v, v;
org.w3c.css.sac.InputSource v;
org.apache.hc.core.util.Timeout v;
java.util.List v;
java.lang.Object[] v, v, v;
org.owasp.validator.html.InternalPolicy v, v, v;
long v;
org.apache.hc.client.http.classic.methods.HttpGet v;
java.nio.charset.Charset v;
java.util.ResourceBundle v, v, v;
org.owasp.validator.html.ScanException v;
int v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v;
java.util.LinkedList v;
org.apache.hc.client.http.config.RequestConfig v;
org.apache.hc.client.http.impl.classic.HttpClientBuilder v, v, v, v, v;
java.io.IOException v, v;
java.lang.NumberFormatException v, v;
org.owasp.validator.css.CssScanner v;
java.io.InputStreamReader v;
org.apache.hc.client.http.config.RequestConfig$Builder v, v, v, v;
java.lang.Object v, v;
org.apache.hc.client.http.impl.classic.CloseableHttpClient v;
v := @this: org.owasp.validator.css.CssScanner;
v := @parameter: java.util.LinkedList;
v := @parameter: java.util.List;
v := @parameter: int;
v = virtualinvoke v.<java.util.LinkedList: boolean isEmpty()>();
if v != 0 goto label;
v = 0;
v = <org.owasp.validator.css.CssScanner: org.apache.hc.core.util.Timeout DEFAULT_TIMEOUT>;
label:
v = v.<org.owasp.validator.css.CssScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: java.lang.String getDirective(java.lang.String)>("connectionTimeout");
v = staticinvoke <java.lang.Long: long parseLong(java.lang.String)>(v);
v = staticinvoke <org.apache.hc.core.util.Timeout: org.apache.hc.core.util.Timeout ofMilliseconds(long)>(v);
label:
goto label;
label:
v := @caughtexception;
label:
v = staticinvoke <org.apache.hc.client.http.config.RequestConfig: org.apache.hc.client.http.config.RequestConfig$Builder custom()>();
v = virtualinvoke v.<org.apache.hc.client.http.config.RequestConfig$Builder: org.apache.hc.client.http.config.RequestConfig$Builder setConnectTimeout(org.apache.hc.core.util.Timeout)>(v);
v = virtualinvoke v.<org.apache.hc.client.http.config.RequestConfig$Builder: org.apache.hc.client.http.config.RequestConfig$Builder setResponseTimeout(org.apache.hc.core.util.Timeout)>(v);
v = virtualinvoke v.<org.apache.hc.client.http.config.RequestConfig$Builder: org.apache.hc.client.http.config.RequestConfig$Builder setConnectionRequestTimeout(org.apache.hc.core.util.Timeout)>(v);
v = virtualinvoke v.<org.apache.hc.client.http.config.RequestConfig$Builder: org.apache.hc.client.http.config.RequestConfig build()>();
v = staticinvoke <org.apache.hc.client.http.impl.classic.HttpClientBuilder: org.apache.hc.client.http.impl.classic.HttpClientBuilder create()>();
v = virtualinvoke v.<org.apache.hc.client.http.impl.classic.HttpClientBuilder: org.apache.hc.client.http.impl.classic.HttpClientBuilder disableAutomaticRetries()>();
v = virtualinvoke v.<org.apache.hc.client.http.impl.classic.HttpClientBuilder: org.apache.hc.client.http.impl.classic.HttpClientBuilder disableConnectionState()>();
v = virtualinvoke v.<org.apache.hc.client.http.impl.classic.HttpClientBuilder: org.apache.hc.client.http.impl.classic.HttpClientBuilder disableCookieManagement()>();
v = virtualinvoke v.<org.apache.hc.client.http.impl.classic.HttpClientBuilder: org.apache.hc.client.http.impl.classic.HttpClientBuilder setDefaultRequestConfig(org.apache.hc.client.http.config.RequestConfig)>(v);
v = virtualinvoke v.<org.apache.hc.client.http.impl.classic.HttpClientBuilder: org.apache.hc.client.http.impl.classic.CloseableHttpClient build()>();
v = 1;
label:
v = v.<org.owasp.validator.css.CssScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: java.lang.String getDirective(java.lang.String)>("maxStyleSheetImports");
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
label:
v = virtualinvoke v.<java.util.LinkedList: boolean isEmpty()>();
if v != 0 goto label;
v = virtualinvoke v.<java.util.LinkedList: java.lang.Object removeFirst()>();
v = v + 1;
if v <= v goto label;
v = v.<org.owasp.validator.css.CssScanner: java.util.ResourceBundle messages>;
v = newarray (java.lang.Object)[2];
v = virtualinvoke v.<java.net.URI: java.lang.String toString()>();
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[0] = v;
v = staticinvoke <java.lang.String: java.lang.String valueOf(int)>(v);
v[1] = v;
v = staticinvoke <org.owasp.validator.html.util.ErrorMessageUtil: java.lang.String getMessage(java.util.ResourceBundle,java.lang.String,java.lang.Object[])>(v, "error.css.import.exceeded", v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
v = new org.owasp.validator.css.CssScanner$1;
specialinvoke v.<org.owasp.validator.css.CssScanner$1: void <init>(org.owasp.validator.css.CssScanner)>(v);
v = null;
label:
v = new org.apache.hc.client.http.classic.methods.HttpGet;
specialinvoke v.<org.apache.hc.client.http.classic.methods.HttpGet: void <init>(java.net.URI)>(v);
v = interfaceinvoke v.<org.apache.hc.client.http.classic.HttpClient: java.lang.Object execute(org.apache.hc.core.http.ClassicHttpRequest,org.apache.hc.core.http.io.HttpClientResponseHandler)>(v, v);
v = virtualinvoke v.<java.lang.String: byte[] getBytes()>();
if v == null goto label;
v = lengthof v;
if v <= v goto label;
v = v.<org.owasp.validator.css.CssScanner: java.util.ResourceBundle messages>;
v = newarray (java.lang.Object)[2];
v = virtualinvoke v.<java.net.URI: java.lang.String toString()>();
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[0] = v;
v = v.<org.owasp.validator.css.CssScanner: org.owasp.validator.html.InternalPolicy policy>;
v = virtualinvoke v.<org.owasp.validator.html.InternalPolicy: int getMaxInputSize()>();
v = staticinvoke <java.lang.String: java.lang.String valueOf(int)>(v);
v[1] = v;
v = staticinvoke <org.owasp.validator.html.util.ErrorMessageUtil: java.lang.String getMessage(java.util.ResourceBundle,java.lang.String,java.lang.Object[])>(v, "error.css.import.toolarge", v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
v = null;
label:
goto label;
label:
v := @caughtexception;
v = v.<org.owasp.validator.css.CssScanner: java.util.ResourceBundle messages>;
v = newarray (java.lang.Object)[1];
v = virtualinvoke v.<java.net.URI: java.lang.String toString()>();
v = staticinvoke <org.owasp.validator.html.util.HTMLEntityEncoder: java.lang.String htmlEntityEncode(java.lang.String)>(v);
v[0] = v;
v = staticinvoke <org.owasp.validator.html.util.ErrorMessageUtil: java.lang.String getMessage(java.util.ResourceBundle,java.lang.String,java.lang.Object[])>(v, "error.css.import.failure", v);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
label:
if v == null goto label;
v = lengthof v;
v = v - v;
label:
v = new org.w3c.css.sac.InputSource;
v = new java.io.InputStreamReader;
v = new java.io.ByteArrayInputStream;
specialinvoke v.<java.io.ByteArrayInputStream: void <init>(byte[])>(v);
v = staticinvoke <java.nio.charset.Charset: java.nio.charset.Charset forName(java.lang.String)>("UTF8");
specialinvoke v.<java.io.InputStreamReader: void <init>(java.io.InputStream,java.nio.charset.Charset)>(v, v);
specialinvoke v.<org.w3c.css.sac.InputSource: void <init>(java.io.Reader)>(v);
v = v.<org.owasp.validator.css.CssScanner: org.apache.batik.css.parser.Parser parser>;
virtualinvoke v.<org.apache.batik.css.parser.Parser: void parseStyleSheet(org.w3c.css.sac.InputSource)>(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:
return;
catch java.lang.NumberFormatException from label to label with label;
catch java.lang.NumberFormatException from label to label with label;
catch java.io.IOException from label to label with label;
catch java.io.IOException from label to label with label;
}
static void <clinit>()
{
java.util.regex.Pattern v;
org.slf4j.Logger v;
org.apache.hc.core.util.Timeout v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/owasp/validator/css/CssScanner;");
<org.owasp.validator.css.CssScanner: org.slf4j.Logger logger> = v;
v = staticinvoke <org.apache.hc.core.util.Timeout: org.apache.hc.core.util.Timeout ofMilliseconds(long)>(1000L);
<org.owasp.validator.css.CssScanner: org.apache.hc.core.util.Timeout DEFAULT_TIMEOUT> = v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String,int)>("^\\s*<!\\[CDATA\\[(.*)\\]\\]>\\s*$", 32);
<org.owasp.validator.css.CssScanner: java.util.regex.Pattern cdataMatchPattern> = v;
return;
}
}