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.nokia.maps.MapsEngine.af() calling method java.lang.System.getProperty()


    private void af()
    {
        int v0_4 = System.getProperty("java.vm.version");
        int v1_2 = v0_4.indexOf(46);
        if (v1_2 >= 1) {
            try {
                int v0_2 = Integer.parseInt(v0_4.substring(0, v1_2));
            } catch (int v0) {
            }
            if ((v0_2 >= 0) && (v0_2 < 2)) {
                com.nokia.maps.MapsEngine.Z = 1;
            }
        }
        return;
    }

Method mono.MonoPackageManager.LoadApplication() calling method java.lang.System.loadLibrary()


    public static void LoadApplication(android.content.Context p11, android.content.pm.ApplicationInfo p12, String[] p13)
    {
        try {
            if ((p11 instanceof android.app.Application)) {
                mono.MonoPackageManager.Context = p11;
            }
        } catch (int v0_2) {
            throw v0_2;
        }
        if (!mono.MonoPackageManager.initialized) {
            p11.registerReceiver(new mono.android.app.NotifyTimeZoneChanges(), new android.content.IntentFilter("android.intent.action.TIMEZONE_CHANGED"));
            System.loadLibrary("monodroid");
            int v0_4 = java.util.Locale.getDefault();
            int v0_7 = new StringBuilder().append(v0_4.getLanguage()).append("-").append(v0_4.getCountry()).toString();
            String[] v1_7 = p11.getFilesDir().getAbsolutePath();
            String[] v5_0 = p11.getCacheDir().getAbsolutePath();
            String[] v6_0 = mono.MonoPackageManager.getNativeLibraryPath(p11);
            ClassLoader v4 = p11.getClassLoader();
            String v2_3 = android.os.Environment.getExternalStorageDirectory();
            String v7_6 = new java.io.File(v2_3, new StringBuilder().append("Android/data/").append(p11.getPackageName()).append("/files/.__override__").toString()).getAbsolutePath();
            String v9_9 = new java.io.File(v2_3, new StringBuilder().append("../legacy/Android/data/").append(p11.getPackageName()).append("/files/.__override__").toString()).getAbsolutePath();
            String v2_4 = mono.MonoPackageManager.getNativeLibraryPath(p12);
            String[] v3_5 = new String[3];
            v3_5[0] = v1_7;
            v3_5[1] = v5_0;
            v3_5[2] = v6_0;
            String[] v5_1 = new String[2];
            v5_1[0] = v7_6;
            v5_1[1] = v9_9;
            mono.android.Runtime.init(v0_7, p13, v2_4, v3_5, v4, v5_1, mono.MonoPackageManager_Resources.Assemblies, p11.getPackageName());
            mono.android.app.ApplicationRegistration.registerApplications();
            mono.MonoPackageManager.initialized = 1;
        }
        return;
    }

Method com.nokia.maps.bk.a() calling method java.lang.System.loadLibrary()


    public static Boolean a(String p6)
    {
        Object[] v2_1 = new Object[0];
        com.nokia.maps.bp.c("LibraryLoader", new StringBuilder().append(">> Load library(").append(p6).append(") ...").toString(), v2_1);
        Boolean v0_0 = Boolean.valueOf(1);
        try {
            System.loadLibrary(p6);
        } catch (Boolean v0_5) {
            Object[] v3_2 = new Object[2];
            v3_2[0] = p6;
            v3_2[1] = v0_5.getLocalizedMessage();
            Object[] v2_5 = new Object[0];
            com.nokia.maps.bp.c("LibraryLoader", String.format("Library %s loaded with error: %s", v3_2), v2_5);
            v0_0 = Boolean.valueOf(0);
        } catch (Boolean v0_1) {
            Object[] v3_1 = new Object[2];
            v3_1[0] = p6;
            v3_1[1] = v0_1.getLocalizedMessage();
            Object[] v2_3 = new Object[0];
            com.nokia.maps.bp.c("LibraryLoader", String.format("Library %s loaded with exception: %s", v3_1), v2_3);
            v0_0 = Boolean.valueOf(0);
        }
        return v0_0;
    }

Method com.here.posclient.ext.UsageTracking.<clinit>() calling method java.lang.System.loadLibrary()


    static UsageTracking()
    {
        System.loadLibrary("posclient");
        return;
    }

Method com.here.posclient.ext.PositioningControl.<clinit>() calling method java.lang.System.loadLibrary()


    static PositioningControl()
    {
        System.loadLibrary("posclient");
        return;
    }

Method com.here.posclient.PosClientLib.<clinit>() calling method java.lang.System.loadLibrary()


    static PosClientLib()
    {
        System.loadLibrary("gnustl_shared");
        System.loadLibrary("crypto_here");
        System.loadLibrary("ssl_here");
        System.loadLibrary("posclient");
        return;
    }

Method com.here.b.a.a.r() calling method java.lang.System.loadLibrary()


    private static boolean r()
    {
        int v0_0 = 1;
        try {
            System.loadLibrary("posclient");
        } catch (Exception v2_1) {
            int v0_1 = new Object[1];
            v0_1[0] = v2_1;
            com.nokia.maps.bp.c(rk>com.here.b.a.ark>.a, "exception", v0_1);
            v0_0 = 0;
        }
        return v0_0;
    }

Method com.here.android.mpa.service.MapService.onStartCommand() calling method java.lang.System.loadLibrary()


    public int onStartCommand(android.content.Intent p9, int p10, int p11)
    {
        int v0_0 = 3;
        java.util.concurrent.Semaphore v1_15 = 0;
        try {
            if (!p9.getBooleanExtra("nukeservice", 0)) {
                if ((this.g == 1) && (this.p != null)) {
                    int v2_15 = p9.getStringExtra("diskcachepath");
                    if ((!new java.io.File(this.p).exists()) && (this.p.compareTo(v2_15) != 0)) {
                        this.f.drainPermits();
                        com.nokia.maps.MapServiceClient.stopServer();
                        this.g = 0;
                        this.u = 0;
                    }
                }
                if (!this.g) {
                    this.m = p9.getStringExtra("mapdataserverurl");
                    this.n = p9.getStringExtra("mapsatelliteserverurl");
                    this.o = p9.getStringExtra("terrainserverurl");
                    this.p = p9.getStringExtra("diskcachepath");
                    this.q = p9.getStringExtra("sliserverurl");
                    this.r = p9.getShortExtra("mapvariant", 0);
                    com.here.android.mpa.service.MapService.k = p9.getBooleanExtra("USESSL", 1);
                    v0_0 = p9.getIntExtra("shutdownmode", 3);
                    if ((this.m == null) || (this.m.length() == 0)) {
                        this.m = "hybrid.api.here.com";
                    }
                    if ((this.n == null) || (this.n.length() == 0)) {
                        this.n = "http://1.sps.data.here.com";
                    }
                    if ((this.o == null) || (this.o.length() == 0)) {
                        this.o = "http://hterrain.mfs.data.here.com";
                    }
                    if ((this.q == null) || (this.q.length() == 0)) {
                        this.q = "sli.data.here.com";
                    }
                    if ((this.p == null) || (this.p.length() == 0)) {
                        this.p = com.nokia.maps.MapSettings.b();
                    }
                    if (p9.getBooleanExtra("isolated_diskcache_enabled", 0)) {
                        this.s = p9.getStringExtra("client_app_id");
                        this.t = p9.getStringExtra("client_app_token");
                    }
                    int v2_12 = com.here.android.mpa.service.MapService.j;
                    Object[] v3_1 = v2_12.length;
                    while (v1_15 < v3_1) {
                        int v4_2 = v2_12[v1_15];
                        try {
                            System.loadLibrary(v4_2);
                        } catch (String v5) {
                            if (v4_2.compareTo(com.here.android.mpa.service.MapService.j[3]) == 0) {
                            } else {
                                if (v4_2.compareTo(com.here.android.mpa.service.MapService.j[4]) == 0) {
                                } else {
                                    if (v4_2.compareTo(com.here.android.mpa.service.MapService.j[5]) != 0) {
                                    } else {
                                    }
                                }
                            }
                        } catch (int v4) {
                        }
                        v1_15++;
                    }
                    com.nokia.maps.BaseNativeObject.w();
                    com.nokia.maps.ApplicationContext.b(this.getApplicationContext());
                    if (android.os.Build$VERSION.SDK_INT == 15) {
                        com.here.network.NetworkProtocol.setAppContext(this.getApplicationContext());
                    }
                    if (!new java.io.File(this.p).mkdirs()) {
                        Object[] v3_6 = new Object[0];
                        com.nokia.maps.bp.f("MapService", new StringBuilder().append("Failed to mkdirs() for ").append(this.p).toString(), v3_6);
                    }
                    com.nokia.maps.SSLCertManager.a(this.getApplicationContext());
                    if (this.e == 0) {
                        this.e = (new java.util.Random().nextInt(1000) + 25000);
                    }
                    this.g = 1;
                    this.f.release();
                }
            } else {
                int v0_1 = this.g;
                this.g = 0;
                this.u = 0;
                if (v0_1 == 1) {
                    com.nokia.maps.MapServiceClient.stopServer();
                }
                this.stopSelf();
                System.exit(0);
                v0_0 = 2;
            }
        } catch (int v0_3) {
            throw v0_3;
        }
        return v0_0;
    }