Info Call to dynamic code loading API

Description

List of all dynamic code loading API calls in the application. Loading code from untrsuted sources could allow the execution of malicious code in the context of the current application.

Recommendation

This entry is informative, no recommendations applicable.

Technical details

Method com.google.common.util.concurrent.AbstractFuture.<clinit>() calling method java.lang.System.getProperty()


    static AbstractFuture()
    {
        com.google.common.util.concurrent.AbstractFuture.GENERATE_CANCELLATION_CAUSES = Boolean.parseBoolean(System.getProperty("guava.concurrent.generate_cancellation_cause", "false"));
        com.google.common.util.concurrent.AbstractFuture.log = java.util.logging.Logger.getLogger(com.google.common.util.concurrent.AbstractFuture.getName());
        Throwable v0_2 = 0;
        try {
            com.google.common.util.concurrent.AbstractFuture$SynchronizedHelper v1_2 = new com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper(0);
            java.util.logging.Logger v2_0 = 0;
        } catch (com.google.common.util.concurrent.AbstractFuture$SynchronizedHelper v1_3) {
            try {
                com.google.common.util.concurrent.AbstractFuture$SafeAtomicHelper v8 = new com.google.common.util.concurrent.AbstractFuture$SafeAtomicHelper;
                v8(java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture$Waiter, Thread, "thread"), java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture$Waiter, com.google.common.util.concurrent.AbstractFuture$Waiter, "next"), java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture, com.google.common.util.concurrent.AbstractFuture$Waiter, "waiters"), java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture, com.google.common.util.concurrent.AbstractFuture$Listener, "listeners"), java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater(com.google.common.util.concurrent.AbstractFuture, Object, "value"));
                v2_0 = v1_3;
                v1_2 = v8;
            } catch (java.util.logging.Logger v2_7) {
                v0_2 = v2_7;
                v2_0 = v1_2;
                v1_2 = new com.google.common.util.concurrent.AbstractFuture$SynchronizedHelper(0);
            }
        }
        com.google.common.util.concurrent.AbstractFuture.ATOMIC_HELPER = v1_2;
        if (v0_2 != null) {
            com.google.common.util.concurrent.AbstractFuture.log.log(java.util.logging.Level.SEVERE, "UnsafeAtomicHelper is broken!", v2_0);
            com.google.common.util.concurrent.AbstractFuture.log.log(java.util.logging.Level.SEVERE, "SafeAtomicHelper is broken!", v0_2);
        }
        com.google.common.util.concurrent.AbstractFuture.NULL = new Object();
        return;
    }

Method io.grpc.internal.DnsNameResolver.<clinit>() calling method java.lang.System.getProperty()


    static DnsNameResolver()
    {
        io.grpc.internal.DnsNameResolver.logger = java.util.logging.Logger.getLogger(io.grpc.internal.DnsNameResolver.getName());
        io.grpc.internal.DnsNameResolver.SERVICE_CONFIG_CHOICE_KEYS = java.util.Collections.unmodifiableSet(new java.util.HashSet(java.util.Arrays.asList(new String[] {"clientLanguage", "percentage", "clientHostname", "serviceConfig"}))));
        io.grpc.internal.DnsNameResolver.JNDI_PROPERTY = System.getProperty("io.grpc.internal.DnsNameResolverProvider.enable_jndi", "true");
        io.grpc.internal.DnsNameResolver.JNDI_LOCALHOST_PROPERTY = System.getProperty("io.grpc.internal.DnsNameResolverProvider.enable_jndi_localhost", "false");
        io.grpc.internal.DnsNameResolver.JNDI_SRV_PROPERTY = System.getProperty("io.grpc.internal.DnsNameResolverProvider.enable_grpclb", "false");
        io.grpc.internal.DnsNameResolver.JNDI_TXT_PROPERTY = System.getProperty("io.grpc.internal.DnsNameResolverProvider.enable_service_config", "false");
        io.grpc.internal.DnsNameResolver.enableJndi = Boolean.parseBoolean(io.grpc.internal.DnsNameResolver.JNDI_PROPERTY);
        io.grpc.internal.DnsNameResolver.enableJndiLocalhost = Boolean.parseBoolean(io.grpc.internal.DnsNameResolver.JNDI_LOCALHOST_PROPERTY);
        io.grpc.internal.DnsNameResolver.enableSrv = Boolean.parseBoolean(io.grpc.internal.DnsNameResolver.JNDI_SRV_PROPERTY);
        io.grpc.internal.DnsNameResolver.enableTxt = Boolean.parseBoolean(io.grpc.internal.DnsNameResolver.JNDI_TXT_PROPERTY);
        io.grpc.internal.DnsNameResolver.resourceResolverFactory = io.grpc.internal.DnsNameResolver.getResourceResolverFactory(io.grpc.internal.DnsNameResolver.getClassLoader());
        return;
    }

Method io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference.cleanQueue() calling method java.lang.System.getProperty()


    static int cleanQueue(ref.ReferenceQueue p7)
    {
        int v1 = 0;
        while(true) {
            java.util.logging.Logger v2_2 = ((io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference) p7.poll());
            if (v2_2 == null) {
                break;
            }
            RuntimeException v3_0 = ((RuntimeException) v2_2.allocationSite.get());
            java.util.logging.Logger v2_0 = v2_2.clearInternal();
            if ((!v2_0.shutdown) || (!v2_0.channel.isTerminated())) {
                Object[] v4_4;
                v1++;
                if (!v2_0.shutdownNow) {
                    v4_4 = java.util.logging.Level.SEVERE;
                } else {
                    v4_4 = java.util.logging.Level.FINE;
                }
                if (io.grpc.internal.ManagedChannelOrphanWrapper.access$200().isLoggable(v4_4)) {
                    java.util.logging.LogRecord v6_2;
                    String v5_3 = new StringBuilder();
                    v5_3.append("*~*~*~ Channel {0} was not ");
                    if (v2_0.shutdown) {
                        v6_2 = "terminated";
                    } else {
                        v6_2 = "shutdown";
                    }
                    v5_3.append(v6_2);
                    v5_3.append(" properly!!! ~*~*~*");
                    v5_3.append(System.getProperty("line.separator"));
                    v5_3.append("    Make sure to call shutdown()/shutdownNow() and wait until awaitTermination() returns true.");
                    java.util.logging.LogRecord v6_8 = new java.util.logging.LogRecord(v4_4, v5_3.toString());
                    v6_8.setLoggerName(io.grpc.internal.ManagedChannelOrphanWrapper.access$200().getName());
                    Object[] v4_8 = new Object[1];
                    v4_8[0] = v2_0.channel.toString();
                    v6_8.setParameters(v4_8);
                    v6_8.setThrown(v3_0);
                    io.grpc.internal.ManagedChannelOrphanWrapper.access$200().log(v6_8);
                }
            }
        }
        return v1;
    }

Method io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference.<clinit>() calling method java.lang.System.getProperty()


    static ManagedChannelOrphanWrapper$ManagedChannelReference()
    {
        io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference.ENABLE_ALLOCATION_TRACKING = Boolean.parseBoolean(System.getProperty("io.grpc.ManagedChannel.enableAllocationTracking", "true"));
        io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference.missingCallSite = io.grpc.internal.ManagedChannelOrphanWrapper$ManagedChannelReference.missingCallSite();
        return;
    }

Method io.grpc.internal.GrpcUtil.<clinit>() calling method java.lang.System.getProperty()


    static GrpcUtil()
    {
        io.grpc.internal.GrpcUtil$4 v0_12;
        io.grpc.internal.GrpcUtil.log = java.util.logging.Logger.getLogger(io.grpc.internal.GrpcUtil.getName());
        io.grpc.internal.GrpcUtil.US_ASCII = java.nio.charset.Charset.forName("US-ASCII");
        if ((System.getProperty("com.google.appengine.runtime.environment") == null) || (!"1.7".equals(System.getProperty("java.specification.version")))) {
            v0_12 = 0;
        } else {
            v0_12 = 1;
        }
        io.grpc.internal.GrpcUtil.IS_RESTRICTED_APPENGINE = v0_12;
        io.grpc.internal.GrpcUtil.TIMEOUT_KEY = io.grpc.Metadata$Key.of("grpc-timeout", new io.grpc.internal.GrpcUtil$TimeoutMarshaller());
        io.grpc.internal.GrpcUtil.MESSAGE_ENCODING_KEY = io.grpc.Metadata$Key.of("grpc-encoding", io.grpc.Metadata.ASCII_STRING_MARSHALLER);
        io.grpc.internal.GrpcUtil.MESSAGE_ACCEPT_ENCODING_KEY = io.grpc.InternalMetadata.keyOf("grpc-accept-encoding", new io.grpc.internal.GrpcUtil$AcceptEncodingMarshaller(0));
        io.grpc.internal.GrpcUtil.CONTENT_ENCODING_KEY = io.grpc.Metadata$Key.of("content-encoding", io.grpc.Metadata.ASCII_STRING_MARSHALLER);
        io.grpc.internal.GrpcUtil.CONTENT_ACCEPT_ENCODING_KEY = io.grpc.InternalMetadata.keyOf("accept-encoding", new io.grpc.internal.GrpcUtil$AcceptEncodingMarshaller(0));
        io.grpc.internal.GrpcUtil.CONTENT_TYPE_KEY = io.grpc.Metadata$Key.of("content-type", io.grpc.Metadata.ASCII_STRING_MARSHALLER);
        io.grpc.internal.GrpcUtil.TE_HEADER = io.grpc.Metadata$Key.of("te", io.grpc.Metadata.ASCII_STRING_MARSHALLER);
        io.grpc.internal.GrpcUtil.USER_AGENT_KEY = io.grpc.Metadata$Key.of("user-agent", io.grpc.Metadata.ASCII_STRING_MARSHALLER);
        io.grpc.internal.GrpcUtil.ACCEPT_ENCODING_SPLITTER = com.google.common.base.Splitter.on(44).trimResults();
        io.grpc.internal.GrpcUtil.DEFAULT_KEEPALIVE_TIME_NANOS = java.util.concurrent.TimeUnit.MINUTES.toNanos(1);
        io.grpc.internal.GrpcUtil.DEFAULT_KEEPALIVE_TIMEOUT_NANOS = java.util.concurrent.TimeUnit.SECONDS.toNanos(20);
        io.grpc.internal.GrpcUtil.DEFAULT_SERVER_KEEPALIVE_TIME_NANOS = java.util.concurrent.TimeUnit.HOURS.toNanos(2);
        io.grpc.internal.GrpcUtil.DEFAULT_SERVER_KEEPALIVE_TIMEOUT_NANOS = java.util.concurrent.TimeUnit.SECONDS.toNanos(20);
        io.grpc.internal.GrpcUtil.DEFAULT_PROXY_DETECTOR = new io.grpc.internal.ProxyDetectorImpl();
        io.grpc.internal.GrpcUtil.NOOP_PROXY_DETECTOR = new io.grpc.internal.GrpcUtil$1();
        io.grpc.internal.GrpcUtil.SHARED_CHANNEL_EXECUTOR = new io.grpc.internal.GrpcUtil$2();
        io.grpc.internal.GrpcUtil.TIMER_SERVICE = new io.grpc.internal.GrpcUtil$3();
        io.grpc.internal.GrpcUtil.STOPWATCH_SUPPLIER = new io.grpc.internal.GrpcUtil$4();
        return;
    }

Method com.squareup.okhttp.ConnectionPool.<clinit>() calling method java.lang.System.getProperty()


    static ConnectionPool()
    {
        long v3;
        com.squareup.okhttp.ConnectionPool v0_3 = System.getProperty("http.keepAlive");
        int v1_4 = System.getProperty("http.keepAliveDuration");
        String v2_1 = System.getProperty("http.maxConnections");
        if (v1_4 == 0) {
            v3 = 300000;
        } else {
            v3 = Long.parseLong(v1_4);
        }
        if ((v0_3 == null) || (Boolean.parseBoolean(v0_3))) {
            if (v2_1 == null) {
                com.squareup.okhttp.ConnectionPool.systemDefault = new com.squareup.okhttp.ConnectionPool(5, v3);
            } else {
                com.squareup.okhttp.ConnectionPool.systemDefault = new com.squareup.okhttp.ConnectionPool(Integer.parseInt(v2_1), v3);
            }
        } else {
            com.squareup.okhttp.ConnectionPool.systemDefault = new com.squareup.okhttp.ConnectionPool(0, v3);
        }
        return;
    }

Method com.google.zxing.ReaderException.<clinit>() calling method java.lang.System.getProperty()


    static ReaderException()
    {
        StackTraceElement[] v0_2;
        if (System.getProperty("surefire.test.class.path") == null) {
            v0_2 = 0;
        } else {
            v0_2 = 1;
        }
        com.google.zxing.ReaderException.isStackTrace = v0_2;
        StackTraceElement[] v0_3 = new StackTraceElement[0];
        com.google.zxing.ReaderException.NO_TRACE = v0_3;
        return;
    }

Method com.google.common.util.concurrent.MoreExecutors.isAppEngine() calling method java.lang.System.getProperty()


    private static boolean isAppEngine()
    {
        int v1 = 0;
        if (System.getProperty("com.google.appengine.runtime.environment") != null) {
            try {
                Object[] v3_1 = new Class[0];
                Object[] v3_0 = new Object[0];
            } catch (ClassNotFoundException) {
                return v1;
            }
            if (Class.forName("com.google.apphosting.api.ApiProxy").getMethod("getCurrentEnvironment", v3_1).invoke(0, v3_0) == null) {
                return v1;
            } else {
                v1 = 1;
                return v1;
            }
        } else {
            return 0;
        }
    }

Method com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.<clinit>() calling method java.lang.System.getProperty()


    static UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator()
    {
        com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.INSTANCE = new com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator("INSTANCE", 0);
        Class v2_5 = new com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator[1];
        v2_5[0] = com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.INSTANCE;
        com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.$VALUES = v2_5;
        com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.BIG_ENDIAN = java.nio.ByteOrder.nativeOrder().equals(java.nio.ByteOrder.BIG_ENDIAN);
        com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.theUnsafe = com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.getUnsafe();
        com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.BYTE_ARRAY_BASE_OFFSET = com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.theUnsafe.arrayBaseOffset(byte[]);
        if ((!"64".equals(System.getProperty("sun.arch.data.model"))) || (((com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.BYTE_ARRAY_BASE_OFFSET % 8) != 0) || (com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator.theUnsafe.arrayIndexScale(byte[]) != 1))) {
            throw new Error();
        } else {
            return;
        }
    }

Method com.google.common.io.Files.createTempDir() calling method java.lang.System.getProperty()


    public static java.io.File createTempDir()
    {
        IllegalStateException v0_3 = new java.io.File(System.getProperty("java.io.tmpdir"));
        String v1_7 = new StringBuilder();
        v1_7.append(System.currentTimeMillis());
        v1_7.append("-");
        String v1_1 = v1_7.toString();
        int v2_1 = 0;
        while (v2_1 < 10000) {
            boolean v4_1 = new StringBuilder();
            v4_1.append(v1_1);
            v4_1.append(v2_1);
            String v3_4 = new java.io.File(v0_3, v4_1.toString());
            if (!v3_4.mkdir()) {
                v2_1++;
            } else {
                return v3_4;
            }
        }
        int v2_3 = new StringBuilder();
        v2_3.append("Failed to create directory within 10000 attempts (tried ");
        v2_3.append(v1_1);
        v2_3.append("0 to ");
        v2_3.append(v1_1);
        v2_3.append(9999);
        v2_3.append(41);
        throw new IllegalStateException(v2_3.toString());
    }

Method com.google.common.io.CharSink.writeLines() calling method java.lang.System.getProperty()


    public void writeLines(Iterable p2)
    {
        this.writeLines(p2, System.getProperty("line.separator"));
        return;
    }

Method com.google.common.hash.LittleEndianByteArray.<clinit>() calling method java.lang.System.getProperty()


    static LittleEndianByteArray()
    {
        com.google.common.hash.LittleEndianByteArray$UnsafeByteArray v0 = com.google.common.hash.LittleEndianByteArray$JavaLittleEndianBytes.INSTANCE;
        try {
            if ("amd64".equals(System.getProperty("os.arch"))) {
                if (!java.nio.ByteOrder.nativeOrder().equals(java.nio.ByteOrder.LITTLE_ENDIAN)) {
                    v0 = com.google.common.hash.LittleEndianByteArray$UnsafeByteArray.UNSAFE_BIG_ENDIAN;
                } else {
                    v0 = com.google.common.hash.LittleEndianByteArray$UnsafeByteArray.UNSAFE_LITTLE_ENDIAN;
                }
            }
        } catch (Throwable) {
        }
        com.google.common.hash.LittleEndianByteArray.byteArray = v0;
        return;
    }

Method com.google.common.base.StandardSystemProperty.value() calling method java.lang.System.getProperty()


    public String value()
    {
        return System.getProperty(this.key);
    }

Method bolts.BoltsExecutors.isAndroidRuntime() calling method java.lang.System.getProperty()


    private static boolean isAndroidRuntime()
    {
        boolean v0_2 = System.getProperty("java.runtime.name");
        if (v0_2) {
            return v0_2.toLowerCase(java.util.Locale.US).contains("android");
        } else {
            return 0;
        }
    }

Method io.grpc.internal.ProxyDetectorImpl.<init>() calling method java.lang.System.getenv()


    public ProxyDetectorImpl()
    {
        this(io.grpc.internal.ProxyDetectorImpl.DEFAULT_PROXY_SELECTOR, io.grpc.internal.ProxyDetectorImpl.DEFAULT_AUTHENTICATOR, System.getenv("GRPC_PROXY_EXP"));
        return;
    }

Method com.google.android.gms.dynamite.zzh.<init>() calling method dalvik.system.PathClassLoader.<init>()


    zzh(String p1, ClassLoader p2)
    {
        super(p1, p2);
        return;
    }