Potentially Intent Spoofing

Description

The application is vulnerable to intent spoofing which could result in the access and exploitation of unauthorized components.

Recommendation

It is recommended to apply proper input validation and parameter filtering on intent action.

Technical details
[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.performDfu():


    public void performDfu(android.content.Intent p19)
    {
        this.logw("Secure DFU bootloader found");
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v8 = this.mGatt;
        if ((p19.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_MTU")) && (android.os.Build$VERSION.SDK_INT >= 21)) {
            int v9 = p19.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_MTU", 517);
            this.logi(new StringBuilder().append("Requesting MTU = ").append(v9).toString());
            this.requestMtu(v9);
        }
        try {
            int v2;
            this.enableCCCD(this.mControlPointCharacteristic, 1);
            this.mService.sendLogBroadcast(10, "Notifications enabled");
            this.mService.waitFor(1000);
        } catch (no.nordicsemi.android.dfu.internal.exception.RemoteDfuException v4_2) {
            throw v4_2;
        } catch (no.nordicsemi.android.dfu.internal.exception.RemoteDfuException v4_1) {
            this.loge(v4_1.getMessage());
            this.mService.sendLogBroadcast(20, v4_1.getMessage());
            this.mService.terminateConnection(v8, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.RemoteDfuException v4_0) {
            int v6 = (v4_0.getErrorNumber() | 512);
            this.loge(new StringBuilder().append(v4_0.getMessage()).append(": ").append(no.nordicsemi.android.error.SecureDfuError.parse(v6)).toString());
            int v11_20 = this.mService;
            Object[] v15_1 = new Object[1];
            v15_1[0] = no.nordicsemi.android.error.SecureDfuError.parse(v6);
            v11_20.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v15_1));
            if (!(v4_0 instanceof no.nordicsemi.android.dfu.internal.exception.RemoteDfuExtendedErrorException)) {
                this.mService.terminateConnection(v8, (v6 | 8192));
                return;
            } else {
                no.nordicsemi.android.dfu.internal.exception.RemoteDfuExtendedErrorException v5_1 = ((no.nordicsemi.android.dfu.internal.exception.RemoteDfuExtendedErrorException) v4_0);
                int v7 = (v5_1.getExtendedErrorNumber() | 1024);
                this.loge(new StringBuilder().append("Extended Error details: ").append(no.nordicsemi.android.error.SecureDfuError.parseExtendedError(v7)).toString());
                this.mService.sendLogBroadcast(20, new StringBuilder().append("Details: ").append(no.nordicsemi.android.error.SecureDfuError.parseExtendedError(v7)).append(" (Code = ").append(v5_1.getExtendedErrorNumber()).append(")").toString());
                this.mService.terminateConnection(v8, (v7 | 8192));
                return;
            }
        }
        if ((p19.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_RESUME")) && (p19.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_RESUME", 0))) {
            v2 = 0;
        } else {
            v2 = 1;
        }
        if (v2 == 0) {
            this.logi("Resume feature disabled. Performing fresh DFU");
        }
        this.sendInitPacket(v8, v2);
        this.sendFirmware(v8);
        this.mProgressInfo.setProgress(-5);
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        this.finalize(p19, 0);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.performDfu():


    public void performDfu(android.content.Intent p19)
    {
        this.logw("Secure DFU bootloader found");
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v8 = this.mGatt;
        if ((p19.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_MTU")) && (android.os.Build$VERSION.SDK_INT >= 21)) {
            int v9 = p19.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_MTU", 517);
            this.logi(new StringBuilder().append("Requesting MTU = ").append(v9).toString());
            this.requestMtu(v9);
        }
        try {
            int v2;
            this.enableCCCD(this.mControlPointCharacteristic, 1);
            this.mService.sendLogBroadcast(10, "Notifications enabled");
            this.mService.waitFor(1000);
        } catch (no.nordicsemi.android.dfu.internal.exception.RemoteDfuException v4_2) {
            throw v4_2;
        } catch (no.nordicsemi.android.dfu.internal.exception.RemoteDfuException v4_1) {
            this.loge(v4_1.getMessage());
            this.mService.sendLogBroadcast(20, v4_1.getMessage());
            this.mService.terminateConnection(v8, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.RemoteDfuException v4_0) {
            int v6 = (v4_0.getErrorNumber() | 512);
            this.loge(new StringBuilder().append(v4_0.getMessage()).append(": ").append(no.nordicsemi.android.error.SecureDfuError.parse(v6)).toString());
            int v11_20 = this.mService;
            Object[] v15_1 = new Object[1];
            v15_1[0] = no.nordicsemi.android.error.SecureDfuError.parse(v6);
            v11_20.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v15_1));
            if (!(v4_0 instanceof no.nordicsemi.android.dfu.internal.exception.RemoteDfuExtendedErrorException)) {
                this.mService.terminateConnection(v8, (v6 | 8192));
                return;
            } else {
                no.nordicsemi.android.dfu.internal.exception.RemoteDfuExtendedErrorException v5_1 = ((no.nordicsemi.android.dfu.internal.exception.RemoteDfuExtendedErrorException) v4_0);
                int v7 = (v5_1.getExtendedErrorNumber() | 1024);
                this.loge(new StringBuilder().append("Extended Error details: ").append(no.nordicsemi.android.error.SecureDfuError.parseExtendedError(v7)).toString());
                this.mService.sendLogBroadcast(20, new StringBuilder().append("Details: ").append(no.nordicsemi.android.error.SecureDfuError.parseExtendedError(v7)).append(" (Code = ").append(v5_1.getExtendedErrorNumber()).append(")").toString());
                this.mService.terminateConnection(v8, (v7 | 8192));
                return;
            }
        }
        if ((p19.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_RESUME")) && (p19.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_RESUME", 0))) {
            v2 = 0;
        } else {
            v2 = 1;
        }
        if (v2 == 0) {
            this.logi("Resume feature disabled. Performing fresh DFU");
        }
        this.sendInitPacket(v8, v2);
        this.sendFirmware(v8);
        this.mProgressInfo.setProgress(-5);
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        this.finalize(p19, 0);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.performDfu():


    public void performDfu(android.content.Intent p19)
    {
        this.logw("Secure DFU bootloader found");
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v8 = this.mGatt;
        if ((p19.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_MTU")) && (android.os.Build$VERSION.SDK_INT >= 21)) {
            int v9 = p19.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_MTU", 517);
            this.logi(new StringBuilder().append("Requesting MTU = ").append(v9).toString());
            this.requestMtu(v9);
        }
        try {
            int v2;
            this.enableCCCD(this.mControlPointCharacteristic, 1);
            this.mService.sendLogBroadcast(10, "Notifications enabled");
            this.mService.waitFor(1000);
        } catch (no.nordicsemi.android.dfu.internal.exception.RemoteDfuException v4_2) {
            throw v4_2;
        } catch (no.nordicsemi.android.dfu.internal.exception.RemoteDfuException v4_1) {
            this.loge(v4_1.getMessage());
            this.mService.sendLogBroadcast(20, v4_1.getMessage());
            this.mService.terminateConnection(v8, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.RemoteDfuException v4_0) {
            int v6 = (v4_0.getErrorNumber() | 512);
            this.loge(new StringBuilder().append(v4_0.getMessage()).append(": ").append(no.nordicsemi.android.error.SecureDfuError.parse(v6)).toString());
            int v11_20 = this.mService;
            Object[] v15_1 = new Object[1];
            v15_1[0] = no.nordicsemi.android.error.SecureDfuError.parse(v6);
            v11_20.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v15_1));
            if (!(v4_0 instanceof no.nordicsemi.android.dfu.internal.exception.RemoteDfuExtendedErrorException)) {
                this.mService.terminateConnection(v8, (v6 | 8192));
                return;
            } else {
                no.nordicsemi.android.dfu.internal.exception.RemoteDfuExtendedErrorException v5_1 = ((no.nordicsemi.android.dfu.internal.exception.RemoteDfuExtendedErrorException) v4_0);
                int v7 = (v5_1.getExtendedErrorNumber() | 1024);
                this.loge(new StringBuilder().append("Extended Error details: ").append(no.nordicsemi.android.error.SecureDfuError.parseExtendedError(v7)).toString());
                this.mService.sendLogBroadcast(20, new StringBuilder().append("Details: ").append(no.nordicsemi.android.error.SecureDfuError.parseExtendedError(v7)).append(" (Code = ").append(v5_1.getExtendedErrorNumber()).append(")").toString());
                this.mService.terminateConnection(v8, (v7 | 8192));
                return;
            }
        }
        if ((p19.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_RESUME")) && (p19.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_RESUME", 0))) {
            v2 = 0;
        } else {
            v2 = 1;
        }
        if (v2 == 0) {
            this.logi("Resume feature disabled. Performing fresh DFU");
        }
        this.sendInitPacket(v8, v2);
        this.sendFirmware(v8);
        this.mProgressInfo.setProgress(-5);
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        this.finalize(p19, 0);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.performDfu():


    public void performDfu(android.content.Intent p19)
    {
        this.logw("Secure DFU bootloader found");
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v8 = this.mGatt;
        if ((p19.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_MTU")) && (android.os.Build$VERSION.SDK_INT >= 21)) {
            int v9 = p19.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_MTU", 517);
            this.logi(new StringBuilder().append("Requesting MTU = ").append(v9).toString());
            this.requestMtu(v9);
        }
        try {
            int v2;
            this.enableCCCD(this.mControlPointCharacteristic, 1);
            this.mService.sendLogBroadcast(10, "Notifications enabled");
            this.mService.waitFor(1000);
        } catch (no.nordicsemi.android.dfu.internal.exception.RemoteDfuException v4_2) {
            throw v4_2;
        } catch (no.nordicsemi.android.dfu.internal.exception.RemoteDfuException v4_1) {
            this.loge(v4_1.getMessage());
            this.mService.sendLogBroadcast(20, v4_1.getMessage());
            this.mService.terminateConnection(v8, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.RemoteDfuException v4_0) {
            int v6 = (v4_0.getErrorNumber() | 512);
            this.loge(new StringBuilder().append(v4_0.getMessage()).append(": ").append(no.nordicsemi.android.error.SecureDfuError.parse(v6)).toString());
            int v11_20 = this.mService;
            Object[] v15_1 = new Object[1];
            v15_1[0] = no.nordicsemi.android.error.SecureDfuError.parse(v6);
            v11_20.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v15_1));
            if (!(v4_0 instanceof no.nordicsemi.android.dfu.internal.exception.RemoteDfuExtendedErrorException)) {
                this.mService.terminateConnection(v8, (v6 | 8192));
                return;
            } else {
                no.nordicsemi.android.dfu.internal.exception.RemoteDfuExtendedErrorException v5_1 = ((no.nordicsemi.android.dfu.internal.exception.RemoteDfuExtendedErrorException) v4_0);
                int v7 = (v5_1.getExtendedErrorNumber() | 1024);
                this.loge(new StringBuilder().append("Extended Error details: ").append(no.nordicsemi.android.error.SecureDfuError.parseExtendedError(v7)).toString());
                this.mService.sendLogBroadcast(20, new StringBuilder().append("Details: ").append(no.nordicsemi.android.error.SecureDfuError.parseExtendedError(v7)).append(" (Code = ").append(v5_1.getExtendedErrorNumber()).append(")").toString());
                this.mService.terminateConnection(v8, (v7 | 8192));
                return;
            }
        }
        if ((p19.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_RESUME")) && (p19.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_RESUME", 0))) {
            v2 = 0;
        } else {
            v2 = 1;
        }
        if (v2 == 0) {
            this.logi("Resume feature disabled. Performing fresh DFU");
        }
        this.sendInitPacket(v8, v2);
        this.sendFirmware(v8);
        this.mProgressInfo.setProgress(-5);
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        this.finalize(p19, 0);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'Disconnecting...' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'initialize', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt; I Ljava/io/InputStream; Ljava/io/InputStream;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'disconnect', '(Landroid/bluetooth/BluetoothGatt;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value Disconnecting... to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.initialize():


    public boolean initialize(android.content.Intent p4, android.bluetooth.BluetoothGatt p5, int p6, java.io.InputStream p7, java.io.InputStream p8)
    {
        boolean v0_0;
        if (p8 != null) {
            v0_0 = super.initialize(p4, p5, p6, p7, p8);
        } else {
            this.mService.sendLogBroadcast(20, "The Init packet is required by this version DFU Bootloader");
            this.mService.terminateConnection(p5, 4107);
            v0_0 = 0;
        }
        return v0_0;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.disconnect():


    protected void disconnect(android.bluetooth.BluetoothGatt p3)
    {
        if (this.mConnectionState != 0) {
            this.sendLogBroadcast(1, "Disconnecting...");
            this.mProgressInfo.setProgress(-5);
            this.mConnectionState = -4;
            this.logi("Disconnecting from the device...");
            this.sendLogBroadcast(0, "gatt.disconnect()");
            p3.disconnect();
            this.waitUntilDisconnected();
            this.sendLogBroadcast(5, "Disconnected");
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'gatt.refresh() (hidden)' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'initialize', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt; I Ljava/io/InputStream; Ljava/io/InputStream;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'refreshDeviceCache', '(Landroid/bluetooth/BluetoothGatt; Z)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.refresh() (hidden) to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.initialize():


    public boolean initialize(android.content.Intent p4, android.bluetooth.BluetoothGatt p5, int p6, java.io.InputStream p7, java.io.InputStream p8)
    {
        boolean v0_0;
        if (p8 != null) {
            v0_0 = super.initialize(p4, p5, p6, p7, p8);
        } else {
            this.mService.sendLogBroadcast(20, "The Init packet is required by this version DFU Bootloader");
            this.mService.terminateConnection(p5, 4107);
            v0_0 = 0;
        }
        return v0_0;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.refreshDeviceCache():


    protected void refreshDeviceCache(android.bluetooth.BluetoothGatt p7, boolean p8)
    {
        if ((p8) || (p7.getDevice().getBondState() == 10)) {
            this.sendLogBroadcast(0, "gatt.refresh() (hidden)");
            try {
                Class[] v5_2 = new Class[0];
                reflect.Method v1 = p7.getClass().getMethod("refresh", v5_2);
            } catch (Exception v0) {
                this.loge("An exception occurred while refreshing device", v0);
                this.sendLogBroadcast(15, "Refreshing failed");
            }
            if (v1 != null) {
                String v3_2 = new Object[0];
                this.logi(new StringBuilder().append("Refreshing result: ").append(((Boolean) v1.invoke(p7, v3_2)).booleanValue()).toString());
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'initialize', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt; I Ljava/io/InputStream; Ljava/io/InputStream;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'report', '(I)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.initialize():


    public boolean initialize(android.content.Intent p4, android.bluetooth.BluetoothGatt p5, int p6, java.io.InputStream p7, java.io.InputStream p8)
    {
        boolean v0_0;
        if (p8 != null) {
            v0_0 = super.initialize(p4, p5, p6, p7, p8);
        } else {
            this.mService.sendLogBroadcast(20, "The Init packet is required by this version DFU Bootloader");
            this.mService.terminateConnection(p5, 4107);
            v0_0 = 0;
        }
        return v0_0;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.report():


    private void report(int p11)
    {
        this.sendErrorBroadcast(p11);
        if (!this.mDisableNotification) {
            String v2;
            String v1 = this.mDeviceAddress;
            if (this.mDeviceName == null) {
                v2 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
            } else {
                v2 = this.mDeviceName;
            }
            android.support.v4.app.NotificationCompat$Builder v0 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1).setColor(-65536).setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error_msg)).setAutoCancel(1);
            android.content.Intent v3_1 = new android.content.Intent(this, this.getNotificationTarget());
            v3_1.addFlags(268435456);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v1);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v2);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", p11);
            v0.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v3_1, 134217728));
            this.updateErrorNotification(v0);
            ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v0.build());
        }
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'initialize', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt; I Ljava/io/InputStream; Ljava/io/InputStream;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.initialize():


    public boolean initialize(android.content.Intent p4, android.bluetooth.BluetoothGatt p5, int p6, java.io.InputStream p7, java.io.InputStream p8)
    {
        boolean v0_0;
        if (p8 != null) {
            v0_0 = super.initialize(p4, p5, p6, p7, p8);
        } else {
            this.mService.sendLogBroadcast(20, "The Init packet is required by this version DFU Bootloader");
            this.mService.terminateConnection(p5, 4107);
            v0_0 = 0;
        }
        return v0_0;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'gatt.disconnect()' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'initialize', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt; I Ljava/io/InputStream; Ljava/io/InputStream;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'disconnect', '(Landroid/bluetooth/BluetoothGatt;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.disconnect() to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.initialize():


    public boolean initialize(android.content.Intent p4, android.bluetooth.BluetoothGatt p5, int p6, java.io.InputStream p7, java.io.InputStream p8)
    {
        boolean v0_0;
        if (p8 != null) {
            v0_0 = super.initialize(p4, p5, p6, p7, p8);
        } else {
            this.mService.sendLogBroadcast(20, "The Init packet is required by this version DFU Bootloader");
            this.mService.terminateConnection(p5, 4107);
            v0_0 = 0;
        }
        return v0_0;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.disconnect():


    protected void disconnect(android.bluetooth.BluetoothGatt p3)
    {
        if (this.mConnectionState != 0) {
            this.sendLogBroadcast(1, "Disconnecting...");
            this.mProgressInfo.setProgress(-5);
            this.mConnectionState = -4;
            this.logi("Disconnecting from the device...");
            this.sendLogBroadcast(0, "gatt.disconnect()");
            p3.disconnect();
            this.waitUntilDisconnected();
            this.sendLogBroadcast(5, "Disconnected");
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'initialize', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt; I Ljava/io/InputStream; Ljava/io/InputStream;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'report', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendErrorBroadcast', '(I)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.initialize():


    public boolean initialize(android.content.Intent p4, android.bluetooth.BluetoothGatt p5, int p6, java.io.InputStream p7, java.io.InputStream p8)
    {
        boolean v0_0;
        if (p8 != null) {
            v0_0 = super.initialize(p4, p5, p6, p7, p8);
        } else {
            this.mService.sendLogBroadcast(20, "The Init packet is required by this version DFU Bootloader");
            this.mService.terminateConnection(p5, 4107);
            v0_0 = 0;
        }
        return v0_0;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.report():


    private void report(int p11)
    {
        this.sendErrorBroadcast(p11);
        if (!this.mDisableNotification) {
            String v2;
            String v1 = this.mDeviceAddress;
            if (this.mDeviceName == null) {
                v2 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
            } else {
                v2 = this.mDeviceName;
            }
            android.support.v4.app.NotificationCompat$Builder v0 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1).setColor(-65536).setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error_msg)).setAutoCancel(1);
            android.content.Intent v3_1 = new android.content.Intent(this, this.getNotificationTarget());
            v3_1.addFlags(268435456);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v1);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v2);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", p11);
            v0.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v3_1, 134217728));
            this.updateErrorNotification(v0);
            ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v0.build());
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendErrorBroadcast():


    private void sendErrorBroadcast(int p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR");
        if ((p4 & 16384) <= 0) {
            if ((32768 & p4) <= 0) {
                if ((p4 & 8192) <= 0) {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4);
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 0);
                } else {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -8193));
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 3);
                }
            } else {
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (-32769 & p4));
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 1);
            }
        } else {
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -16385));
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 2);
        }
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'gatt.close()' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'initialize', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt; I Ljava/io/InputStream; Ljava/io/InputStream;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'close', '(Landroid/bluetooth/BluetoothGatt;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.close() to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.initialize():


    public boolean initialize(android.content.Intent p4, android.bluetooth.BluetoothGatt p5, int p6, java.io.InputStream p7, java.io.InputStream p8)
    {
        boolean v0_0;
        if (p8 != null) {
            v0_0 = super.initialize(p4, p5, p6, p7, p8);
        } else {
            this.mService.sendLogBroadcast(20, "The Init packet is required by this version DFU Bootloader");
            this.mService.terminateConnection(p5, 4107);
            v0_0 = 0;
        }
        return v0_0;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.close():


    protected void close(android.bluetooth.BluetoothGatt p3)
    {
        this.logi("Cleaning up...");
        this.sendLogBroadcast(0, "gatt.close()");
        p3.close();
        this.mConnectionState = -5;
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'initialize', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt; I Ljava/io/InputStream; Ljava/io/InputStream;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.initialize():


    public boolean initialize(android.content.Intent p4, android.bluetooth.BluetoothGatt p5, int p6, java.io.InputStream p7, java.io.InputStream p8)
    {
        boolean v0_0;
        if (p8 != null) {
            v0_0 = super.initialize(p4, p5, p6, p7, p8);
        } else {
            this.mService.sendLogBroadcast(20, "The Init packet is required by this version DFU Bootloader");
            this.mService.terminateConnection(p5, 4107);
            v0_0 = 0;
        }
        return v0_0;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'initialize', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt; I Ljava/io/InputStream; Ljava/io/InputStream;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.initialize():


    public boolean initialize(android.content.Intent p4, android.bluetooth.BluetoothGatt p5, int p6, java.io.InputStream p7, java.io.InputStream p8)
    {
        boolean v0_0;
        if (p8 != null) {
            v0_0 = super.initialize(p4, p5, p6, p7, p8);
        } else {
            this.mService.sendLogBroadcast(20, "The Init packet is required by this version DFU Bootloader");
            this.mService.terminateConnection(p5, 4107);
            v0_0 = 0;
        }
        return v0_0;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'initialize', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt; I Ljava/io/InputStream; Ljava/io/InputStream;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.initialize():


    public boolean initialize(android.content.Intent p4, android.bluetooth.BluetoothGatt p5, int p6, java.io.InputStream p7, java.io.InputStream p8)
    {
        boolean v0_0;
        if (p8 != null) {
            v0_0 = super.initialize(p4, p5, p6, p7, p8);
        } else {
            this.mService.sendLogBroadcast(20, "The Init packet is required by this version DFU Bootloader");
            this.mService.terminateConnection(p5, 4107);
            v0_0 = 0;
        }
        return v0_0;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DATA' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'initialize', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt; I Ljava/io/InputStream; Ljava/io/InputStream;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'report', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendErrorBroadcast', '(I)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DATA to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.initialize():


    public boolean initialize(android.content.Intent p4, android.bluetooth.BluetoothGatt p5, int p6, java.io.InputStream p7, java.io.InputStream p8)
    {
        boolean v0_0;
        if (p8 != null) {
            v0_0 = super.initialize(p4, p5, p6, p7, p8);
        } else {
            this.mService.sendLogBroadcast(20, "The Init packet is required by this version DFU Bootloader");
            this.mService.terminateConnection(p5, 4107);
            v0_0 = 0;
        }
        return v0_0;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.report():


    private void report(int p11)
    {
        this.sendErrorBroadcast(p11);
        if (!this.mDisableNotification) {
            String v2;
            String v1 = this.mDeviceAddress;
            if (this.mDeviceName == null) {
                v2 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
            } else {
                v2 = this.mDeviceName;
            }
            android.support.v4.app.NotificationCompat$Builder v0 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1).setColor(-65536).setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error_msg)).setAutoCancel(1);
            android.content.Intent v3_1 = new android.content.Intent(this, this.getNotificationTarget());
            v3_1.addFlags(268435456);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v1);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v2);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", p11);
            v0.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v3_1, 134217728));
            this.updateErrorNotification(v0);
            ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v0.build());
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendErrorBroadcast():


    private void sendErrorBroadcast(int p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR");
        if ((p4 & 16384) <= 0) {
            if ((32768 & p4) <= 0) {
                if ((p4 & 8192) <= 0) {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4);
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 0);
                } else {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -8193));
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 3);
                }
            } else {
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (-32769 & p4));
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 1);
            }
        } else {
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -16385));
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 2);
        }
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'initialize', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt; I Ljava/io/InputStream; Ljava/io/InputStream;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'report', '(I)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.initialize():


    public boolean initialize(android.content.Intent p4, android.bluetooth.BluetoothGatt p5, int p6, java.io.InputStream p7, java.io.InputStream p8)
    {
        boolean v0_0;
        if (p8 != null) {
            v0_0 = super.initialize(p4, p5, p6, p7, p8);
        } else {
            this.mService.sendLogBroadcast(20, "The Init packet is required by this version DFU Bootloader");
            this.mService.terminateConnection(p5, 4107);
            v0_0 = 0;
        }
        return v0_0;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.report():


    private void report(int p11)
    {
        this.sendErrorBroadcast(p11);
        if (!this.mDisableNotification) {
            String v2;
            String v1 = this.mDeviceAddress;
            if (this.mDeviceName == null) {
                v2 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
            } else {
                v2 = this.mDeviceName;
            }
            android.support.v4.app.NotificationCompat$Builder v0 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1).setColor(-65536).setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error_msg)).setAutoCancel(1);
            android.content.Intent v3_1 = new android.content.Intent(this, this.getNotificationTarget());
            v3_1.addFlags(268435456);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v1);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v2);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", p11);
            v0.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v3_1, 134217728));
            this.updateErrorNotification(v0);
            ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v0.build());
        }
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'initialize', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt; I Ljava/io/InputStream; Ljava/io/InputStream;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'report', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendErrorBroadcast', '(I)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.initialize():


    public boolean initialize(android.content.Intent p4, android.bluetooth.BluetoothGatt p5, int p6, java.io.InputStream p7, java.io.InputStream p8)
    {
        boolean v0_0;
        if (p8 != null) {
            v0_0 = super.initialize(p4, p5, p6, p7, p8);
        } else {
            this.mService.sendLogBroadcast(20, "The Init packet is required by this version DFU Bootloader");
            this.mService.terminateConnection(p5, 4107);
            v0_0 = 0;
        }
        return v0_0;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.report():


    private void report(int p11)
    {
        this.sendErrorBroadcast(p11);
        if (!this.mDisableNotification) {
            String v2;
            String v1 = this.mDeviceAddress;
            if (this.mDeviceName == null) {
                v2 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
            } else {
                v2 = this.mDeviceName;
            }
            android.support.v4.app.NotificationCompat$Builder v0 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1).setColor(-65536).setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error_msg)).setAutoCancel(1);
            android.content.Intent v3_1 = new android.content.Intent(this, this.getNotificationTarget());
            v3_1.addFlags(268435456);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v1);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v2);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", p11);
            v0.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v3_1, 134217728));
            this.updateErrorNotification(v0);
            ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v0.build());
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendErrorBroadcast():


    private void sendErrorBroadcast(int p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR");
        if ((p4 & 16384) <= 0) {
            if ((32768 & p4) <= 0) {
                if ((p4 & 8192) <= 0) {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4);
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 0);
                } else {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -8193));
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 3);
                }
            } else {
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (-32769 & p4));
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 1);
            }
        } else {
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -16385));
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 2);
        }
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'sendInitPacket', '(Landroid/bluetooth/BluetoothGatt; Z)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.sendInitPacket():


    private void sendInitPacket(android.bluetooth.BluetoothGatt p20, boolean p21)
    {
        java.util.zip.CRC32 v6_1 = new java.util.zip.CRC32();
        this.logi("Setting object to Command (Op Code = 6, Type = 1)");
        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectInfo v9 = this.selectObject(1);
        String v14_1 = new Object[3];
        v14_1[0] = Integer.valueOf(v9.maxSize);
        v14_1[1] = Integer.valueOf(v9.offset);
        v14_1[2] = Integer.valueOf(v9.CRC32);
        this.logi(String.format(java.util.Locale.US, "Command object info received (Max size = %d, Offset = %d, CRC = %08X)", v14_1));
        no.nordicsemi.android.dfu.DfuBaseService v12_63 = this.mService;
        android.bluetooth.BluetoothGatt v0_52 = new Object[3];
        Integer v16_15 = v0_52;
        v16_15[0] = Integer.valueOf(v9.maxSize);
        v16_15[1] = Integer.valueOf(v9.offset);
        v16_15[2] = Integer.valueOf(v9.CRC32);
        v12_63.sendLogBroadcast(10, String.format(java.util.Locale.US, "Command object info received (Max size = %d, Offset = %d, CRC = %08X)", v16_15));
        // Both branches of the condition point to the same code.
        // if (this.mInitPacketSizeInBytes <= v9.maxSize) {
            int v11 = 0;
            int v10 = 0;
            if ((!p21) || ((v9.offset <= 0) || (v9.offset > this.mInitPacketSizeInBytes))) {
                if (v11 == 0) {
                    this.setPacketReceiptNotifications(0);
                    this.mService.sendLogBroadcast(10, "Packet Receipt Notif disabled (Op Code = 2, Value = 0)");
                    int v2 = 1;
                    while (v2 <= 3) {
                        if (v10 == 0) {
                            this.logi(new StringBuilder().append("Creating Init packet object (Op Code = 1, Type = 1, Size = ").append(this.mInitPacketSizeInBytes).append(")").toString());
                            this.writeCreateRequest(1, this.mInitPacketSizeInBytes);
                            this.mService.sendLogBroadcast(10, "Command object created");
                        }
                        this.logi(new StringBuilder().append("Sending ").append((this.mInitPacketSizeInBytes - v9.offset)).append(" bytes of init packet...").toString());
                        this.writeInitData(this.mPacketCharacteristic, v6_1);
                        int v5_0 = ((int) (v6_1.getValue() & 2.1219957905e-314));
                        no.nordicsemi.android.dfu.DfuBaseService v12_41 = this.mService;
                        android.bluetooth.BluetoothGatt v0_25 = new Object[1];
                        Integer v16_5 = v0_25;
                        v16_5[0] = Integer.valueOf(v5_0);
                        v12_41.sendLogBroadcast(10, String.format(java.util.Locale.US, "Command object sent (CRC = %08X)", v16_5));
                        this.logi("Sending Calculate Checksum command (Op Code = 3)");
                        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectChecksum v4 = this.readChecksum();
                        no.nordicsemi.android.dfu.DfuBaseService v12_43 = this.mService;
                        android.bluetooth.BluetoothGatt v0_29 = new Object[2];
                        Integer v16_7 = v0_29;
                        v16_7[0] = Integer.valueOf(v4.offset);
                        v16_7[1] = Integer.valueOf(v4.CRC32);
                        v12_43.sendLogBroadcast(10, String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v16_7));
                        String v14_13 = new Object[2];
                        v14_13[0] = Integer.valueOf(v4.offset);
                        v14_13[1] = Integer.valueOf(v4.CRC32);
                        this.logi(String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v14_13));
                        if (v5_0 == v4.CRC32) {
                            break;
                        }
                        if (v2 >= 3) {
                            this.loge("CRC does not match!");
                            this.mService.sendLogBroadcast(20, "CRC does not match!");
                            this.mService.terminateConnection(p20, 4109);
                            return;
                        } else {
                            v2++;
                            this.logi(new StringBuilder().append("CRC does not match! Retrying...(").append(v2).append("/").append(3).append(")").toString());
                            this.mService.sendLogBroadcast(15, new StringBuilder().append("CRC does not match! Retrying...(").append(v2).append("/").append(3).append(")").toString());
                            v10 = 0;
                            try {
                                v9.offset = 0;
                                v9.CRC32 = 0;
                                this.mInitPacketStream.reset();
                                v6_1.reset();
                            } catch (java.io.IOException v7_1) {
                                this.loge("Error while resetting the init packet stream", v7_1);
                                this.mService.terminateConnection(p20, 4100);
                                return;
                            }
                        }
                    }
                }
                this.logi("Executing init packet (Op Code = 4)");
                this.writeExecute().mService.sendLogBroadcast(10, "Command object executed");
            } else {
                try {
                    byte[] v3 = new byte[v9.offset];
                    this.mInitPacketStream.read(v3);
                    v6_1.update(v3);
                } catch (java.io.IOException v7_0) {
                    this.loge(new StringBuilder().append("Error while reading ").append(v9.offset).append(" bytes from the init packet stream").toString(), v7_0);
                    try {
                        this.mInitPacketStream.reset();
                        v6_1.reset();
                        v9.offset = 0;
                    } catch (java.io.IOException v8) {
                        this.loge("Error while resetting the init packet stream", v8);
                        this.mService.terminateConnection(p20, 4100);
                    }
                }
                if (v9.CRC32 != ((int) (v6_1.getValue() & 2.1219957905e-314))) {
                    this.mInitPacketStream.reset();
                    v6_1.reset();
                    v9.offset = 0;
                } else {
                    this.logi("Init packet CRC is the same");
                    if (v9.offset != this.mInitPacketSizeInBytes) {
                        this.logi(new StringBuilder().append("-> ").append(v9.offset).append(" bytes of Init packet were sent before").toString());
                        v10 = 1;
                        this.mService.sendLogBroadcast(10, "Resuming sending Init packet...");
                    } else {
                        this.logi("-> Whole Init packet was sent before");
                        v11 = 1;
                        this.mService.sendLogBroadcast(10, "Received CRC match Init packet");
                    }
                }
            }
            return;
        // }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'sendInitPacket', '(Landroid/bluetooth/BluetoothGatt; Z)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.sendInitPacket():


    private void sendInitPacket(android.bluetooth.BluetoothGatt p20, boolean p21)
    {
        java.util.zip.CRC32 v6_1 = new java.util.zip.CRC32();
        this.logi("Setting object to Command (Op Code = 6, Type = 1)");
        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectInfo v9 = this.selectObject(1);
        String v14_1 = new Object[3];
        v14_1[0] = Integer.valueOf(v9.maxSize);
        v14_1[1] = Integer.valueOf(v9.offset);
        v14_1[2] = Integer.valueOf(v9.CRC32);
        this.logi(String.format(java.util.Locale.US, "Command object info received (Max size = %d, Offset = %d, CRC = %08X)", v14_1));
        no.nordicsemi.android.dfu.DfuBaseService v12_63 = this.mService;
        android.bluetooth.BluetoothGatt v0_52 = new Object[3];
        Integer v16_15 = v0_52;
        v16_15[0] = Integer.valueOf(v9.maxSize);
        v16_15[1] = Integer.valueOf(v9.offset);
        v16_15[2] = Integer.valueOf(v9.CRC32);
        v12_63.sendLogBroadcast(10, String.format(java.util.Locale.US, "Command object info received (Max size = %d, Offset = %d, CRC = %08X)", v16_15));
        // Both branches of the condition point to the same code.
        // if (this.mInitPacketSizeInBytes <= v9.maxSize) {
            int v11 = 0;
            int v10 = 0;
            if ((!p21) || ((v9.offset <= 0) || (v9.offset > this.mInitPacketSizeInBytes))) {
                if (v11 == 0) {
                    this.setPacketReceiptNotifications(0);
                    this.mService.sendLogBroadcast(10, "Packet Receipt Notif disabled (Op Code = 2, Value = 0)");
                    int v2 = 1;
                    while (v2 <= 3) {
                        if (v10 == 0) {
                            this.logi(new StringBuilder().append("Creating Init packet object (Op Code = 1, Type = 1, Size = ").append(this.mInitPacketSizeInBytes).append(")").toString());
                            this.writeCreateRequest(1, this.mInitPacketSizeInBytes);
                            this.mService.sendLogBroadcast(10, "Command object created");
                        }
                        this.logi(new StringBuilder().append("Sending ").append((this.mInitPacketSizeInBytes - v9.offset)).append(" bytes of init packet...").toString());
                        this.writeInitData(this.mPacketCharacteristic, v6_1);
                        int v5_0 = ((int) (v6_1.getValue() & 2.1219957905e-314));
                        no.nordicsemi.android.dfu.DfuBaseService v12_41 = this.mService;
                        android.bluetooth.BluetoothGatt v0_25 = new Object[1];
                        Integer v16_5 = v0_25;
                        v16_5[0] = Integer.valueOf(v5_0);
                        v12_41.sendLogBroadcast(10, String.format(java.util.Locale.US, "Command object sent (CRC = %08X)", v16_5));
                        this.logi("Sending Calculate Checksum command (Op Code = 3)");
                        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectChecksum v4 = this.readChecksum();
                        no.nordicsemi.android.dfu.DfuBaseService v12_43 = this.mService;
                        android.bluetooth.BluetoothGatt v0_29 = new Object[2];
                        Integer v16_7 = v0_29;
                        v16_7[0] = Integer.valueOf(v4.offset);
                        v16_7[1] = Integer.valueOf(v4.CRC32);
                        v12_43.sendLogBroadcast(10, String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v16_7));
                        String v14_13 = new Object[2];
                        v14_13[0] = Integer.valueOf(v4.offset);
                        v14_13[1] = Integer.valueOf(v4.CRC32);
                        this.logi(String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v14_13));
                        if (v5_0 == v4.CRC32) {
                            break;
                        }
                        if (v2 >= 3) {
                            this.loge("CRC does not match!");
                            this.mService.sendLogBroadcast(20, "CRC does not match!");
                            this.mService.terminateConnection(p20, 4109);
                            return;
                        } else {
                            v2++;
                            this.logi(new StringBuilder().append("CRC does not match! Retrying...(").append(v2).append("/").append(3).append(")").toString());
                            this.mService.sendLogBroadcast(15, new StringBuilder().append("CRC does not match! Retrying...(").append(v2).append("/").append(3).append(")").toString());
                            v10 = 0;
                            try {
                                v9.offset = 0;
                                v9.CRC32 = 0;
                                this.mInitPacketStream.reset();
                                v6_1.reset();
                            } catch (java.io.IOException v7_1) {
                                this.loge("Error while resetting the init packet stream", v7_1);
                                this.mService.terminateConnection(p20, 4100);
                                return;
                            }
                        }
                    }
                }
                this.logi("Executing init packet (Op Code = 4)");
                this.writeExecute().mService.sendLogBroadcast(10, "Command object executed");
            } else {
                try {
                    byte[] v3 = new byte[v9.offset];
                    this.mInitPacketStream.read(v3);
                    v6_1.update(v3);
                } catch (java.io.IOException v7_0) {
                    this.loge(new StringBuilder().append("Error while reading ").append(v9.offset).append(" bytes from the init packet stream").toString(), v7_0);
                    try {
                        this.mInitPacketStream.reset();
                        v6_1.reset();
                        v9.offset = 0;
                    } catch (java.io.IOException v8) {
                        this.loge("Error while resetting the init packet stream", v8);
                        this.mService.terminateConnection(p20, 4100);
                    }
                }
                if (v9.CRC32 != ((int) (v6_1.getValue() & 2.1219957905e-314))) {
                    this.mInitPacketStream.reset();
                    v6_1.reset();
                    v9.offset = 0;
                } else {
                    this.logi("Init packet CRC is the same");
                    if (v9.offset != this.mInitPacketSizeInBytes) {
                        this.logi(new StringBuilder().append("-> ").append(v9.offset).append(" bytes of Init packet were sent before").toString());
                        v10 = 1;
                        this.mService.sendLogBroadcast(10, "Resuming sending Init packet...");
                    } else {
                        this.logi("-> Whole Init packet was sent before");
                        v11 = 1;
                        this.mService.sendLogBroadcast(10, "Received CRC match Init packet");
                    }
                }
            }
            return;
        // }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'sendInitPacket', '(Landroid/bluetooth/BluetoothGatt; Z)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.sendInitPacket():


    private void sendInitPacket(android.bluetooth.BluetoothGatt p20, boolean p21)
    {
        java.util.zip.CRC32 v6_1 = new java.util.zip.CRC32();
        this.logi("Setting object to Command (Op Code = 6, Type = 1)");
        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectInfo v9 = this.selectObject(1);
        String v14_1 = new Object[3];
        v14_1[0] = Integer.valueOf(v9.maxSize);
        v14_1[1] = Integer.valueOf(v9.offset);
        v14_1[2] = Integer.valueOf(v9.CRC32);
        this.logi(String.format(java.util.Locale.US, "Command object info received (Max size = %d, Offset = %d, CRC = %08X)", v14_1));
        no.nordicsemi.android.dfu.DfuBaseService v12_63 = this.mService;
        android.bluetooth.BluetoothGatt v0_52 = new Object[3];
        Integer v16_15 = v0_52;
        v16_15[0] = Integer.valueOf(v9.maxSize);
        v16_15[1] = Integer.valueOf(v9.offset);
        v16_15[2] = Integer.valueOf(v9.CRC32);
        v12_63.sendLogBroadcast(10, String.format(java.util.Locale.US, "Command object info received (Max size = %d, Offset = %d, CRC = %08X)", v16_15));
        // Both branches of the condition point to the same code.
        // if (this.mInitPacketSizeInBytes <= v9.maxSize) {
            int v11 = 0;
            int v10 = 0;
            if ((!p21) || ((v9.offset <= 0) || (v9.offset > this.mInitPacketSizeInBytes))) {
                if (v11 == 0) {
                    this.setPacketReceiptNotifications(0);
                    this.mService.sendLogBroadcast(10, "Packet Receipt Notif disabled (Op Code = 2, Value = 0)");
                    int v2 = 1;
                    while (v2 <= 3) {
                        if (v10 == 0) {
                            this.logi(new StringBuilder().append("Creating Init packet object (Op Code = 1, Type = 1, Size = ").append(this.mInitPacketSizeInBytes).append(")").toString());
                            this.writeCreateRequest(1, this.mInitPacketSizeInBytes);
                            this.mService.sendLogBroadcast(10, "Command object created");
                        }
                        this.logi(new StringBuilder().append("Sending ").append((this.mInitPacketSizeInBytes - v9.offset)).append(" bytes of init packet...").toString());
                        this.writeInitData(this.mPacketCharacteristic, v6_1);
                        int v5_0 = ((int) (v6_1.getValue() & 2.1219957905e-314));
                        no.nordicsemi.android.dfu.DfuBaseService v12_41 = this.mService;
                        android.bluetooth.BluetoothGatt v0_25 = new Object[1];
                        Integer v16_5 = v0_25;
                        v16_5[0] = Integer.valueOf(v5_0);
                        v12_41.sendLogBroadcast(10, String.format(java.util.Locale.US, "Command object sent (CRC = %08X)", v16_5));
                        this.logi("Sending Calculate Checksum command (Op Code = 3)");
                        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectChecksum v4 = this.readChecksum();
                        no.nordicsemi.android.dfu.DfuBaseService v12_43 = this.mService;
                        android.bluetooth.BluetoothGatt v0_29 = new Object[2];
                        Integer v16_7 = v0_29;
                        v16_7[0] = Integer.valueOf(v4.offset);
                        v16_7[1] = Integer.valueOf(v4.CRC32);
                        v12_43.sendLogBroadcast(10, String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v16_7));
                        String v14_13 = new Object[2];
                        v14_13[0] = Integer.valueOf(v4.offset);
                        v14_13[1] = Integer.valueOf(v4.CRC32);
                        this.logi(String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v14_13));
                        if (v5_0 == v4.CRC32) {
                            break;
                        }
                        if (v2 >= 3) {
                            this.loge("CRC does not match!");
                            this.mService.sendLogBroadcast(20, "CRC does not match!");
                            this.mService.terminateConnection(p20, 4109);
                            return;
                        } else {
                            v2++;
                            this.logi(new StringBuilder().append("CRC does not match! Retrying...(").append(v2).append("/").append(3).append(")").toString());
                            this.mService.sendLogBroadcast(15, new StringBuilder().append("CRC does not match! Retrying...(").append(v2).append("/").append(3).append(")").toString());
                            v10 = 0;
                            try {
                                v9.offset = 0;
                                v9.CRC32 = 0;
                                this.mInitPacketStream.reset();
                                v6_1.reset();
                            } catch (java.io.IOException v7_1) {
                                this.loge("Error while resetting the init packet stream", v7_1);
                                this.mService.terminateConnection(p20, 4100);
                                return;
                            }
                        }
                    }
                }
                this.logi("Executing init packet (Op Code = 4)");
                this.writeExecute().mService.sendLogBroadcast(10, "Command object executed");
            } else {
                try {
                    byte[] v3 = new byte[v9.offset];
                    this.mInitPacketStream.read(v3);
                    v6_1.update(v3);
                } catch (java.io.IOException v7_0) {
                    this.loge(new StringBuilder().append("Error while reading ").append(v9.offset).append(" bytes from the init packet stream").toString(), v7_0);
                    try {
                        this.mInitPacketStream.reset();
                        v6_1.reset();
                        v9.offset = 0;
                    } catch (java.io.IOException v8) {
                        this.loge("Error while resetting the init packet stream", v8);
                        this.mService.terminateConnection(p20, 4100);
                    }
                }
                if (v9.CRC32 != ((int) (v6_1.getValue() & 2.1219957905e-314))) {
                    this.mInitPacketStream.reset();
                    v6_1.reset();
                    v9.offset = 0;
                } else {
                    this.logi("Init packet CRC is the same");
                    if (v9.offset != this.mInitPacketSizeInBytes) {
                        this.logi(new StringBuilder().append("-> ").append(v9.offset).append(" bytes of Init packet were sent before").toString());
                        v10 = 1;
                        this.mService.sendLogBroadcast(10, "Resuming sending Init packet...");
                    } else {
                        this.logi("-> Whole Init packet was sent before");
                        v11 = 1;
                        this.mService.sendLogBroadcast(10, "Received CRC match Init packet");
                    }
                }
            }
            return;
        // }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'sendInitPacket', '(Landroid/bluetooth/BluetoothGatt; Z)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.sendInitPacket():


    private void sendInitPacket(android.bluetooth.BluetoothGatt p20, boolean p21)
    {
        java.util.zip.CRC32 v6_1 = new java.util.zip.CRC32();
        this.logi("Setting object to Command (Op Code = 6, Type = 1)");
        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectInfo v9 = this.selectObject(1);
        String v14_1 = new Object[3];
        v14_1[0] = Integer.valueOf(v9.maxSize);
        v14_1[1] = Integer.valueOf(v9.offset);
        v14_1[2] = Integer.valueOf(v9.CRC32);
        this.logi(String.format(java.util.Locale.US, "Command object info received (Max size = %d, Offset = %d, CRC = %08X)", v14_1));
        no.nordicsemi.android.dfu.DfuBaseService v12_63 = this.mService;
        android.bluetooth.BluetoothGatt v0_52 = new Object[3];
        Integer v16_15 = v0_52;
        v16_15[0] = Integer.valueOf(v9.maxSize);
        v16_15[1] = Integer.valueOf(v9.offset);
        v16_15[2] = Integer.valueOf(v9.CRC32);
        v12_63.sendLogBroadcast(10, String.format(java.util.Locale.US, "Command object info received (Max size = %d, Offset = %d, CRC = %08X)", v16_15));
        // Both branches of the condition point to the same code.
        // if (this.mInitPacketSizeInBytes <= v9.maxSize) {
            int v11 = 0;
            int v10 = 0;
            if ((!p21) || ((v9.offset <= 0) || (v9.offset > this.mInitPacketSizeInBytes))) {
                if (v11 == 0) {
                    this.setPacketReceiptNotifications(0);
                    this.mService.sendLogBroadcast(10, "Packet Receipt Notif disabled (Op Code = 2, Value = 0)");
                    int v2 = 1;
                    while (v2 <= 3) {
                        if (v10 == 0) {
                            this.logi(new StringBuilder().append("Creating Init packet object (Op Code = 1, Type = 1, Size = ").append(this.mInitPacketSizeInBytes).append(")").toString());
                            this.writeCreateRequest(1, this.mInitPacketSizeInBytes);
                            this.mService.sendLogBroadcast(10, "Command object created");
                        }
                        this.logi(new StringBuilder().append("Sending ").append((this.mInitPacketSizeInBytes - v9.offset)).append(" bytes of init packet...").toString());
                        this.writeInitData(this.mPacketCharacteristic, v6_1);
                        int v5_0 = ((int) (v6_1.getValue() & 2.1219957905e-314));
                        no.nordicsemi.android.dfu.DfuBaseService v12_41 = this.mService;
                        android.bluetooth.BluetoothGatt v0_25 = new Object[1];
                        Integer v16_5 = v0_25;
                        v16_5[0] = Integer.valueOf(v5_0);
                        v12_41.sendLogBroadcast(10, String.format(java.util.Locale.US, "Command object sent (CRC = %08X)", v16_5));
                        this.logi("Sending Calculate Checksum command (Op Code = 3)");
                        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectChecksum v4 = this.readChecksum();
                        no.nordicsemi.android.dfu.DfuBaseService v12_43 = this.mService;
                        android.bluetooth.BluetoothGatt v0_29 = new Object[2];
                        Integer v16_7 = v0_29;
                        v16_7[0] = Integer.valueOf(v4.offset);
                        v16_7[1] = Integer.valueOf(v4.CRC32);
                        v12_43.sendLogBroadcast(10, String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v16_7));
                        String v14_13 = new Object[2];
                        v14_13[0] = Integer.valueOf(v4.offset);
                        v14_13[1] = Integer.valueOf(v4.CRC32);
                        this.logi(String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v14_13));
                        if (v5_0 == v4.CRC32) {
                            break;
                        }
                        if (v2 >= 3) {
                            this.loge("CRC does not match!");
                            this.mService.sendLogBroadcast(20, "CRC does not match!");
                            this.mService.terminateConnection(p20, 4109);
                            return;
                        } else {
                            v2++;
                            this.logi(new StringBuilder().append("CRC does not match! Retrying...(").append(v2).append("/").append(3).append(")").toString());
                            this.mService.sendLogBroadcast(15, new StringBuilder().append("CRC does not match! Retrying...(").append(v2).append("/").append(3).append(")").toString());
                            v10 = 0;
                            try {
                                v9.offset = 0;
                                v9.CRC32 = 0;
                                this.mInitPacketStream.reset();
                                v6_1.reset();
                            } catch (java.io.IOException v7_1) {
                                this.loge("Error while resetting the init packet stream", v7_1);
                                this.mService.terminateConnection(p20, 4100);
                                return;
                            }
                        }
                    }
                }
                this.logi("Executing init packet (Op Code = 4)");
                this.writeExecute().mService.sendLogBroadcast(10, "Command object executed");
            } else {
                try {
                    byte[] v3 = new byte[v9.offset];
                    this.mInitPacketStream.read(v3);
                    v6_1.update(v3);
                } catch (java.io.IOException v7_0) {
                    this.loge(new StringBuilder().append("Error while reading ").append(v9.offset).append(" bytes from the init packet stream").toString(), v7_0);
                    try {
                        this.mInitPacketStream.reset();
                        v6_1.reset();
                        v9.offset = 0;
                    } catch (java.io.IOException v8) {
                        this.loge("Error while resetting the init packet stream", v8);
                        this.mService.terminateConnection(p20, 4100);
                    }
                }
                if (v9.CRC32 != ((int) (v6_1.getValue() & 2.1219957905e-314))) {
                    this.mInitPacketStream.reset();
                    v6_1.reset();
                    v9.offset = 0;
                } else {
                    this.logi("Init packet CRC is the same");
                    if (v9.offset != this.mInitPacketSizeInBytes) {
                        this.logi(new StringBuilder().append("-> ").append(v9.offset).append(" bytes of Init packet were sent before").toString());
                        v10 = 1;
                        this.mService.sendLogBroadcast(10, "Resuming sending Init packet...");
                    } else {
                        this.logi("-> Whole Init packet was sent before");
                        v11 = 1;
                        this.mService.sendLogBroadcast(10, "Received CRC match Init packet");
                    }
                }
            }
            return;
        // }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'sendFirmware', '(Landroid/bluetooth/BluetoothGatt;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.sendFirmware():


    private void sendFirmware(android.bluetooth.BluetoothGatt p30)
    {
        int v18_0 = this.mPacketsBeforeNotification;
        if (v18_0 > 0) {
            this.setPacketReceiptNotifications(v18_0);
            this.mService.sendLogBroadcast(10, new StringBuilder().append("Packet Receipt Notif Req (Op Code = 2) sent (Value = ").append(v18_0).append(")").toString());
        }
        this.logi("Setting object to Data (Op Code = 6, Type = 2)");
        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectInfo v15 = this.selectObject(2);
        no.nordicsemi.android.dfu.DfuBaseService v0_91 = new Object[3];
        String v24_28 = v0_91;
        v24_28[0] = Integer.valueOf(v15.maxSize);
        v24_28[1] = Integer.valueOf(v15.offset);
        v24_28[2] = Integer.valueOf(v15.CRC32);
        this.logi(String.format(java.util.Locale.US, "Data object info received (Max size = %d, Offset = %d, CRC = %08X)", v24_28));
        no.nordicsemi.android.dfu.DfuBaseService v22_105 = this.mService;
        no.nordicsemi.android.dfu.DfuBaseService v0_179 = new Object[3];
        int v26_18 = v0_179;
        v26_18[0] = Integer.valueOf(v15.maxSize);
        v26_18[1] = Integer.valueOf(v15.offset);
        v26_18[2] = Integer.valueOf(v15.CRC32);
        v22_105.sendLogBroadcast(10, String.format(java.util.Locale.US, "Data object info received (Max size = %d, Offset = %d, CRC = %08X)", v26_18));
        this.mProgressInfo.setMaxObjectSizeInBytes(v15.maxSize);
        int v10 = (((this.mImageSizeInBytes + v15.maxSize) - 1) / v15.maxSize);
        int v13 = 0;
        int v19 = 0;
        if (v15.offset <= 0) {
            this.mProgressInfo.setBytesSent(0);
            long v20 = android.os.SystemClock.elapsedRealtime();
            if (v15.offset >= this.mImageSizeInBytes) {
                this.logi("Executing data object (Op Code = 4)");
                this.writeExecute(1);
                this.mService.sendLogBroadcast(10, "Data object executed");
            } else {
                int v4 = 1;
                while (this.mProgressInfo.getAvailableObjectSizeIsBytes() > 0) {
                    if (v19 != 0) {
                        this.mService.sendLogBroadcast(10, "Resuming uploading firmware...");
                        v19 = 0;
                    } else {
                        int v5 = this.mProgressInfo.getAvailableObjectSizeIsBytes();
                        this.logi(new StringBuilder().append("Creating Data object (Op Code = 1, Type = 2, Size = ").append(v5).append(") (").append((v13 + 1)).append("/").append(v10).append(")").toString());
                        this.writeCreateRequest(2, v5);
                        this.mService.sendLogBroadcast(10, new StringBuilder().append("Data object (").append((v13 + 1)).append("/").append(v10).append(") created").toString());
                        this.mService.sendLogBroadcast(10, "Uploading firmware...");
                    }
                    try {
                        this.logi("Uploading firmware...");
                        this.uploadFirmwareImage(this.mPacketCharacteristic);
                        this.logi("Sending Calculate Checksum command (Op Code = 3)");
                        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectChecksum v9 = this.readChecksum();
                        no.nordicsemi.android.dfu.DfuBaseService v0_118 = new Object[2];
                        String v24_46 = v0_118;
                        v24_46[0] = Integer.valueOf(v9.offset);
                        v24_46[1] = Integer.valueOf(v9.CRC32);
                        this.logi(String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v24_46));
                        no.nordicsemi.android.dfu.DfuBaseService v22_88 = this.mService;
                        no.nordicsemi.android.dfu.DfuBaseService v0_126 = new Object[2];
                        int v26_10 = v0_126;
                        v26_10[0] = Integer.valueOf(v9.offset);
                        v26_10[1] = Integer.valueOf(v9.CRC32);
                        v22_88.sendLogBroadcast(10, String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v26_10));
                        int v6 = (this.mProgressInfo.getBytesSent() - v9.offset);
                    } catch (java.io.IOException v14_1) {
                        this.loge("Disconnected while sending data");
                        throw v14_1;
                    }
                    if (v6 > 0) {
                        this.logw(new StringBuilder().append(v6).append(" bytes were lost!").toString());
                        this.mService.sendLogBroadcast(15, new StringBuilder().append(v6).append(" bytes were lost").toString());
                        try {
                            this.mFirmwareStream.reset();
                            no.nordicsemi.android.dfu.DfuBaseService v0_145 = new byte[(v15.maxSize - v6)];
                            this.mFirmwareStream.read(v0_145);
                            this.mProgressInfo.setBytesSent(v9.offset);
                            this.mPacketsBeforeNotification = 1;
                            this.setPacketReceiptNotifications(1);
                            this.mService.sendLogBroadcast(10, new StringBuilder().append("Packet Receipt Notif Req (Op Code = 2) sent (Value = ").append(1).append(")").toString());
                        } catch (java.io.IOException v14_2) {
                            this.loge("Error while reading firmware stream", v14_2);
                            this.mService.terminateConnection(p30, 4100);
                            return;
                        }
                    }
                    int v11_1 = ((int) (((no.nordicsemi.android.dfu.internal.ArchiveInputStream) this.mFirmwareStream).getCrc32() & 2.1219957905e-314));
                    if (v11_1 != v9.CRC32) {
                        no.nordicsemi.android.dfu.DfuBaseService v0_166 = new Object[2];
                        String v24_63 = v0_166;
                        v24_63[0] = Integer.valueOf(v11_1);
                        v24_63[1] = Integer.valueOf(v9.CRC32);
                        String v12_0 = String.format(java.util.Locale.US, "CRC does not match! Expected %08X but found %08X.", v24_63);
                        if (v4 >= 3) {
                            this.loge(v12_0);
                            this.mService.sendLogBroadcast(20, v12_0);
                            this.mService.terminateConnection(p30, 4109);
                        } else {
                            v4++;
                            no.nordicsemi.android.dfu.DfuBaseService v22_117 = new StringBuilder().append(v12_0);
                            no.nordicsemi.android.dfu.DfuBaseService v0_181 = new Object[2];
                            Object[] v25_28 = v0_181;
                            v25_28[0] = Integer.valueOf(v4);
                            v25_28[1] = Integer.valueOf(3);
                            String v12_1 = v22_117.append(String.format(java.util.Locale.US, " Retrying...(%d/%d)", v25_28)).toString();
                            this.logi(v12_1);
                            this.mService.sendLogBroadcast(15, v12_1);
                            try {
                                this.mFirmwareStream.reset();
                                this.mProgressInfo.setBytesSent(((no.nordicsemi.android.dfu.internal.ArchiveInputStream) this.mFirmwareStream).getBytesRead());
                            } catch (java.io.IOException v14_3) {
                                this.loge("Error while resetting the firmware stream", v14_3);
                                this.mService.terminateConnection(p30, 4100);
                            }
                        }
                    } else {
                        if (v6 <= 0) {
                            this.logi("Executing data object (Op Code = 4)");
                            this.writeExecute(this.mProgressInfo.isComplete());
                            this.mService.sendLogBroadcast(10, "Data object executed");
                            v13++;
                            v4 = 1;
                            this.mFirmwareStream.mark(0);
                        } else {
                            v19 = 1;
                        }
                    }
                    return;
                }
            }
            long v16 = android.os.SystemClock.elapsedRealtime();
            this.logi(new StringBuilder().append("Transfer of ").append((this.mProgressInfo.getBytesSent() - v15.offset)).append(" bytes has taken ").append((v16 - v20)).append(" ms").toString());
            this.mService.sendLogBroadcast(10, new StringBuilder().append("Upload completed in ").append((v16 - v20)).append(" ms").toString());
        } else {
            try {
                v13 = (v15.offset / v15.maxSize);
                int v7 = (v15.maxSize * v13);
                int v8 = (v15.offset - v7);
            } catch (java.io.IOException v14_0) {
                this.loge("Error while reading firmware stream", v14_0);
                this.mService.terminateConnection(p30, 4100);
            }
            if (v8 == 0) {
                v7 -= v15.maxSize;
                v8 = v15.maxSize;
            }
            if (v7 > 0) {
                no.nordicsemi.android.dfu.DfuBaseService v0_16 = new byte[v7];
                this.mFirmwareStream.read(v0_16);
                this.mFirmwareStream.mark(v15.maxSize);
            }
            no.nordicsemi.android.dfu.DfuBaseService v0_22 = new byte[v8];
            this.mFirmwareStream.read(v0_22);
            if (((int) (((no.nordicsemi.android.dfu.internal.ArchiveInputStream) this.mFirmwareStream).getCrc32() & 2.1219957905e-314)) != v15.CRC32) {
                this.logi(new StringBuilder().append(v15.offset).append(" bytes sent before, CRC does not match").toString());
                this.mService.sendLogBroadcast(15, new StringBuilder().append(v15.offset).append(" bytes sent before, CRC does not match").toString());
                this.mProgressInfo.setBytesSent(v7);
                this.mProgressInfo.setBytesReceived(v7);
                v15.offset = (v15.offset - v8);
                v15.CRC32 = 0;
                this.mFirmwareStream.reset();
                this.logi(new StringBuilder().append("Resuming from byte ").append(v15.offset).append("...").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Resuming from byte ").append(v15.offset).append("...").toString());
            } else {
                this.logi(new StringBuilder().append(v15.offset).append(" bytes of data sent before, CRC match").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append(v15.offset).append(" bytes of data sent before, CRC match").toString());
                this.mProgressInfo.setBytesSent(v15.offset);
                this.mProgressInfo.setBytesReceived(v15.offset);
                if ((v8 != v15.maxSize) || (v15.offset >= this.mImageSizeInBytes)) {
                    v19 = 1;
                } else {
                    this.logi("Executing data object (Op Code = 4)");
                    this = this.writeExecute();
                    this.mService.sendLogBroadcast(10, "Data object executed");
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'sendFirmware', '(Landroid/bluetooth/BluetoothGatt;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.sendFirmware():


    private void sendFirmware(android.bluetooth.BluetoothGatt p30)
    {
        int v18_0 = this.mPacketsBeforeNotification;
        if (v18_0 > 0) {
            this.setPacketReceiptNotifications(v18_0);
            this.mService.sendLogBroadcast(10, new StringBuilder().append("Packet Receipt Notif Req (Op Code = 2) sent (Value = ").append(v18_0).append(")").toString());
        }
        this.logi("Setting object to Data (Op Code = 6, Type = 2)");
        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectInfo v15 = this.selectObject(2);
        no.nordicsemi.android.dfu.DfuBaseService v0_91 = new Object[3];
        String v24_28 = v0_91;
        v24_28[0] = Integer.valueOf(v15.maxSize);
        v24_28[1] = Integer.valueOf(v15.offset);
        v24_28[2] = Integer.valueOf(v15.CRC32);
        this.logi(String.format(java.util.Locale.US, "Data object info received (Max size = %d, Offset = %d, CRC = %08X)", v24_28));
        no.nordicsemi.android.dfu.DfuBaseService v22_105 = this.mService;
        no.nordicsemi.android.dfu.DfuBaseService v0_179 = new Object[3];
        int v26_18 = v0_179;
        v26_18[0] = Integer.valueOf(v15.maxSize);
        v26_18[1] = Integer.valueOf(v15.offset);
        v26_18[2] = Integer.valueOf(v15.CRC32);
        v22_105.sendLogBroadcast(10, String.format(java.util.Locale.US, "Data object info received (Max size = %d, Offset = %d, CRC = %08X)", v26_18));
        this.mProgressInfo.setMaxObjectSizeInBytes(v15.maxSize);
        int v10 = (((this.mImageSizeInBytes + v15.maxSize) - 1) / v15.maxSize);
        int v13 = 0;
        int v19 = 0;
        if (v15.offset <= 0) {
            this.mProgressInfo.setBytesSent(0);
            long v20 = android.os.SystemClock.elapsedRealtime();
            if (v15.offset >= this.mImageSizeInBytes) {
                this.logi("Executing data object (Op Code = 4)");
                this.writeExecute(1);
                this.mService.sendLogBroadcast(10, "Data object executed");
            } else {
                int v4 = 1;
                while (this.mProgressInfo.getAvailableObjectSizeIsBytes() > 0) {
                    if (v19 != 0) {
                        this.mService.sendLogBroadcast(10, "Resuming uploading firmware...");
                        v19 = 0;
                    } else {
                        int v5 = this.mProgressInfo.getAvailableObjectSizeIsBytes();
                        this.logi(new StringBuilder().append("Creating Data object (Op Code = 1, Type = 2, Size = ").append(v5).append(") (").append((v13 + 1)).append("/").append(v10).append(")").toString());
                        this.writeCreateRequest(2, v5);
                        this.mService.sendLogBroadcast(10, new StringBuilder().append("Data object (").append((v13 + 1)).append("/").append(v10).append(") created").toString());
                        this.mService.sendLogBroadcast(10, "Uploading firmware...");
                    }
                    try {
                        this.logi("Uploading firmware...");
                        this.uploadFirmwareImage(this.mPacketCharacteristic);
                        this.logi("Sending Calculate Checksum command (Op Code = 3)");
                        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectChecksum v9 = this.readChecksum();
                        no.nordicsemi.android.dfu.DfuBaseService v0_118 = new Object[2];
                        String v24_46 = v0_118;
                        v24_46[0] = Integer.valueOf(v9.offset);
                        v24_46[1] = Integer.valueOf(v9.CRC32);
                        this.logi(String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v24_46));
                        no.nordicsemi.android.dfu.DfuBaseService v22_88 = this.mService;
                        no.nordicsemi.android.dfu.DfuBaseService v0_126 = new Object[2];
                        int v26_10 = v0_126;
                        v26_10[0] = Integer.valueOf(v9.offset);
                        v26_10[1] = Integer.valueOf(v9.CRC32);
                        v22_88.sendLogBroadcast(10, String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v26_10));
                        int v6 = (this.mProgressInfo.getBytesSent() - v9.offset);
                    } catch (java.io.IOException v14_1) {
                        this.loge("Disconnected while sending data");
                        throw v14_1;
                    }
                    if (v6 > 0) {
                        this.logw(new StringBuilder().append(v6).append(" bytes were lost!").toString());
                        this.mService.sendLogBroadcast(15, new StringBuilder().append(v6).append(" bytes were lost").toString());
                        try {
                            this.mFirmwareStream.reset();
                            no.nordicsemi.android.dfu.DfuBaseService v0_145 = new byte[(v15.maxSize - v6)];
                            this.mFirmwareStream.read(v0_145);
                            this.mProgressInfo.setBytesSent(v9.offset);
                            this.mPacketsBeforeNotification = 1;
                            this.setPacketReceiptNotifications(1);
                            this.mService.sendLogBroadcast(10, new StringBuilder().append("Packet Receipt Notif Req (Op Code = 2) sent (Value = ").append(1).append(")").toString());
                        } catch (java.io.IOException v14_2) {
                            this.loge("Error while reading firmware stream", v14_2);
                            this.mService.terminateConnection(p30, 4100);
                            return;
                        }
                    }
                    int v11_1 = ((int) (((no.nordicsemi.android.dfu.internal.ArchiveInputStream) this.mFirmwareStream).getCrc32() & 2.1219957905e-314));
                    if (v11_1 != v9.CRC32) {
                        no.nordicsemi.android.dfu.DfuBaseService v0_166 = new Object[2];
                        String v24_63 = v0_166;
                        v24_63[0] = Integer.valueOf(v11_1);
                        v24_63[1] = Integer.valueOf(v9.CRC32);
                        String v12_0 = String.format(java.util.Locale.US, "CRC does not match! Expected %08X but found %08X.", v24_63);
                        if (v4 >= 3) {
                            this.loge(v12_0);
                            this.mService.sendLogBroadcast(20, v12_0);
                            this.mService.terminateConnection(p30, 4109);
                        } else {
                            v4++;
                            no.nordicsemi.android.dfu.DfuBaseService v22_117 = new StringBuilder().append(v12_0);
                            no.nordicsemi.android.dfu.DfuBaseService v0_181 = new Object[2];
                            Object[] v25_28 = v0_181;
                            v25_28[0] = Integer.valueOf(v4);
                            v25_28[1] = Integer.valueOf(3);
                            String v12_1 = v22_117.append(String.format(java.util.Locale.US, " Retrying...(%d/%d)", v25_28)).toString();
                            this.logi(v12_1);
                            this.mService.sendLogBroadcast(15, v12_1);
                            try {
                                this.mFirmwareStream.reset();
                                this.mProgressInfo.setBytesSent(((no.nordicsemi.android.dfu.internal.ArchiveInputStream) this.mFirmwareStream).getBytesRead());
                            } catch (java.io.IOException v14_3) {
                                this.loge("Error while resetting the firmware stream", v14_3);
                                this.mService.terminateConnection(p30, 4100);
                            }
                        }
                    } else {
                        if (v6 <= 0) {
                            this.logi("Executing data object (Op Code = 4)");
                            this.writeExecute(this.mProgressInfo.isComplete());
                            this.mService.sendLogBroadcast(10, "Data object executed");
                            v13++;
                            v4 = 1;
                            this.mFirmwareStream.mark(0);
                        } else {
                            v19 = 1;
                        }
                    }
                    return;
                }
            }
            long v16 = android.os.SystemClock.elapsedRealtime();
            this.logi(new StringBuilder().append("Transfer of ").append((this.mProgressInfo.getBytesSent() - v15.offset)).append(" bytes has taken ").append((v16 - v20)).append(" ms").toString());
            this.mService.sendLogBroadcast(10, new StringBuilder().append("Upload completed in ").append((v16 - v20)).append(" ms").toString());
        } else {
            try {
                v13 = (v15.offset / v15.maxSize);
                int v7 = (v15.maxSize * v13);
                int v8 = (v15.offset - v7);
            } catch (java.io.IOException v14_0) {
                this.loge("Error while reading firmware stream", v14_0);
                this.mService.terminateConnection(p30, 4100);
            }
            if (v8 == 0) {
                v7 -= v15.maxSize;
                v8 = v15.maxSize;
            }
            if (v7 > 0) {
                no.nordicsemi.android.dfu.DfuBaseService v0_16 = new byte[v7];
                this.mFirmwareStream.read(v0_16);
                this.mFirmwareStream.mark(v15.maxSize);
            }
            no.nordicsemi.android.dfu.DfuBaseService v0_22 = new byte[v8];
            this.mFirmwareStream.read(v0_22);
            if (((int) (((no.nordicsemi.android.dfu.internal.ArchiveInputStream) this.mFirmwareStream).getCrc32() & 2.1219957905e-314)) != v15.CRC32) {
                this.logi(new StringBuilder().append(v15.offset).append(" bytes sent before, CRC does not match").toString());
                this.mService.sendLogBroadcast(15, new StringBuilder().append(v15.offset).append(" bytes sent before, CRC does not match").toString());
                this.mProgressInfo.setBytesSent(v7);
                this.mProgressInfo.setBytesReceived(v7);
                v15.offset = (v15.offset - v8);
                v15.CRC32 = 0;
                this.mFirmwareStream.reset();
                this.logi(new StringBuilder().append("Resuming from byte ").append(v15.offset).append("...").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Resuming from byte ").append(v15.offset).append("...").toString());
            } else {
                this.logi(new StringBuilder().append(v15.offset).append(" bytes of data sent before, CRC match").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append(v15.offset).append(" bytes of data sent before, CRC match").toString());
                this.mProgressInfo.setBytesSent(v15.offset);
                this.mProgressInfo.setBytesReceived(v15.offset);
                if ((v8 != v15.maxSize) || (v15.offset >= this.mImageSizeInBytes)) {
                    v19 = 1;
                } else {
                    this.logi("Executing data object (Op Code = 4)");
                    this = this.writeExecute();
                    this.mService.sendLogBroadcast(10, "Data object executed");
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'sendFirmware', '(Landroid/bluetooth/BluetoothGatt;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.sendFirmware():


    private void sendFirmware(android.bluetooth.BluetoothGatt p30)
    {
        int v18_0 = this.mPacketsBeforeNotification;
        if (v18_0 > 0) {
            this.setPacketReceiptNotifications(v18_0);
            this.mService.sendLogBroadcast(10, new StringBuilder().append("Packet Receipt Notif Req (Op Code = 2) sent (Value = ").append(v18_0).append(")").toString());
        }
        this.logi("Setting object to Data (Op Code = 6, Type = 2)");
        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectInfo v15 = this.selectObject(2);
        no.nordicsemi.android.dfu.DfuBaseService v0_91 = new Object[3];
        String v24_28 = v0_91;
        v24_28[0] = Integer.valueOf(v15.maxSize);
        v24_28[1] = Integer.valueOf(v15.offset);
        v24_28[2] = Integer.valueOf(v15.CRC32);
        this.logi(String.format(java.util.Locale.US, "Data object info received (Max size = %d, Offset = %d, CRC = %08X)", v24_28));
        no.nordicsemi.android.dfu.DfuBaseService v22_105 = this.mService;
        no.nordicsemi.android.dfu.DfuBaseService v0_179 = new Object[3];
        int v26_18 = v0_179;
        v26_18[0] = Integer.valueOf(v15.maxSize);
        v26_18[1] = Integer.valueOf(v15.offset);
        v26_18[2] = Integer.valueOf(v15.CRC32);
        v22_105.sendLogBroadcast(10, String.format(java.util.Locale.US, "Data object info received (Max size = %d, Offset = %d, CRC = %08X)", v26_18));
        this.mProgressInfo.setMaxObjectSizeInBytes(v15.maxSize);
        int v10 = (((this.mImageSizeInBytes + v15.maxSize) - 1) / v15.maxSize);
        int v13 = 0;
        int v19 = 0;
        if (v15.offset <= 0) {
            this.mProgressInfo.setBytesSent(0);
            long v20 = android.os.SystemClock.elapsedRealtime();
            if (v15.offset >= this.mImageSizeInBytes) {
                this.logi("Executing data object (Op Code = 4)");
                this.writeExecute(1);
                this.mService.sendLogBroadcast(10, "Data object executed");
            } else {
                int v4 = 1;
                while (this.mProgressInfo.getAvailableObjectSizeIsBytes() > 0) {
                    if (v19 != 0) {
                        this.mService.sendLogBroadcast(10, "Resuming uploading firmware...");
                        v19 = 0;
                    } else {
                        int v5 = this.mProgressInfo.getAvailableObjectSizeIsBytes();
                        this.logi(new StringBuilder().append("Creating Data object (Op Code = 1, Type = 2, Size = ").append(v5).append(") (").append((v13 + 1)).append("/").append(v10).append(")").toString());
                        this.writeCreateRequest(2, v5);
                        this.mService.sendLogBroadcast(10, new StringBuilder().append("Data object (").append((v13 + 1)).append("/").append(v10).append(") created").toString());
                        this.mService.sendLogBroadcast(10, "Uploading firmware...");
                    }
                    try {
                        this.logi("Uploading firmware...");
                        this.uploadFirmwareImage(this.mPacketCharacteristic);
                        this.logi("Sending Calculate Checksum command (Op Code = 3)");
                        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectChecksum v9 = this.readChecksum();
                        no.nordicsemi.android.dfu.DfuBaseService v0_118 = new Object[2];
                        String v24_46 = v0_118;
                        v24_46[0] = Integer.valueOf(v9.offset);
                        v24_46[1] = Integer.valueOf(v9.CRC32);
                        this.logi(String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v24_46));
                        no.nordicsemi.android.dfu.DfuBaseService v22_88 = this.mService;
                        no.nordicsemi.android.dfu.DfuBaseService v0_126 = new Object[2];
                        int v26_10 = v0_126;
                        v26_10[0] = Integer.valueOf(v9.offset);
                        v26_10[1] = Integer.valueOf(v9.CRC32);
                        v22_88.sendLogBroadcast(10, String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v26_10));
                        int v6 = (this.mProgressInfo.getBytesSent() - v9.offset);
                    } catch (java.io.IOException v14_1) {
                        this.loge("Disconnected while sending data");
                        throw v14_1;
                    }
                    if (v6 > 0) {
                        this.logw(new StringBuilder().append(v6).append(" bytes were lost!").toString());
                        this.mService.sendLogBroadcast(15, new StringBuilder().append(v6).append(" bytes were lost").toString());
                        try {
                            this.mFirmwareStream.reset();
                            no.nordicsemi.android.dfu.DfuBaseService v0_145 = new byte[(v15.maxSize - v6)];
                            this.mFirmwareStream.read(v0_145);
                            this.mProgressInfo.setBytesSent(v9.offset);
                            this.mPacketsBeforeNotification = 1;
                            this.setPacketReceiptNotifications(1);
                            this.mService.sendLogBroadcast(10, new StringBuilder().append("Packet Receipt Notif Req (Op Code = 2) sent (Value = ").append(1).append(")").toString());
                        } catch (java.io.IOException v14_2) {
                            this.loge("Error while reading firmware stream", v14_2);
                            this.mService.terminateConnection(p30, 4100);
                            return;
                        }
                    }
                    int v11_1 = ((int) (((no.nordicsemi.android.dfu.internal.ArchiveInputStream) this.mFirmwareStream).getCrc32() & 2.1219957905e-314));
                    if (v11_1 != v9.CRC32) {
                        no.nordicsemi.android.dfu.DfuBaseService v0_166 = new Object[2];
                        String v24_63 = v0_166;
                        v24_63[0] = Integer.valueOf(v11_1);
                        v24_63[1] = Integer.valueOf(v9.CRC32);
                        String v12_0 = String.format(java.util.Locale.US, "CRC does not match! Expected %08X but found %08X.", v24_63);
                        if (v4 >= 3) {
                            this.loge(v12_0);
                            this.mService.sendLogBroadcast(20, v12_0);
                            this.mService.terminateConnection(p30, 4109);
                        } else {
                            v4++;
                            no.nordicsemi.android.dfu.DfuBaseService v22_117 = new StringBuilder().append(v12_0);
                            no.nordicsemi.android.dfu.DfuBaseService v0_181 = new Object[2];
                            Object[] v25_28 = v0_181;
                            v25_28[0] = Integer.valueOf(v4);
                            v25_28[1] = Integer.valueOf(3);
                            String v12_1 = v22_117.append(String.format(java.util.Locale.US, " Retrying...(%d/%d)", v25_28)).toString();
                            this.logi(v12_1);
                            this.mService.sendLogBroadcast(15, v12_1);
                            try {
                                this.mFirmwareStream.reset();
                                this.mProgressInfo.setBytesSent(((no.nordicsemi.android.dfu.internal.ArchiveInputStream) this.mFirmwareStream).getBytesRead());
                            } catch (java.io.IOException v14_3) {
                                this.loge("Error while resetting the firmware stream", v14_3);
                                this.mService.terminateConnection(p30, 4100);
                            }
                        }
                    } else {
                        if (v6 <= 0) {
                            this.logi("Executing data object (Op Code = 4)");
                            this.writeExecute(this.mProgressInfo.isComplete());
                            this.mService.sendLogBroadcast(10, "Data object executed");
                            v13++;
                            v4 = 1;
                            this.mFirmwareStream.mark(0);
                        } else {
                            v19 = 1;
                        }
                    }
                    return;
                }
            }
            long v16 = android.os.SystemClock.elapsedRealtime();
            this.logi(new StringBuilder().append("Transfer of ").append((this.mProgressInfo.getBytesSent() - v15.offset)).append(" bytes has taken ").append((v16 - v20)).append(" ms").toString());
            this.mService.sendLogBroadcast(10, new StringBuilder().append("Upload completed in ").append((v16 - v20)).append(" ms").toString());
        } else {
            try {
                v13 = (v15.offset / v15.maxSize);
                int v7 = (v15.maxSize * v13);
                int v8 = (v15.offset - v7);
            } catch (java.io.IOException v14_0) {
                this.loge("Error while reading firmware stream", v14_0);
                this.mService.terminateConnection(p30, 4100);
            }
            if (v8 == 0) {
                v7 -= v15.maxSize;
                v8 = v15.maxSize;
            }
            if (v7 > 0) {
                no.nordicsemi.android.dfu.DfuBaseService v0_16 = new byte[v7];
                this.mFirmwareStream.read(v0_16);
                this.mFirmwareStream.mark(v15.maxSize);
            }
            no.nordicsemi.android.dfu.DfuBaseService v0_22 = new byte[v8];
            this.mFirmwareStream.read(v0_22);
            if (((int) (((no.nordicsemi.android.dfu.internal.ArchiveInputStream) this.mFirmwareStream).getCrc32() & 2.1219957905e-314)) != v15.CRC32) {
                this.logi(new StringBuilder().append(v15.offset).append(" bytes sent before, CRC does not match").toString());
                this.mService.sendLogBroadcast(15, new StringBuilder().append(v15.offset).append(" bytes sent before, CRC does not match").toString());
                this.mProgressInfo.setBytesSent(v7);
                this.mProgressInfo.setBytesReceived(v7);
                v15.offset = (v15.offset - v8);
                v15.CRC32 = 0;
                this.mFirmwareStream.reset();
                this.logi(new StringBuilder().append("Resuming from byte ").append(v15.offset).append("...").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Resuming from byte ").append(v15.offset).append("...").toString());
            } else {
                this.logi(new StringBuilder().append(v15.offset).append(" bytes of data sent before, CRC match").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append(v15.offset).append(" bytes of data sent before, CRC match").toString());
                this.mProgressInfo.setBytesSent(v15.offset);
                this.mProgressInfo.setBytesReceived(v15.offset);
                if ((v8 != v15.maxSize) || (v15.offset >= this.mImageSizeInBytes)) {
                    v19 = 1;
                } else {
                    this.logi("Executing data object (Op Code = 4)");
                    this = this.writeExecute();
                    this.mService.sendLogBroadcast(10, "Data object executed");
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/SecureDfuImpl;', 'sendFirmware', '(Landroid/bluetooth/BluetoothGatt;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.SecureDfuImpl.sendFirmware():


    private void sendFirmware(android.bluetooth.BluetoothGatt p30)
    {
        int v18_0 = this.mPacketsBeforeNotification;
        if (v18_0 > 0) {
            this.setPacketReceiptNotifications(v18_0);
            this.mService.sendLogBroadcast(10, new StringBuilder().append("Packet Receipt Notif Req (Op Code = 2) sent (Value = ").append(v18_0).append(")").toString());
        }
        this.logi("Setting object to Data (Op Code = 6, Type = 2)");
        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectInfo v15 = this.selectObject(2);
        no.nordicsemi.android.dfu.DfuBaseService v0_91 = new Object[3];
        String v24_28 = v0_91;
        v24_28[0] = Integer.valueOf(v15.maxSize);
        v24_28[1] = Integer.valueOf(v15.offset);
        v24_28[2] = Integer.valueOf(v15.CRC32);
        this.logi(String.format(java.util.Locale.US, "Data object info received (Max size = %d, Offset = %d, CRC = %08X)", v24_28));
        no.nordicsemi.android.dfu.DfuBaseService v22_105 = this.mService;
        no.nordicsemi.android.dfu.DfuBaseService v0_179 = new Object[3];
        int v26_18 = v0_179;
        v26_18[0] = Integer.valueOf(v15.maxSize);
        v26_18[1] = Integer.valueOf(v15.offset);
        v26_18[2] = Integer.valueOf(v15.CRC32);
        v22_105.sendLogBroadcast(10, String.format(java.util.Locale.US, "Data object info received (Max size = %d, Offset = %d, CRC = %08X)", v26_18));
        this.mProgressInfo.setMaxObjectSizeInBytes(v15.maxSize);
        int v10 = (((this.mImageSizeInBytes + v15.maxSize) - 1) / v15.maxSize);
        int v13 = 0;
        int v19 = 0;
        if (v15.offset <= 0) {
            this.mProgressInfo.setBytesSent(0);
            long v20 = android.os.SystemClock.elapsedRealtime();
            if (v15.offset >= this.mImageSizeInBytes) {
                this.logi("Executing data object (Op Code = 4)");
                this.writeExecute(1);
                this.mService.sendLogBroadcast(10, "Data object executed");
            } else {
                int v4 = 1;
                while (this.mProgressInfo.getAvailableObjectSizeIsBytes() > 0) {
                    if (v19 != 0) {
                        this.mService.sendLogBroadcast(10, "Resuming uploading firmware...");
                        v19 = 0;
                    } else {
                        int v5 = this.mProgressInfo.getAvailableObjectSizeIsBytes();
                        this.logi(new StringBuilder().append("Creating Data object (Op Code = 1, Type = 2, Size = ").append(v5).append(") (").append((v13 + 1)).append("/").append(v10).append(")").toString());
                        this.writeCreateRequest(2, v5);
                        this.mService.sendLogBroadcast(10, new StringBuilder().append("Data object (").append((v13 + 1)).append("/").append(v10).append(") created").toString());
                        this.mService.sendLogBroadcast(10, "Uploading firmware...");
                    }
                    try {
                        this.logi("Uploading firmware...");
                        this.uploadFirmwareImage(this.mPacketCharacteristic);
                        this.logi("Sending Calculate Checksum command (Op Code = 3)");
                        no.nordicsemi.android.dfu.SecureDfuImpl$ObjectChecksum v9 = this.readChecksum();
                        no.nordicsemi.android.dfu.DfuBaseService v0_118 = new Object[2];
                        String v24_46 = v0_118;
                        v24_46[0] = Integer.valueOf(v9.offset);
                        v24_46[1] = Integer.valueOf(v9.CRC32);
                        this.logi(String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v24_46));
                        no.nordicsemi.android.dfu.DfuBaseService v22_88 = this.mService;
                        no.nordicsemi.android.dfu.DfuBaseService v0_126 = new Object[2];
                        int v26_10 = v0_126;
                        v26_10[0] = Integer.valueOf(v9.offset);
                        v26_10[1] = Integer.valueOf(v9.CRC32);
                        v22_88.sendLogBroadcast(10, String.format(java.util.Locale.US, "Checksum received (Offset = %d, CRC = %08X)", v26_10));
                        int v6 = (this.mProgressInfo.getBytesSent() - v9.offset);
                    } catch (java.io.IOException v14_1) {
                        this.loge("Disconnected while sending data");
                        throw v14_1;
                    }
                    if (v6 > 0) {
                        this.logw(new StringBuilder().append(v6).append(" bytes were lost!").toString());
                        this.mService.sendLogBroadcast(15, new StringBuilder().append(v6).append(" bytes were lost").toString());
                        try {
                            this.mFirmwareStream.reset();
                            no.nordicsemi.android.dfu.DfuBaseService v0_145 = new byte[(v15.maxSize - v6)];
                            this.mFirmwareStream.read(v0_145);
                            this.mProgressInfo.setBytesSent(v9.offset);
                            this.mPacketsBeforeNotification = 1;
                            this.setPacketReceiptNotifications(1);
                            this.mService.sendLogBroadcast(10, new StringBuilder().append("Packet Receipt Notif Req (Op Code = 2) sent (Value = ").append(1).append(")").toString());
                        } catch (java.io.IOException v14_2) {
                            this.loge("Error while reading firmware stream", v14_2);
                            this.mService.terminateConnection(p30, 4100);
                            return;
                        }
                    }
                    int v11_1 = ((int) (((no.nordicsemi.android.dfu.internal.ArchiveInputStream) this.mFirmwareStream).getCrc32() & 2.1219957905e-314));
                    if (v11_1 != v9.CRC32) {
                        no.nordicsemi.android.dfu.DfuBaseService v0_166 = new Object[2];
                        String v24_63 = v0_166;
                        v24_63[0] = Integer.valueOf(v11_1);
                        v24_63[1] = Integer.valueOf(v9.CRC32);
                        String v12_0 = String.format(java.util.Locale.US, "CRC does not match! Expected %08X but found %08X.", v24_63);
                        if (v4 >= 3) {
                            this.loge(v12_0);
                            this.mService.sendLogBroadcast(20, v12_0);
                            this.mService.terminateConnection(p30, 4109);
                        } else {
                            v4++;
                            no.nordicsemi.android.dfu.DfuBaseService v22_117 = new StringBuilder().append(v12_0);
                            no.nordicsemi.android.dfu.DfuBaseService v0_181 = new Object[2];
                            Object[] v25_28 = v0_181;
                            v25_28[0] = Integer.valueOf(v4);
                            v25_28[1] = Integer.valueOf(3);
                            String v12_1 = v22_117.append(String.format(java.util.Locale.US, " Retrying...(%d/%d)", v25_28)).toString();
                            this.logi(v12_1);
                            this.mService.sendLogBroadcast(15, v12_1);
                            try {
                                this.mFirmwareStream.reset();
                                this.mProgressInfo.setBytesSent(((no.nordicsemi.android.dfu.internal.ArchiveInputStream) this.mFirmwareStream).getBytesRead());
                            } catch (java.io.IOException v14_3) {
                                this.loge("Error while resetting the firmware stream", v14_3);
                                this.mService.terminateConnection(p30, 4100);
                            }
                        }
                    } else {
                        if (v6 <= 0) {
                            this.logi("Executing data object (Op Code = 4)");
                            this.writeExecute(this.mProgressInfo.isComplete());
                            this.mService.sendLogBroadcast(10, "Data object executed");
                            v13++;
                            v4 = 1;
                            this.mFirmwareStream.mark(0);
                        } else {
                            v19 = 1;
                        }
                    }
                    return;
                }
            }
            long v16 = android.os.SystemClock.elapsedRealtime();
            this.logi(new StringBuilder().append("Transfer of ").append((this.mProgressInfo.getBytesSent() - v15.offset)).append(" bytes has taken ").append((v16 - v20)).append(" ms").toString());
            this.mService.sendLogBroadcast(10, new StringBuilder().append("Upload completed in ").append((v16 - v20)).append(" ms").toString());
        } else {
            try {
                v13 = (v15.offset / v15.maxSize);
                int v7 = (v15.maxSize * v13);
                int v8 = (v15.offset - v7);
            } catch (java.io.IOException v14_0) {
                this.loge("Error while reading firmware stream", v14_0);
                this.mService.terminateConnection(p30, 4100);
            }
            if (v8 == 0) {
                v7 -= v15.maxSize;
                v8 = v15.maxSize;
            }
            if (v7 > 0) {
                no.nordicsemi.android.dfu.DfuBaseService v0_16 = new byte[v7];
                this.mFirmwareStream.read(v0_16);
                this.mFirmwareStream.mark(v15.maxSize);
            }
            no.nordicsemi.android.dfu.DfuBaseService v0_22 = new byte[v8];
            this.mFirmwareStream.read(v0_22);
            if (((int) (((no.nordicsemi.android.dfu.internal.ArchiveInputStream) this.mFirmwareStream).getCrc32() & 2.1219957905e-314)) != v15.CRC32) {
                this.logi(new StringBuilder().append(v15.offset).append(" bytes sent before, CRC does not match").toString());
                this.mService.sendLogBroadcast(15, new StringBuilder().append(v15.offset).append(" bytes sent before, CRC does not match").toString());
                this.mProgressInfo.setBytesSent(v7);
                this.mProgressInfo.setBytesReceived(v7);
                v15.offset = (v15.offset - v8);
                v15.CRC32 = 0;
                this.mFirmwareStream.reset();
                this.logi(new StringBuilder().append("Resuming from byte ").append(v15.offset).append("...").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Resuming from byte ").append(v15.offset).append("...").toString());
            } else {
                this.logi(new StringBuilder().append(v15.offset).append(" bytes of data sent before, CRC match").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append(v15.offset).append(" bytes of data sent before, CRC match").toString());
                this.mProgressInfo.setBytesSent(v15.offset);
                this.mProgressInfo.setBytesReceived(v15.offset);
                if ((v8 != v15.maxSize) || (v15.offset >= this.mImageSizeInBytes)) {
                    v19 = 1;
                } else {
                    this.logi("Executing data object (Op Code = 4)");
                    this = this.writeExecute();
                    this.mService.sendLogBroadcast(10, "Data object executed");
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'writeImageSize', '(Landroid/bluetooth/BluetoothGattCharacteristic; I I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.writeImageSize():


    private void writeImageSize(android.bluetooth.BluetoothGattCharacteristic p7, int p8, int p9, int p10)
    {
        this.mReceivedData = 0;
        this.mError = 0;
        this.mImageSizeInProgress = 1;
        p7.setWriteType(1);
        no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_24 = new byte[12];
        p7.setValue(v1_24);
        p7.setValue(p8, 20, 0);
        p7.setValue(p9, 20, 4);
        p7.setValue(p10, 20, 8);
        this.mService.sendLogBroadcast(1, new StringBuilder().append("Writing to characteristic ").append(p7.getUuid()).toString());
        this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.writeCharacteristic(").append(p7.getUuid()).append(")").toString());
        this.mGatt.writeCharacteristic(p7);
        try {
        } catch (InterruptedException v0) {
            this.loge("Sleeping interrupted", v0);
            if (!this.mAborted) {
                if (this.mError == 0) {
                    if (this.mConnected) {
                        return;
                    } else {
                        throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to write Image Sizes: device disconnected");
                    }
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to write Image Sizes", this.mError);
                }
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        }
        while (((this.mImageSizeInProgress) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
            this.mLock.wait();
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'writeImageSize', '(Landroid/bluetooth/BluetoothGattCharacteristic; I I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.writeImageSize():


    private void writeImageSize(android.bluetooth.BluetoothGattCharacteristic p7, int p8, int p9, int p10)
    {
        this.mReceivedData = 0;
        this.mError = 0;
        this.mImageSizeInProgress = 1;
        p7.setWriteType(1);
        no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_24 = new byte[12];
        p7.setValue(v1_24);
        p7.setValue(p8, 20, 0);
        p7.setValue(p9, 20, 4);
        p7.setValue(p10, 20, 8);
        this.mService.sendLogBroadcast(1, new StringBuilder().append("Writing to characteristic ").append(p7.getUuid()).toString());
        this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.writeCharacteristic(").append(p7.getUuid()).append(")").toString());
        this.mGatt.writeCharacteristic(p7);
        try {
        } catch (InterruptedException v0) {
            this.loge("Sleeping interrupted", v0);
            if (!this.mAborted) {
                if (this.mError == 0) {
                    if (this.mConnected) {
                        return;
                    } else {
                        throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to write Image Sizes: device disconnected");
                    }
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to write Image Sizes", this.mError);
                }
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        }
        while (((this.mImageSizeInProgress) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
            this.mLock.wait();
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'gatt.writeCharacteristic(' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'writeImageSize', '(Landroid/bluetooth/BluetoothGattCharacteristic; I I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.writeCharacteristic( to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.writeImageSize():


    private void writeImageSize(android.bluetooth.BluetoothGattCharacteristic p7, int p8, int p9, int p10)
    {
        this.mReceivedData = 0;
        this.mError = 0;
        this.mImageSizeInProgress = 1;
        p7.setWriteType(1);
        no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_24 = new byte[12];
        p7.setValue(v1_24);
        p7.setValue(p8, 20, 0);
        p7.setValue(p9, 20, 4);
        p7.setValue(p10, 20, 8);
        this.mService.sendLogBroadcast(1, new StringBuilder().append("Writing to characteristic ").append(p7.getUuid()).toString());
        this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.writeCharacteristic(").append(p7.getUuid()).append(")").toString());
        this.mGatt.writeCharacteristic(p7);
        try {
        } catch (InterruptedException v0) {
            this.loge("Sleeping interrupted", v0);
            if (!this.mAborted) {
                if (this.mError == 0) {
                    if (this.mConnected) {
                        return;
                    } else {
                        throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to write Image Sizes: device disconnected");
                    }
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to write Image Sizes", this.mError);
                }
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        }
        while (((this.mImageSizeInProgress) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
            this.mLock.wait();
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'writeImageSize', '(Landroid/bluetooth/BluetoothGattCharacteristic; I I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.writeImageSize():


    private void writeImageSize(android.bluetooth.BluetoothGattCharacteristic p7, int p8, int p9, int p10)
    {
        this.mReceivedData = 0;
        this.mError = 0;
        this.mImageSizeInProgress = 1;
        p7.setWriteType(1);
        no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_24 = new byte[12];
        p7.setValue(v1_24);
        p7.setValue(p8, 20, 0);
        p7.setValue(p9, 20, 4);
        p7.setValue(p10, 20, 8);
        this.mService.sendLogBroadcast(1, new StringBuilder().append("Writing to characteristic ").append(p7.getUuid()).toString());
        this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.writeCharacteristic(").append(p7.getUuid()).append(")").toString());
        this.mGatt.writeCharacteristic(p7);
        try {
        } catch (InterruptedException v0) {
            this.loge("Sleeping interrupted", v0);
            if (!this.mAborted) {
                if (this.mError == 0) {
                    if (this.mConnected) {
                        return;
                    } else {
                        throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to write Image Sizes: device disconnected");
                    }
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to write Image Sizes", this.mError);
                }
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        }
        while (((this.mImageSizeInProgress) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
            this.mLock.wait();
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'writeImageSize', '(Landroid/bluetooth/BluetoothGattCharacteristic; I I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.writeImageSize():


    private void writeImageSize(android.bluetooth.BluetoothGattCharacteristic p7, int p8, int p9, int p10)
    {
        this.mReceivedData = 0;
        this.mError = 0;
        this.mImageSizeInProgress = 1;
        p7.setWriteType(1);
        no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_24 = new byte[12];
        p7.setValue(v1_24);
        p7.setValue(p8, 20, 0);
        p7.setValue(p9, 20, 4);
        p7.setValue(p10, 20, 8);
        this.mService.sendLogBroadcast(1, new StringBuilder().append("Writing to characteristic ").append(p7.getUuid()).toString());
        this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.writeCharacteristic(").append(p7.getUuid()).append(")").toString());
        this.mGatt.writeCharacteristic(p7);
        try {
        } catch (InterruptedException v0) {
            this.loge("Sleeping interrupted", v0);
            if (!this.mAborted) {
                if (this.mError == 0) {
                    if (this.mConnected) {
                        return;
                    } else {
                        throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to write Image Sizes: device disconnected");
                    }
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to write Image Sizes", this.mError);
                }
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        }
        while (((this.mImageSizeInProgress) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
            this.mLock.wait();
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'writeImageSize', '(Landroid/bluetooth/BluetoothGattCharacteristic; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.writeImageSize():


    private void writeImageSize(android.bluetooth.BluetoothGattCharacteristic p7, int p8)
    {
        this.mReceivedData = 0;
        this.mError = 0;
        this.mImageSizeInProgress = 1;
        p7.setWriteType(1);
        no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_23 = new byte[4];
        p7.setValue(v1_23);
        p7.setValue(p8, 20, 0);
        this.mService.sendLogBroadcast(1, new StringBuilder().append("Writing to characteristic ").append(p7.getUuid()).toString());
        this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.writeCharacteristic(").append(p7.getUuid()).append(")").toString());
        this.mGatt.writeCharacteristic(p7);
        try {
        } catch (InterruptedException v0) {
            this.loge("Sleeping interrupted", v0);
            if (!this.mAborted) {
                if (this.mError == 0) {
                    if (this.mConnected) {
                        return;
                    } else {
                        throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to write Image Size: device disconnected");
                    }
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to write Image Size", this.mError);
                }
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        }
        while (((this.mImageSizeInProgress) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
            this.mLock.wait();
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'gatt.writeCharacteristic(' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'writeImageSize', '(Landroid/bluetooth/BluetoothGattCharacteristic; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.writeCharacteristic( to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.writeImageSize():


    private void writeImageSize(android.bluetooth.BluetoothGattCharacteristic p7, int p8)
    {
        this.mReceivedData = 0;
        this.mError = 0;
        this.mImageSizeInProgress = 1;
        p7.setWriteType(1);
        no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_23 = new byte[4];
        p7.setValue(v1_23);
        p7.setValue(p8, 20, 0);
        this.mService.sendLogBroadcast(1, new StringBuilder().append("Writing to characteristic ").append(p7.getUuid()).toString());
        this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.writeCharacteristic(").append(p7.getUuid()).append(")").toString());
        this.mGatt.writeCharacteristic(p7);
        try {
        } catch (InterruptedException v0) {
            this.loge("Sleeping interrupted", v0);
            if (!this.mAborted) {
                if (this.mError == 0) {
                    if (this.mConnected) {
                        return;
                    } else {
                        throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to write Image Size: device disconnected");
                    }
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to write Image Size", this.mError);
                }
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        }
        while (((this.mImageSizeInProgress) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
            this.mLock.wait();
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'writeImageSize', '(Landroid/bluetooth/BluetoothGattCharacteristic; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.writeImageSize():


    private void writeImageSize(android.bluetooth.BluetoothGattCharacteristic p7, int p8)
    {
        this.mReceivedData = 0;
        this.mError = 0;
        this.mImageSizeInProgress = 1;
        p7.setWriteType(1);
        no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_23 = new byte[4];
        p7.setValue(v1_23);
        p7.setValue(p8, 20, 0);
        this.mService.sendLogBroadcast(1, new StringBuilder().append("Writing to characteristic ").append(p7.getUuid()).toString());
        this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.writeCharacteristic(").append(p7.getUuid()).append(")").toString());
        this.mGatt.writeCharacteristic(p7);
        try {
        } catch (InterruptedException v0) {
            this.loge("Sleeping interrupted", v0);
            if (!this.mAborted) {
                if (this.mError == 0) {
                    if (this.mConnected) {
                        return;
                    } else {
                        throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to write Image Size: device disconnected");
                    }
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to write Image Size", this.mError);
                }
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        }
        while (((this.mImageSizeInProgress) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
            this.mLock.wait();
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'writeImageSize', '(Landroid/bluetooth/BluetoothGattCharacteristic; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.writeImageSize():


    private void writeImageSize(android.bluetooth.BluetoothGattCharacteristic p7, int p8)
    {
        this.mReceivedData = 0;
        this.mError = 0;
        this.mImageSizeInProgress = 1;
        p7.setWriteType(1);
        no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_23 = new byte[4];
        p7.setValue(v1_23);
        p7.setValue(p8, 20, 0);
        this.mService.sendLogBroadcast(1, new StringBuilder().append("Writing to characteristic ").append(p7.getUuid()).toString());
        this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.writeCharacteristic(").append(p7.getUuid()).append(")").toString());
        this.mGatt.writeCharacteristic(p7);
        try {
        } catch (InterruptedException v0) {
            this.loge("Sleeping interrupted", v0);
            if (!this.mAborted) {
                if (this.mError == 0) {
                    if (this.mConnected) {
                        return;
                    } else {
                        throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to write Image Size: device disconnected");
                    }
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to write Image Size", this.mError);
                }
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        }
        while (((this.mImageSizeInProgress) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
            this.mLock.wait();
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'writeImageSize', '(Landroid/bluetooth/BluetoothGattCharacteristic; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.writeImageSize():


    private void writeImageSize(android.bluetooth.BluetoothGattCharacteristic p7, int p8)
    {
        this.mReceivedData = 0;
        this.mError = 0;
        this.mImageSizeInProgress = 1;
        p7.setWriteType(1);
        no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_23 = new byte[4];
        p7.setValue(v1_23);
        p7.setValue(p8, 20, 0);
        this.mService.sendLogBroadcast(1, new StringBuilder().append("Writing to characteristic ").append(p7.getUuid()).toString());
        this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.writeCharacteristic(").append(p7.getUuid()).append(")").toString());
        this.mGatt.writeCharacteristic(p7);
        try {
        } catch (InterruptedException v0) {
            this.loge("Sleeping interrupted", v0);
            if (!this.mAborted) {
                if (this.mError == 0) {
                    if (this.mConnected) {
                        return;
                    } else {
                        throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to write Image Size: device disconnected");
                    }
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to write Image Size", this.mError);
                }
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        }
        while (((this.mImageSizeInProgress) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
            this.mLock.wait();
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'Last upload interrupted. Restarting device...' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'resetAndRestart', '(Landroid/bluetooth/BluetoothGatt; Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value Last upload interrupted. Restarting device... to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.resetAndRestart():


    private void resetAndRestart(android.bluetooth.BluetoothGatt p9, android.content.Intent p10)
    {
        int v1;
        int v3_0 = 1;
        this.mService.sendLogBroadcast(15, "Last upload interrupted. Restarting device...");
        this.mProgressInfo.setProgress(-5);
        this.logi("Sending Reset command (Op Code = 6)");
        this.writeOpCode(this.mControlPointCharacteristic, no.nordicsemi.android.dfu.LegacyDfuImpl.OP_CODE_RESET);
        this.mService.sendLogBroadcast(10, "Reset request sent");
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        android.bluetooth.BluetoothGattService v0 = p9.getService(no.nordicsemi.android.dfu.LegacyDfuImpl.GENERIC_ATTRIBUTE_SERVICE_UUID);
        if ((v0 == null) || (v0.getCharacteristic(no.nordicsemi.android.dfu.LegacyDfuImpl.SERVICE_CHANGED_UUID) == null)) {
            v1 = 0;
        } else {
            v1 = 1;
        }
        if (v1 != 0) {
            v3_0 = 0;
        }
        this.mService.refreshDeviceCache(p9, v3_0);
        this.mService.close(p9);
        this.logi("Restarting the service");
        android.content.Intent v2_1 = new android.content.Intent();
        v2_1.fillIn(p10, 24);
        this.restartService(v2_1, 0);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'resetAndRestart', '(Landroid/bluetooth/BluetoothGatt; Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.resetAndRestart():


    private void resetAndRestart(android.bluetooth.BluetoothGatt p9, android.content.Intent p10)
    {
        int v1;
        int v3_0 = 1;
        this.mService.sendLogBroadcast(15, "Last upload interrupted. Restarting device...");
        this.mProgressInfo.setProgress(-5);
        this.logi("Sending Reset command (Op Code = 6)");
        this.writeOpCode(this.mControlPointCharacteristic, no.nordicsemi.android.dfu.LegacyDfuImpl.OP_CODE_RESET);
        this.mService.sendLogBroadcast(10, "Reset request sent");
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        android.bluetooth.BluetoothGattService v0 = p9.getService(no.nordicsemi.android.dfu.LegacyDfuImpl.GENERIC_ATTRIBUTE_SERVICE_UUID);
        if ((v0 == null) || (v0.getCharacteristic(no.nordicsemi.android.dfu.LegacyDfuImpl.SERVICE_CHANGED_UUID) == null)) {
            v1 = 0;
        } else {
            v1 = 1;
        }
        if (v1 != 0) {
            v3_0 = 0;
        }
        this.mService.refreshDeviceCache(p9, v3_0);
        this.mService.close(p9);
        this.logi("Restarting the service");
        android.content.Intent v2_1 = new android.content.Intent();
        v2_1.fillIn(p10, 24);
        this.restartService(v2_1, 0);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'resetAndRestart', '(Landroid/bluetooth/BluetoothGatt; Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.resetAndRestart():


    private void resetAndRestart(android.bluetooth.BluetoothGatt p9, android.content.Intent p10)
    {
        int v1;
        int v3_0 = 1;
        this.mService.sendLogBroadcast(15, "Last upload interrupted. Restarting device...");
        this.mProgressInfo.setProgress(-5);
        this.logi("Sending Reset command (Op Code = 6)");
        this.writeOpCode(this.mControlPointCharacteristic, no.nordicsemi.android.dfu.LegacyDfuImpl.OP_CODE_RESET);
        this.mService.sendLogBroadcast(10, "Reset request sent");
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        android.bluetooth.BluetoothGattService v0 = p9.getService(no.nordicsemi.android.dfu.LegacyDfuImpl.GENERIC_ATTRIBUTE_SERVICE_UUID);
        if ((v0 == null) || (v0.getCharacteristic(no.nordicsemi.android.dfu.LegacyDfuImpl.SERVICE_CHANGED_UUID) == null)) {
            v1 = 0;
        } else {
            v1 = 1;
        }
        if (v1 != 0) {
            v3_0 = 0;
        }
        this.mService.refreshDeviceCache(p9, v3_0);
        this.mService.close(p9);
        this.logi("Restarting the service");
        android.content.Intent v2_1 = new android.content.Intent();
        v2_1.fillIn(p10, 24);
        this.restartService(v2_1, 0);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'resetAndRestart', '(Landroid/bluetooth/BluetoothGatt; Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.resetAndRestart():


    private void resetAndRestart(android.bluetooth.BluetoothGatt p9, android.content.Intent p10)
    {
        int v1;
        int v3_0 = 1;
        this.mService.sendLogBroadcast(15, "Last upload interrupted. Restarting device...");
        this.mProgressInfo.setProgress(-5);
        this.logi("Sending Reset command (Op Code = 6)");
        this.writeOpCode(this.mControlPointCharacteristic, no.nordicsemi.android.dfu.LegacyDfuImpl.OP_CODE_RESET);
        this.mService.sendLogBroadcast(10, "Reset request sent");
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        android.bluetooth.BluetoothGattService v0 = p9.getService(no.nordicsemi.android.dfu.LegacyDfuImpl.GENERIC_ATTRIBUTE_SERVICE_UUID);
        if ((v0 == null) || (v0.getCharacteristic(no.nordicsemi.android.dfu.LegacyDfuImpl.SERVICE_CHANGED_UUID) == null)) {
            v1 = 0;
        } else {
            v1 = 1;
        }
        if (v1 != 0) {
            v3_0 = 0;
        }
        this.mService.refreshDeviceCache(p9, v3_0);
        this.mService.close(p9);
        this.logi("Restarting the service");
        android.content.Intent v2_1 = new android.content.Intent();
        v2_1.fillIn(p10, 24);
        this.restartService(v2_1, 0);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'resetAndRestart', '(Landroid/bluetooth/BluetoothGatt; Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.resetAndRestart():


    private void resetAndRestart(android.bluetooth.BluetoothGatt p9, android.content.Intent p10)
    {
        int v1;
        int v3_0 = 1;
        this.mService.sendLogBroadcast(15, "Last upload interrupted. Restarting device...");
        this.mProgressInfo.setProgress(-5);
        this.logi("Sending Reset command (Op Code = 6)");
        this.writeOpCode(this.mControlPointCharacteristic, no.nordicsemi.android.dfu.LegacyDfuImpl.OP_CODE_RESET);
        this.mService.sendLogBroadcast(10, "Reset request sent");
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        android.bluetooth.BluetoothGattService v0 = p9.getService(no.nordicsemi.android.dfu.LegacyDfuImpl.GENERIC_ATTRIBUTE_SERVICE_UUID);
        if ((v0 == null) || (v0.getCharacteristic(no.nordicsemi.android.dfu.LegacyDfuImpl.SERVICE_CHANGED_UUID) == null)) {
            v1 = 0;
        } else {
            v1 = 1;
        }
        if (v1 != 0) {
            v3_0 = 0;
        }
        this.mService.refreshDeviceCache(p9, v3_0);
        this.mService.close(p9);
        this.logi("Restarting the service");
        android.content.Intent v2_1 = new android.content.Intent();
        v2_1.fillIn(p10, 24);
        this.restartService(v2_1, 0);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'gatt.close()' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'resetAndRestart', '(Landroid/bluetooth/BluetoothGatt; Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'close', '(Landroid/bluetooth/BluetoothGatt;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.close() to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.resetAndRestart():


    private void resetAndRestart(android.bluetooth.BluetoothGatt p9, android.content.Intent p10)
    {
        int v1;
        int v3_0 = 1;
        this.mService.sendLogBroadcast(15, "Last upload interrupted. Restarting device...");
        this.mProgressInfo.setProgress(-5);
        this.logi("Sending Reset command (Op Code = 6)");
        this.writeOpCode(this.mControlPointCharacteristic, no.nordicsemi.android.dfu.LegacyDfuImpl.OP_CODE_RESET);
        this.mService.sendLogBroadcast(10, "Reset request sent");
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        android.bluetooth.BluetoothGattService v0 = p9.getService(no.nordicsemi.android.dfu.LegacyDfuImpl.GENERIC_ATTRIBUTE_SERVICE_UUID);
        if ((v0 == null) || (v0.getCharacteristic(no.nordicsemi.android.dfu.LegacyDfuImpl.SERVICE_CHANGED_UUID) == null)) {
            v1 = 0;
        } else {
            v1 = 1;
        }
        if (v1 != 0) {
            v3_0 = 0;
        }
        this.mService.refreshDeviceCache(p9, v3_0);
        this.mService.close(p9);
        this.logi("Restarting the service");
        android.content.Intent v2_1 = new android.content.Intent();
        v2_1.fillIn(p10, 24);
        this.restartService(v2_1, 0);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.close():


    protected void close(android.bluetooth.BluetoothGatt p3)
    {
        this.logi("Cleaning up...");
        this.sendLogBroadcast(0, "gatt.close()");
        p3.close();
        this.mConnectionState = -5;
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'gatt.refresh() (hidden)' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl;', 'resetAndRestart', '(Landroid/bluetooth/BluetoothGatt; Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'refreshDeviceCache', '(Landroid/bluetooth/BluetoothGatt; Z)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.refresh() (hidden) to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl.resetAndRestart():


    private void resetAndRestart(android.bluetooth.BluetoothGatt p9, android.content.Intent p10)
    {
        int v1;
        int v3_0 = 1;
        this.mService.sendLogBroadcast(15, "Last upload interrupted. Restarting device...");
        this.mProgressInfo.setProgress(-5);
        this.logi("Sending Reset command (Op Code = 6)");
        this.writeOpCode(this.mControlPointCharacteristic, no.nordicsemi.android.dfu.LegacyDfuImpl.OP_CODE_RESET);
        this.mService.sendLogBroadcast(10, "Reset request sent");
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        android.bluetooth.BluetoothGattService v0 = p9.getService(no.nordicsemi.android.dfu.LegacyDfuImpl.GENERIC_ATTRIBUTE_SERVICE_UUID);
        if ((v0 == null) || (v0.getCharacteristic(no.nordicsemi.android.dfu.LegacyDfuImpl.SERVICE_CHANGED_UUID) == null)) {
            v1 = 0;
        } else {
            v1 = 1;
        }
        if (v1 != 0) {
            v3_0 = 0;
        }
        this.mService.refreshDeviceCache(p9, v3_0);
        this.mService.close(p9);
        this.logi("Restarting the service");
        android.content.Intent v2_1 = new android.content.Intent();
        v2_1.fillIn(p10, 24);
        this.restartService(v2_1, 0);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.refreshDeviceCache():


    protected void refreshDeviceCache(android.bluetooth.BluetoothGatt p7, boolean p8)
    {
        if ((p8) || (p7.getDevice().getBondState() == 10)) {
            this.sendLogBroadcast(0, "gatt.refresh() (hidden)");
            try {
                Class[] v5_2 = new Class[0];
                reflect.Method v1 = p7.getClass().getMethod("refresh", v5_2);
            } catch (Exception v0) {
                this.loge("An exception occurred while refreshing device", v0);
                this.sendLogBroadcast(15, "Refreshing failed");
            }
            if (v1 != null) {
                String v3_2 = new Object[0];
                this.logi(new StringBuilder().append("Refreshing result: ").append(((Boolean) v1.invoke(p7, v3_2)).booleanValue()).toString());
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl$LegacyBluetoothCallback;', 'onPacketCharacteristicWrite', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl$LegacyBluetoothCallback.onPacketCharacteristicWrite():


    protected void onPacketCharacteristicWrite(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattCharacteristic p6, int p7)
    {
        if (no.nordicsemi.android.dfu.LegacyDfuImpl.access$000(this.this$0)) {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Data written to ").append(p6.getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
            no.nordicsemi.android.dfu.LegacyDfuImpl.access$002(this.this$0, 0);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl$LegacyBluetoothCallback;', 'onPacketCharacteristicWrite', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl$LegacyBluetoothCallback.onPacketCharacteristicWrite():


    protected void onPacketCharacteristicWrite(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattCharacteristic p6, int p7)
    {
        if (no.nordicsemi.android.dfu.LegacyDfuImpl.access$000(this.this$0)) {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Data written to ").append(p6.getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
            no.nordicsemi.android.dfu.LegacyDfuImpl.access$002(this.this$0, 0);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl$LegacyBluetoothCallback;', 'onPacketCharacteristicWrite', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl$LegacyBluetoothCallback.onPacketCharacteristicWrite():


    protected void onPacketCharacteristicWrite(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattCharacteristic p6, int p7)
    {
        if (no.nordicsemi.android.dfu.LegacyDfuImpl.access$000(this.this$0)) {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Data written to ").append(p6.getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
            no.nordicsemi.android.dfu.LegacyDfuImpl.access$002(this.this$0, 0);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyDfuImpl$LegacyBluetoothCallback;', 'onPacketCharacteristicWrite', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.LegacyDfuImpl$LegacyBluetoothCallback.onPacketCharacteristicWrite():


    protected void onPacketCharacteristicWrite(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattCharacteristic p6, int p7)
    {
        if (no.nordicsemi.android.dfu.LegacyDfuImpl.access$000(this.this$0)) {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Data written to ").append(p6.getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
            no.nordicsemi.android.dfu.LegacyDfuImpl.access$002(this.this$0, 0);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p11)
    {
        int v2;
        int v4 = 1;
        this.logw("Application with legacy buttonless update found");
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        this.enableCCCD(this.mControlPointCharacteristic, 1);
        this.mService.sendLogBroadcast(10, "Notifications enabled");
        this.mService.waitFor(1000);
        this.mProgressInfo.setProgress(-3);
        this.logi("Sending Start DFU command (Op Code = 1, Upload Mode = 4)");
        this.writeOpCode(this.mControlPointCharacteristic, no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
        this.mService.sendLogBroadcast(10, "Jump to bootloader sent (Op Code = 1, Upload Mode = 4)");
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        android.bluetooth.BluetoothGatt v1 = this.mGatt;
        android.bluetooth.BluetoothGattService v0 = v1.getService(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.GENERIC_ATTRIBUTE_SERVICE_UUID);
        if ((v0 == null) || (v0.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.SERVICE_CHANGED_UUID) == null)) {
            v2 = 0;
        } else {
            v2 = 1;
        }
        int v6_14;
        if (v2 != 0) {
            v6_14 = 0;
        } else {
            v6_14 = 1;
        }
        this.mService.refreshDeviceCache(v1, v6_14);
        this.mService.close(v1);
        this.logi("Starting service that will connect to the DFU bootloader");
        android.content.Intent v3_1 = new android.content.Intent();
        v3_1.fillIn(p11, 24);
        if (this.mVersion != 0) {
            v4 = 0;
        }
        this.restartService(v3_1, v4);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'Jumping to the DFU Bootloader...' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value Jumping to the DFU Bootloader... to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p11)
    {
        int v2;
        int v4 = 1;
        this.logw("Application with legacy buttonless update found");
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        this.enableCCCD(this.mControlPointCharacteristic, 1);
        this.mService.sendLogBroadcast(10, "Notifications enabled");
        this.mService.waitFor(1000);
        this.mProgressInfo.setProgress(-3);
        this.logi("Sending Start DFU command (Op Code = 1, Upload Mode = 4)");
        this.writeOpCode(this.mControlPointCharacteristic, no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
        this.mService.sendLogBroadcast(10, "Jump to bootloader sent (Op Code = 1, Upload Mode = 4)");
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        android.bluetooth.BluetoothGatt v1 = this.mGatt;
        android.bluetooth.BluetoothGattService v0 = v1.getService(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.GENERIC_ATTRIBUTE_SERVICE_UUID);
        if ((v0 == null) || (v0.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.SERVICE_CHANGED_UUID) == null)) {
            v2 = 0;
        } else {
            v2 = 1;
        }
        int v6_14;
        if (v2 != 0) {
            v6_14 = 0;
        } else {
            v6_14 = 1;
        }
        this.mService.refreshDeviceCache(v1, v6_14);
        this.mService.close(v1);
        this.logi("Starting service that will connect to the DFU bootloader");
        android.content.Intent v3_1 = new android.content.Intent();
        v3_1.fillIn(p11, 24);
        if (this.mVersion != 0) {
            v4 = 0;
        }
        this.restartService(v3_1, v4);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p11)
    {
        int v2;
        int v4 = 1;
        this.logw("Application with legacy buttonless update found");
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        this.enableCCCD(this.mControlPointCharacteristic, 1);
        this.mService.sendLogBroadcast(10, "Notifications enabled");
        this.mService.waitFor(1000);
        this.mProgressInfo.setProgress(-3);
        this.logi("Sending Start DFU command (Op Code = 1, Upload Mode = 4)");
        this.writeOpCode(this.mControlPointCharacteristic, no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
        this.mService.sendLogBroadcast(10, "Jump to bootloader sent (Op Code = 1, Upload Mode = 4)");
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        android.bluetooth.BluetoothGatt v1 = this.mGatt;
        android.bluetooth.BluetoothGattService v0 = v1.getService(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.GENERIC_ATTRIBUTE_SERVICE_UUID);
        if ((v0 == null) || (v0.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.SERVICE_CHANGED_UUID) == null)) {
            v2 = 0;
        } else {
            v2 = 1;
        }
        int v6_14;
        if (v2 != 0) {
            v6_14 = 0;
        } else {
            v6_14 = 1;
        }
        this.mService.refreshDeviceCache(v1, v6_14);
        this.mService.close(v1);
        this.logi("Starting service that will connect to the DFU bootloader");
        android.content.Intent v3_1 = new android.content.Intent();
        v3_1.fillIn(p11, 24);
        if (this.mVersion != 0) {
            v4 = 0;
        }
        this.restartService(v3_1, v4);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'gatt.refresh() (hidden)' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'refreshDeviceCache', '(Landroid/bluetooth/BluetoothGatt; Z)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.refresh() (hidden) to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p11)
    {
        int v2;
        int v4 = 1;
        this.logw("Application with legacy buttonless update found");
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        this.enableCCCD(this.mControlPointCharacteristic, 1);
        this.mService.sendLogBroadcast(10, "Notifications enabled");
        this.mService.waitFor(1000);
        this.mProgressInfo.setProgress(-3);
        this.logi("Sending Start DFU command (Op Code = 1, Upload Mode = 4)");
        this.writeOpCode(this.mControlPointCharacteristic, no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
        this.mService.sendLogBroadcast(10, "Jump to bootloader sent (Op Code = 1, Upload Mode = 4)");
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        android.bluetooth.BluetoothGatt v1 = this.mGatt;
        android.bluetooth.BluetoothGattService v0 = v1.getService(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.GENERIC_ATTRIBUTE_SERVICE_UUID);
        if ((v0 == null) || (v0.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.SERVICE_CHANGED_UUID) == null)) {
            v2 = 0;
        } else {
            v2 = 1;
        }
        int v6_14;
        if (v2 != 0) {
            v6_14 = 0;
        } else {
            v6_14 = 1;
        }
        this.mService.refreshDeviceCache(v1, v6_14);
        this.mService.close(v1);
        this.logi("Starting service that will connect to the DFU bootloader");
        android.content.Intent v3_1 = new android.content.Intent();
        v3_1.fillIn(p11, 24);
        if (this.mVersion != 0) {
            v4 = 0;
        }
        this.restartService(v3_1, v4);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.refreshDeviceCache():


    protected void refreshDeviceCache(android.bluetooth.BluetoothGatt p7, boolean p8)
    {
        if ((p8) || (p7.getDevice().getBondState() == 10)) {
            this.sendLogBroadcast(0, "gatt.refresh() (hidden)");
            try {
                Class[] v5_2 = new Class[0];
                reflect.Method v1 = p7.getClass().getMethod("refresh", v5_2);
            } catch (Exception v0) {
                this.loge("An exception occurred while refreshing device", v0);
                this.sendLogBroadcast(15, "Refreshing failed");
            }
            if (v1 != null) {
                String v3_2 = new Object[0];
                this.logi(new StringBuilder().append("Refreshing result: ").append(((Boolean) v1.invoke(p7, v3_2)).booleanValue()).toString());
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p11)
    {
        int v2;
        int v4 = 1;
        this.logw("Application with legacy buttonless update found");
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        this.enableCCCD(this.mControlPointCharacteristic, 1);
        this.mService.sendLogBroadcast(10, "Notifications enabled");
        this.mService.waitFor(1000);
        this.mProgressInfo.setProgress(-3);
        this.logi("Sending Start DFU command (Op Code = 1, Upload Mode = 4)");
        this.writeOpCode(this.mControlPointCharacteristic, no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
        this.mService.sendLogBroadcast(10, "Jump to bootloader sent (Op Code = 1, Upload Mode = 4)");
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        android.bluetooth.BluetoothGatt v1 = this.mGatt;
        android.bluetooth.BluetoothGattService v0 = v1.getService(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.GENERIC_ATTRIBUTE_SERVICE_UUID);
        if ((v0 == null) || (v0.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.SERVICE_CHANGED_UUID) == null)) {
            v2 = 0;
        } else {
            v2 = 1;
        }
        int v6_14;
        if (v2 != 0) {
            v6_14 = 0;
        } else {
            v6_14 = 1;
        }
        this.mService.refreshDeviceCache(v1, v6_14);
        this.mService.close(v1);
        this.logi("Starting service that will connect to the DFU bootloader");
        android.content.Intent v3_1 = new android.content.Intent();
        v3_1.fillIn(p11, 24);
        if (this.mVersion != 0) {
            v4 = 0;
        }
        this.restartService(v3_1, v4);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p11)
    {
        int v2;
        int v4 = 1;
        this.logw("Application with legacy buttonless update found");
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        this.enableCCCD(this.mControlPointCharacteristic, 1);
        this.mService.sendLogBroadcast(10, "Notifications enabled");
        this.mService.waitFor(1000);
        this.mProgressInfo.setProgress(-3);
        this.logi("Sending Start DFU command (Op Code = 1, Upload Mode = 4)");
        this.writeOpCode(this.mControlPointCharacteristic, no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
        this.mService.sendLogBroadcast(10, "Jump to bootloader sent (Op Code = 1, Upload Mode = 4)");
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        android.bluetooth.BluetoothGatt v1 = this.mGatt;
        android.bluetooth.BluetoothGattService v0 = v1.getService(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.GENERIC_ATTRIBUTE_SERVICE_UUID);
        if ((v0 == null) || (v0.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.SERVICE_CHANGED_UUID) == null)) {
            v2 = 0;
        } else {
            v2 = 1;
        }
        int v6_14;
        if (v2 != 0) {
            v6_14 = 0;
        } else {
            v6_14 = 1;
        }
        this.mService.refreshDeviceCache(v1, v6_14);
        this.mService.close(v1);
        this.logi("Starting service that will connect to the DFU bootloader");
        android.content.Intent v3_1 = new android.content.Intent();
        v3_1.fillIn(p11, 24);
        if (this.mVersion != 0) {
            v4 = 0;
        }
        this.restartService(v3_1, v4);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'gatt.close()' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'close', '(Landroid/bluetooth/BluetoothGatt;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.close() to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p11)
    {
        int v2;
        int v4 = 1;
        this.logw("Application with legacy buttonless update found");
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        this.enableCCCD(this.mControlPointCharacteristic, 1);
        this.mService.sendLogBroadcast(10, "Notifications enabled");
        this.mService.waitFor(1000);
        this.mProgressInfo.setProgress(-3);
        this.logi("Sending Start DFU command (Op Code = 1, Upload Mode = 4)");
        this.writeOpCode(this.mControlPointCharacteristic, no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
        this.mService.sendLogBroadcast(10, "Jump to bootloader sent (Op Code = 1, Upload Mode = 4)");
        this.mService.waitUntilDisconnected();
        this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
        android.bluetooth.BluetoothGatt v1 = this.mGatt;
        android.bluetooth.BluetoothGattService v0 = v1.getService(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.GENERIC_ATTRIBUTE_SERVICE_UUID);
        if ((v0 == null) || (v0.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.SERVICE_CHANGED_UUID) == null)) {
            v2 = 0;
        } else {
            v2 = 1;
        }
        int v6_14;
        if (v2 != 0) {
            v6_14 = 0;
        } else {
            v6_14 = 1;
        }
        this.mService.refreshDeviceCache(v1, v6_14);
        this.mService.close(v1);
        this.logi("Starting service that will connect to the DFU bootloader");
        android.content.Intent v3_1 = new android.content.Intent();
        v3_1.fillIn(p11, 24);
        if (this.mVersion != 0) {
            v4 = 0;
        }
        this.restartService(v3_1, v4);
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.close():


    protected void close(android.bluetooth.BluetoothGatt p3)
    {
        this.logi("Cleaning up...");
        this.sendLogBroadcast(0, "gatt.close()");
        p3.close();
        this.mConnectionState = -5;
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'gatt.readCharacteristic(' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'isClientCompatible', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt;)Z'), ('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'readVersion', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic;)I'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.readCharacteristic( to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.isClientCompatible():


    public boolean isClientCompatible(android.content.Intent p14, android.bluetooth.BluetoothGatt p15)
    {
        int v9_6;
        android.bluetooth.BluetoothGattService v2 = p15.getService(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_SERVICE_UUID);
        if (v2 != null) {
            android.bluetooth.BluetoothGattCharacteristic v1 = v2.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_CONTROL_POINT_UUID);
            if ((v1 != null) && (v1.getDescriptor(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.CLIENT_CHARACTERISTIC_CONFIG) != null)) {
                this.mControlPointCharacteristic = v1;
                this.mProgressInfo.setProgress(-2);
                this.mService.waitFor(1000);
                int v7 = 0;
                android.bluetooth.BluetoothGattCharacteristic v8 = v2.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_VERSION_UUID);
                if (v8 == null) {
                    this.logi(new StringBuilder().append("No DFU Version characteristic found -> ").append(this.getVersionFeatures(0)).toString());
                    this.mService.sendLogBroadcast(10, "DFU Version characteristic not found");
                } else {
                    v7 = this.readVersion(p15, v8);
                    this.mVersion = v7;
                    int v4 = (v7 & 15);
                    int v3 = (v7 >> 8);
                    this.logi(new StringBuilder().append("Version number read: ").append(v3).append(".").append(v4).append(" -> ").append(this.getVersionFeatures(v7)).toString());
                    this.mService.sendLogBroadcast(10, new StringBuilder().append("Version number read: ").append(v3).append(".").append(v4).toString());
                }
                boolean v0 = android.preference.PreferenceManager.getDefaultSharedPreferences(this.mService).getBoolean("settings_assume_dfu_mode", 0);
                if (p14.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU")) {
                    v0 = p14.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU", 0);
                }
                int v5;
                if (p15.getServices().size() <= 3) {
                    v5 = 0;
                } else {
                    v5 = 1;
                }
                if ((v7 == 0) && (v5 != 0)) {
                    this.logi("Additional services found -> Bootloader from SDK 6.1. Updating SD and BL supported, extended init packet not supported");
                }
                if ((v7 != 1) && ((v0) || ((v7 != 0) || (v5 == 0)))) {
                    v9_6 = 0;
                } else {
                    v9_6 = 1;
                }
            } else {
                v9_6 = 0;
            }
        } else {
            v9_6 = 0;
        }
        return v9_6;
    }

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.readVersion():


    private int readVersion(android.bluetooth.BluetoothGatt p7, android.bluetooth.BluetoothGattCharacteristic p8)
    {
        if (this.mConnected) {
            if (!this.mAborted) {
                boolean v1_17;
                if (p8 != null) {
                    this.mReceivedData = 0;
                    this.mError = 0;
                    this.logi("Reading DFU version number...");
                    this.mService.sendLogBroadcast(1, "Reading DFU version number...");
                    p8.setValue(((byte[]) 0));
                    this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.readCharacteristic(").append(p8.getUuid()).append(")").toString());
                    p7.readCharacteristic(p8);
                    try {
                    } catch (InterruptedException v0) {
                        this.loge("Sleeping interrupted", v0);
                        if (this.mError == 0) {
                            if (this.mConnected) {
                                v1_17 = p8.getIntValue(18, 0).intValue();
                            } else {
                                throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
                            }
                        } else {
                            throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to read version number", this.mError);
                        }
                    }
                    while ((((!this.mRequestCompleted) || (p8.getValue() == null)) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
                        this.mRequestCompleted = 0;
                        this.mLock.wait();
                    }
                } else {
                    v1_17 = 0;
                }
                return v1_17;
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        } else {
            throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String '.' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'isClientCompatible', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value . to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.isClientCompatible():


    public boolean isClientCompatible(android.content.Intent p14, android.bluetooth.BluetoothGatt p15)
    {
        int v9_6;
        android.bluetooth.BluetoothGattService v2 = p15.getService(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_SERVICE_UUID);
        if (v2 != null) {
            android.bluetooth.BluetoothGattCharacteristic v1 = v2.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_CONTROL_POINT_UUID);
            if ((v1 != null) && (v1.getDescriptor(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.CLIENT_CHARACTERISTIC_CONFIG) != null)) {
                this.mControlPointCharacteristic = v1;
                this.mProgressInfo.setProgress(-2);
                this.mService.waitFor(1000);
                int v7 = 0;
                android.bluetooth.BluetoothGattCharacteristic v8 = v2.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_VERSION_UUID);
                if (v8 == null) {
                    this.logi(new StringBuilder().append("No DFU Version characteristic found -> ").append(this.getVersionFeatures(0)).toString());
                    this.mService.sendLogBroadcast(10, "DFU Version characteristic not found");
                } else {
                    v7 = this.readVersion(p15, v8);
                    this.mVersion = v7;
                    int v4 = (v7 & 15);
                    int v3 = (v7 >> 8);
                    this.logi(new StringBuilder().append("Version number read: ").append(v3).append(".").append(v4).append(" -> ").append(this.getVersionFeatures(v7)).toString());
                    this.mService.sendLogBroadcast(10, new StringBuilder().append("Version number read: ").append(v3).append(".").append(v4).toString());
                }
                boolean v0 = android.preference.PreferenceManager.getDefaultSharedPreferences(this.mService).getBoolean("settings_assume_dfu_mode", 0);
                if (p14.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU")) {
                    v0 = p14.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU", 0);
                }
                int v5;
                if (p15.getServices().size() <= 3) {
                    v5 = 0;
                } else {
                    v5 = 1;
                }
                if ((v7 == 0) && (v5 != 0)) {
                    this.logi("Additional services found -> Bootloader from SDK 6.1. Updating SD and BL supported, extended init packet not supported");
                }
                if ((v7 != 1) && ((v0) || ((v7 != 0) || (v5 == 0)))) {
                    v9_6 = 0;
                } else {
                    v9_6 = 1;
                }
            } else {
                v9_6 = 0;
            }
        } else {
            v9_6 = 0;
        }
        return v9_6;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'isClientCompatible', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.isClientCompatible():


    public boolean isClientCompatible(android.content.Intent p14, android.bluetooth.BluetoothGatt p15)
    {
        int v9_6;
        android.bluetooth.BluetoothGattService v2 = p15.getService(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_SERVICE_UUID);
        if (v2 != null) {
            android.bluetooth.BluetoothGattCharacteristic v1 = v2.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_CONTROL_POINT_UUID);
            if ((v1 != null) && (v1.getDescriptor(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.CLIENT_CHARACTERISTIC_CONFIG) != null)) {
                this.mControlPointCharacteristic = v1;
                this.mProgressInfo.setProgress(-2);
                this.mService.waitFor(1000);
                int v7 = 0;
                android.bluetooth.BluetoothGattCharacteristic v8 = v2.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_VERSION_UUID);
                if (v8 == null) {
                    this.logi(new StringBuilder().append("No DFU Version characteristic found -> ").append(this.getVersionFeatures(0)).toString());
                    this.mService.sendLogBroadcast(10, "DFU Version characteristic not found");
                } else {
                    v7 = this.readVersion(p15, v8);
                    this.mVersion = v7;
                    int v4 = (v7 & 15);
                    int v3 = (v7 >> 8);
                    this.logi(new StringBuilder().append("Version number read: ").append(v3).append(".").append(v4).append(" -> ").append(this.getVersionFeatures(v7)).toString());
                    this.mService.sendLogBroadcast(10, new StringBuilder().append("Version number read: ").append(v3).append(".").append(v4).toString());
                }
                boolean v0 = android.preference.PreferenceManager.getDefaultSharedPreferences(this.mService).getBoolean("settings_assume_dfu_mode", 0);
                if (p14.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU")) {
                    v0 = p14.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU", 0);
                }
                int v5;
                if (p15.getServices().size() <= 3) {
                    v5 = 0;
                } else {
                    v5 = 1;
                }
                if ((v7 == 0) && (v5 != 0)) {
                    this.logi("Additional services found -> Bootloader from SDK 6.1. Updating SD and BL supported, extended init packet not supported");
                }
                if ((v7 != 1) && ((v0) || ((v7 != 0) || (v5 == 0)))) {
                    v9_6 = 0;
                } else {
                    v9_6 = 1;
                }
            } else {
                v9_6 = 0;
            }
        } else {
            v9_6 = 0;
        }
        return v9_6;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'isClientCompatible', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.isClientCompatible():


    public boolean isClientCompatible(android.content.Intent p14, android.bluetooth.BluetoothGatt p15)
    {
        int v9_6;
        android.bluetooth.BluetoothGattService v2 = p15.getService(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_SERVICE_UUID);
        if (v2 != null) {
            android.bluetooth.BluetoothGattCharacteristic v1 = v2.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_CONTROL_POINT_UUID);
            if ((v1 != null) && (v1.getDescriptor(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.CLIENT_CHARACTERISTIC_CONFIG) != null)) {
                this.mControlPointCharacteristic = v1;
                this.mProgressInfo.setProgress(-2);
                this.mService.waitFor(1000);
                int v7 = 0;
                android.bluetooth.BluetoothGattCharacteristic v8 = v2.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_VERSION_UUID);
                if (v8 == null) {
                    this.logi(new StringBuilder().append("No DFU Version characteristic found -> ").append(this.getVersionFeatures(0)).toString());
                    this.mService.sendLogBroadcast(10, "DFU Version characteristic not found");
                } else {
                    v7 = this.readVersion(p15, v8);
                    this.mVersion = v7;
                    int v4 = (v7 & 15);
                    int v3 = (v7 >> 8);
                    this.logi(new StringBuilder().append("Version number read: ").append(v3).append(".").append(v4).append(" -> ").append(this.getVersionFeatures(v7)).toString());
                    this.mService.sendLogBroadcast(10, new StringBuilder().append("Version number read: ").append(v3).append(".").append(v4).toString());
                }
                boolean v0 = android.preference.PreferenceManager.getDefaultSharedPreferences(this.mService).getBoolean("settings_assume_dfu_mode", 0);
                if (p14.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU")) {
                    v0 = p14.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU", 0);
                }
                int v5;
                if (p15.getServices().size() <= 3) {
                    v5 = 0;
                } else {
                    v5 = 1;
                }
                if ((v7 == 0) && (v5 != 0)) {
                    this.logi("Additional services found -> Bootloader from SDK 6.1. Updating SD and BL supported, extended init packet not supported");
                }
                if ((v7 != 1) && ((v0) || ((v7 != 0) || (v5 == 0)))) {
                    v9_6 = 0;
                } else {
                    v9_6 = 1;
                }
            } else {
                v9_6 = 0;
            }
        } else {
            v9_6 = 0;
        }
        return v9_6;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'isClientCompatible', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.isClientCompatible():


    public boolean isClientCompatible(android.content.Intent p14, android.bluetooth.BluetoothGatt p15)
    {
        int v9_6;
        android.bluetooth.BluetoothGattService v2 = p15.getService(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_SERVICE_UUID);
        if (v2 != null) {
            android.bluetooth.BluetoothGattCharacteristic v1 = v2.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_CONTROL_POINT_UUID);
            if ((v1 != null) && (v1.getDescriptor(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.CLIENT_CHARACTERISTIC_CONFIG) != null)) {
                this.mControlPointCharacteristic = v1;
                this.mProgressInfo.setProgress(-2);
                this.mService.waitFor(1000);
                int v7 = 0;
                android.bluetooth.BluetoothGattCharacteristic v8 = v2.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_VERSION_UUID);
                if (v8 == null) {
                    this.logi(new StringBuilder().append("No DFU Version characteristic found -> ").append(this.getVersionFeatures(0)).toString());
                    this.mService.sendLogBroadcast(10, "DFU Version characteristic not found");
                } else {
                    v7 = this.readVersion(p15, v8);
                    this.mVersion = v7;
                    int v4 = (v7 & 15);
                    int v3 = (v7 >> 8);
                    this.logi(new StringBuilder().append("Version number read: ").append(v3).append(".").append(v4).append(" -> ").append(this.getVersionFeatures(v7)).toString());
                    this.mService.sendLogBroadcast(10, new StringBuilder().append("Version number read: ").append(v3).append(".").append(v4).toString());
                }
                boolean v0 = android.preference.PreferenceManager.getDefaultSharedPreferences(this.mService).getBoolean("settings_assume_dfu_mode", 0);
                if (p14.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU")) {
                    v0 = p14.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU", 0);
                }
                int v5;
                if (p15.getServices().size() <= 3) {
                    v5 = 0;
                } else {
                    v5 = 1;
                }
                if ((v7 == 0) && (v5 != 0)) {
                    this.logi("Additional services found -> Bootloader from SDK 6.1. Updating SD and BL supported, extended init packet not supported");
                }
                if ((v7 != 1) && ((v0) || ((v7 != 0) || (v5 == 0)))) {
                    v9_6 = 0;
                } else {
                    v9_6 = 1;
                }
            } else {
                v9_6 = 0;
            }
        } else {
            v9_6 = 0;
        }
        return v9_6;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'isClientCompatible', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt;)Z'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.isClientCompatible():


    public boolean isClientCompatible(android.content.Intent p14, android.bluetooth.BluetoothGatt p15)
    {
        int v9_6;
        android.bluetooth.BluetoothGattService v2 = p15.getService(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_SERVICE_UUID);
        if (v2 != null) {
            android.bluetooth.BluetoothGattCharacteristic v1 = v2.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_CONTROL_POINT_UUID);
            if ((v1 != null) && (v1.getDescriptor(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.CLIENT_CHARACTERISTIC_CONFIG) != null)) {
                this.mControlPointCharacteristic = v1;
                this.mProgressInfo.setProgress(-2);
                this.mService.waitFor(1000);
                int v7 = 0;
                android.bluetooth.BluetoothGattCharacteristic v8 = v2.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_VERSION_UUID);
                if (v8 == null) {
                    this.logi(new StringBuilder().append("No DFU Version characteristic found -> ").append(this.getVersionFeatures(0)).toString());
                    this.mService.sendLogBroadcast(10, "DFU Version characteristic not found");
                } else {
                    v7 = this.readVersion(p15, v8);
                    this.mVersion = v7;
                    int v4 = (v7 & 15);
                    int v3 = (v7 >> 8);
                    this.logi(new StringBuilder().append("Version number read: ").append(v3).append(".").append(v4).append(" -> ").append(this.getVersionFeatures(v7)).toString());
                    this.mService.sendLogBroadcast(10, new StringBuilder().append("Version number read: ").append(v3).append(".").append(v4).toString());
                }
                boolean v0 = android.preference.PreferenceManager.getDefaultSharedPreferences(this.mService).getBoolean("settings_assume_dfu_mode", 0);
                if (p14.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU")) {
                    v0 = p14.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU", 0);
                }
                int v5;
                if (p15.getServices().size() <= 3) {
                    v5 = 0;
                } else {
                    v5 = 1;
                }
                if ((v7 == 0) && (v5 != 0)) {
                    this.logi("Additional services found -> Bootloader from SDK 6.1. Updating SD and BL supported, extended init packet not supported");
                }
                if ((v7 != 1) && ((v0) || ((v7 != 0) || (v5 == 0)))) {
                    v9_6 = 0;
                } else {
                    v9_6 = 1;
                }
            } else {
                v9_6 = 0;
            }
        } else {
            v9_6 = 0;
        }
        return v9_6;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'Reading DFU version number...' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'isClientCompatible', '(Landroid/content/Intent; Landroid/bluetooth/BluetoothGatt;)Z'), ('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'readVersion', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic;)I'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value Reading DFU version number... to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.isClientCompatible():


    public boolean isClientCompatible(android.content.Intent p14, android.bluetooth.BluetoothGatt p15)
    {
        int v9_6;
        android.bluetooth.BluetoothGattService v2 = p15.getService(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_SERVICE_UUID);
        if (v2 != null) {
            android.bluetooth.BluetoothGattCharacteristic v1 = v2.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_CONTROL_POINT_UUID);
            if ((v1 != null) && (v1.getDescriptor(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.CLIENT_CHARACTERISTIC_CONFIG) != null)) {
                this.mControlPointCharacteristic = v1;
                this.mProgressInfo.setProgress(-2);
                this.mService.waitFor(1000);
                int v7 = 0;
                android.bluetooth.BluetoothGattCharacteristic v8 = v2.getCharacteristic(no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.DFU_VERSION_UUID);
                if (v8 == null) {
                    this.logi(new StringBuilder().append("No DFU Version characteristic found -> ").append(this.getVersionFeatures(0)).toString());
                    this.mService.sendLogBroadcast(10, "DFU Version characteristic not found");
                } else {
                    v7 = this.readVersion(p15, v8);
                    this.mVersion = v7;
                    int v4 = (v7 & 15);
                    int v3 = (v7 >> 8);
                    this.logi(new StringBuilder().append("Version number read: ").append(v3).append(".").append(v4).append(" -> ").append(this.getVersionFeatures(v7)).toString());
                    this.mService.sendLogBroadcast(10, new StringBuilder().append("Version number read: ").append(v3).append(".").append(v4).toString());
                }
                boolean v0 = android.preference.PreferenceManager.getDefaultSharedPreferences(this.mService).getBoolean("settings_assume_dfu_mode", 0);
                if (p14.hasExtra("no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU")) {
                    v0 = p14.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_FORCE_DFU", 0);
                }
                int v5;
                if (p15.getServices().size() <= 3) {
                    v5 = 0;
                } else {
                    v5 = 1;
                }
                if ((v7 == 0) && (v5 != 0)) {
                    this.logi("Additional services found -> Bootloader from SDK 6.1. Updating SD and BL supported, extended init packet not supported");
                }
                if ((v7 != 1) && ((v0) || ((v7 != 0) || (v5 == 0)))) {
                    v9_6 = 0;
                } else {
                    v9_6 = 1;
                }
            } else {
                v9_6 = 0;
            }
        } else {
            v9_6 = 0;
        }
        return v9_6;
    }

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.readVersion():


    private int readVersion(android.bluetooth.BluetoothGatt p7, android.bluetooth.BluetoothGattCharacteristic p8)
    {
        if (this.mConnected) {
            if (!this.mAborted) {
                boolean v1_17;
                if (p8 != null) {
                    this.mReceivedData = 0;
                    this.mError = 0;
                    this.logi("Reading DFU version number...");
                    this.mService.sendLogBroadcast(1, "Reading DFU version number...");
                    p8.setValue(((byte[]) 0));
                    this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.readCharacteristic(").append(p8.getUuid()).append(")").toString());
                    p7.readCharacteristic(p8);
                    try {
                    } catch (InterruptedException v0) {
                        this.loge("Sleeping interrupted", v0);
                        if (this.mError == 0) {
                            if (this.mConnected) {
                                v1_17 = p8.getIntValue(18, 0).intValue();
                            } else {
                                throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
                            }
                        } else {
                            throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to read version number", this.mError);
                        }
                    }
                    while ((((!this.mRequestCompleted) || (p8.getValue() == null)) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
                        this.mRequestCompleted = 0;
                        this.mLock.wait();
                    }
                } else {
                    v1_17 = 0;
                }
                return v1_17;
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        } else {
            throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'readVersion', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic;)I'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.readVersion():


    private int readVersion(android.bluetooth.BluetoothGatt p7, android.bluetooth.BluetoothGattCharacteristic p8)
    {
        if (this.mConnected) {
            if (!this.mAborted) {
                boolean v1_17;
                if (p8 != null) {
                    this.mReceivedData = 0;
                    this.mError = 0;
                    this.logi("Reading DFU version number...");
                    this.mService.sendLogBroadcast(1, "Reading DFU version number...");
                    p8.setValue(((byte[]) 0));
                    this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.readCharacteristic(").append(p8.getUuid()).append(")").toString());
                    p7.readCharacteristic(p8);
                    try {
                    } catch (InterruptedException v0) {
                        this.loge("Sleeping interrupted", v0);
                        if (this.mError == 0) {
                            if (this.mConnected) {
                                v1_17 = p8.getIntValue(18, 0).intValue();
                            } else {
                                throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
                            }
                        } else {
                            throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to read version number", this.mError);
                        }
                    }
                    while ((((!this.mRequestCompleted) || (p8.getValue() == null)) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
                        this.mRequestCompleted = 0;
                        this.mLock.wait();
                    }
                } else {
                    v1_17 = 0;
                }
                return v1_17;
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        } else {
            throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'readVersion', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic;)I'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.readVersion():


    private int readVersion(android.bluetooth.BluetoothGatt p7, android.bluetooth.BluetoothGattCharacteristic p8)
    {
        if (this.mConnected) {
            if (!this.mAborted) {
                boolean v1_17;
                if (p8 != null) {
                    this.mReceivedData = 0;
                    this.mError = 0;
                    this.logi("Reading DFU version number...");
                    this.mService.sendLogBroadcast(1, "Reading DFU version number...");
                    p8.setValue(((byte[]) 0));
                    this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.readCharacteristic(").append(p8.getUuid()).append(")").toString());
                    p7.readCharacteristic(p8);
                    try {
                    } catch (InterruptedException v0) {
                        this.loge("Sleeping interrupted", v0);
                        if (this.mError == 0) {
                            if (this.mConnected) {
                                v1_17 = p8.getIntValue(18, 0).intValue();
                            } else {
                                throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
                            }
                        } else {
                            throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to read version number", this.mError);
                        }
                    }
                    while ((((!this.mRequestCompleted) || (p8.getValue() == null)) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
                        this.mRequestCompleted = 0;
                        this.mLock.wait();
                    }
                } else {
                    v1_17 = 0;
                }
                return v1_17;
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        } else {
            throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'readVersion', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic;)I'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.readVersion():


    private int readVersion(android.bluetooth.BluetoothGatt p7, android.bluetooth.BluetoothGattCharacteristic p8)
    {
        if (this.mConnected) {
            if (!this.mAborted) {
                boolean v1_17;
                if (p8 != null) {
                    this.mReceivedData = 0;
                    this.mError = 0;
                    this.logi("Reading DFU version number...");
                    this.mService.sendLogBroadcast(1, "Reading DFU version number...");
                    p8.setValue(((byte[]) 0));
                    this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.readCharacteristic(").append(p8.getUuid()).append(")").toString());
                    p7.readCharacteristic(p8);
                    try {
                    } catch (InterruptedException v0) {
                        this.loge("Sleeping interrupted", v0);
                        if (this.mError == 0) {
                            if (this.mConnected) {
                                v1_17 = p8.getIntValue(18, 0).intValue();
                            } else {
                                throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
                            }
                        } else {
                            throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to read version number", this.mError);
                        }
                    }
                    while ((((!this.mRequestCompleted) || (p8.getValue() == null)) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
                        this.mRequestCompleted = 0;
                        this.mLock.wait();
                    }
                } else {
                    v1_17 = 0;
                }
                return v1_17;
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        } else {
            throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'Reading DFU version number...' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'readVersion', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic;)I'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value Reading DFU version number... to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.readVersion():


    private int readVersion(android.bluetooth.BluetoothGatt p7, android.bluetooth.BluetoothGattCharacteristic p8)
    {
        if (this.mConnected) {
            if (!this.mAborted) {
                boolean v1_17;
                if (p8 != null) {
                    this.mReceivedData = 0;
                    this.mError = 0;
                    this.logi("Reading DFU version number...");
                    this.mService.sendLogBroadcast(1, "Reading DFU version number...");
                    p8.setValue(((byte[]) 0));
                    this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.readCharacteristic(").append(p8.getUuid()).append(")").toString());
                    p7.readCharacteristic(p8);
                    try {
                    } catch (InterruptedException v0) {
                        this.loge("Sleeping interrupted", v0);
                        if (this.mError == 0) {
                            if (this.mConnected) {
                                v1_17 = p8.getIntValue(18, 0).intValue();
                            } else {
                                throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
                            }
                        } else {
                            throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to read version number", this.mError);
                        }
                    }
                    while ((((!this.mRequestCompleted) || (p8.getValue() == null)) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
                        this.mRequestCompleted = 0;
                        this.mLock.wait();
                    }
                } else {
                    v1_17 = 0;
                }
                return v1_17;
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        } else {
            throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'gatt.readCharacteristic(' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'readVersion', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic;)I'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.readCharacteristic( to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.readVersion():


    private int readVersion(android.bluetooth.BluetoothGatt p7, android.bluetooth.BluetoothGattCharacteristic p8)
    {
        if (this.mConnected) {
            if (!this.mAborted) {
                boolean v1_17;
                if (p8 != null) {
                    this.mReceivedData = 0;
                    this.mError = 0;
                    this.logi("Reading DFU version number...");
                    this.mService.sendLogBroadcast(1, "Reading DFU version number...");
                    p8.setValue(((byte[]) 0));
                    this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.readCharacteristic(").append(p8.getUuid()).append(")").toString());
                    p7.readCharacteristic(p8);
                    try {
                    } catch (InterruptedException v0) {
                        this.loge("Sleeping interrupted", v0);
                        if (this.mError == 0) {
                            if (this.mConnected) {
                                v1_17 = p8.getIntValue(18, 0).intValue();
                            } else {
                                throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
                            }
                        } else {
                            throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to read version number", this.mError);
                        }
                    }
                    while ((((!this.mRequestCompleted) || (p8.getValue() == null)) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
                        this.mRequestCompleted = 0;
                        this.mLock.wait();
                    }
                } else {
                    v1_17 = 0;
                }
                return v1_17;
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        } else {
            throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/LegacyButtonlessDfuImpl;', 'readVersion', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic;)I'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.LegacyButtonlessDfuImpl.readVersion():


    private int readVersion(android.bluetooth.BluetoothGatt p7, android.bluetooth.BluetoothGattCharacteristic p8)
    {
        if (this.mConnected) {
            if (!this.mAborted) {
                boolean v1_17;
                if (p8 != null) {
                    this.mReceivedData = 0;
                    this.mError = 0;
                    this.logi("Reading DFU version number...");
                    this.mService.sendLogBroadcast(1, "Reading DFU version number...");
                    p8.setValue(((byte[]) 0));
                    this.mService.sendLogBroadcast(0, new StringBuilder().append("gatt.readCharacteristic(").append(p8.getUuid()).append(")").toString());
                    p7.readCharacteristic(p8);
                    try {
                    } catch (InterruptedException v0) {
                        this.loge("Sleeping interrupted", v0);
                        if (this.mError == 0) {
                            if (this.mConnected) {
                                v1_17 = p8.getIntValue(18, 0).intValue();
                            } else {
                                throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
                            }
                        } else {
                            throw new no.nordicsemi.android.dfu.internal.exception.DfuException("Unable to read version number", this.mError);
                        }
                    }
                    while ((((!this.mRequestCompleted) || (p8.getValue() == null)) && ((this.mConnected) && ((this.mError == 0) && (!this.mAborted)))) || (this.mPaused)) {
                        this.mRequestCompleted = 0;
                        this.mLock.wait();
                    }
                } else {
                    v1_17 = 0;
                }
                return v1_17;
            } else {
                throw new no.nordicsemi.android.dfu.internal.exception.UploadAbortedException();
            }
        } else {
            throw new no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException("Unable to read version number: device disconnected");
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ExperimentalButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.ExperimentalButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p2)
    {
        this.logi("Experimental buttonless service found -> SDK 12.x");
        super.performDfu(p2);
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ExperimentalButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.ExperimentalButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p2)
    {
        this.logi("Experimental buttonless service found -> SDK 12.x");
        super.performDfu(p2);
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ExperimentalButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.ExperimentalButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p2)
    {
        this.logi("Experimental buttonless service found -> SDK 12.x");
        super.performDfu(p2);
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ExperimentalButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.ExperimentalButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p2)
    {
        this.logi("Experimental buttonless service found -> SDK 12.x");
        super.performDfu(p2);
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'Jumping to the DFU Bootloader...' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ExperimentalButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value Jumping to the DFU Bootloader... to construct an Intent

Method no.nordicsemi.android.dfu.ExperimentalButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p2)
    {
        this.logi("Experimental buttonless service found -> SDK 12.x");
        super.performDfu(p2);
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuServiceController;', 'resume', '()V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION to construct an Intent

Method no.nordicsemi.android.dfu.DfuServiceController.resume():


    public void resume()
    {
        if ((!this.mAborted) && (this.mPaused)) {
            this.mPaused = 0;
            android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION");
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ACTION", 1);
            this.mBroadcastManager.sendBroadcast(v0_1);
        }
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_ACTION' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuServiceController;', 'resume', '()V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_ACTION to construct an Intent

Method no.nordicsemi.android.dfu.DfuServiceController.resume():


    public void resume()
    {
        if ((!this.mAborted) && (this.mPaused)) {
            this.mPaused = 0;
            android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION");
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ACTION", 1);
            this.mBroadcastManager.sendBroadcast(v0_1);
        }
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuServiceController;', 'pause', '()V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION to construct an Intent

Method no.nordicsemi.android.dfu.DfuServiceController.pause():


    public void pause()
    {
        if ((!this.mAborted) && (!this.mPaused)) {
            this.mPaused = 1;
            android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION");
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ACTION", 0);
            this.mBroadcastManager.sendBroadcast(v0_1);
        }
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_ACTION' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuServiceController;', 'pause', '()V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_ACTION to construct an Intent

Method no.nordicsemi.android.dfu.DfuServiceController.pause():


    public void pause()
    {
        if ((!this.mAborted) && (!this.mPaused)) {
            this.mPaused = 1;
            android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION");
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ACTION", 0);
            this.mBroadcastManager.sendBroadcast(v0_1);
        }
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuServiceController;', 'abort', '()V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION to construct an Intent

Method no.nordicsemi.android.dfu.DfuServiceController.abort():


    public void abort()
    {
        if (!this.mAborted) {
            this.mAborted = 1;
            this.mPaused = 0;
            android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION");
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ACTION", 2);
            this.mBroadcastManager.sendBroadcast(v0_1);
        }
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_ACTION' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuServiceController;', 'abort', '()V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_ACTION to construct an Intent

Method no.nordicsemi.android.dfu.DfuServiceController.abort():


    public void abort()
    {
        if (!this.mAborted) {
            this.mAborted = 1;
            this.mPaused = 0;
            android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION");
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ACTION", 2);
            this.mBroadcastManager.sendBroadcast(v0_1);
        }
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService$5;', 'onConnectionStateChange', '(Landroid/bluetooth/BluetoothGatt; I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService$5.onConnectionStateChange():


    public void onConnectionStateChange(android.bluetooth.BluetoothGatt p7, int p8, int p9)
    {
        if (p8 != 0) {
            if ((p8 != 8) && (p8 != 19)) {
                no.nordicsemi.android.dfu.DfuBaseService.access$600(this.this$0, new StringBuilder().append("Connection state change error: ").append(p8).append(" newState: ").append(p9).toString());
            } else {
                no.nordicsemi.android.dfu.DfuBaseService.access$300(this.this$0, new StringBuilder().append("Target device disconnected with status: ").append(p8).toString());
            }
            no.nordicsemi.android.dfu.DfuBaseService.access$502(this.this$0, (32768 | p8));
            if (p9 != 0) {
                no.nordicsemi.android.dfu.DfuBaseService.access$700(this.this$0);
                no.nordicsemi.android.dfu.DfuBaseService.access$700(this.this$0).notifyAll();
            } else {
                this.this$0.mConnectionState = 0;
                if (no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0) == null) {
                } else {
                    no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0).getGattCallback().onDisconnected();
                }
            }
        } else {
            if (p9 != 2) {
                if (p9 != 0) {
                } else {
                    no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Disconnected from GATT server");
                    this.this$0.mConnectionState = 0;
                    if (no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0) == null) {
                    } else {
                        no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0).getGattCallback().onDisconnected();
                    }
                }
            } else {
                no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Connected to GATT server");
                this.this$0.sendLogBroadcast(5, new StringBuilder().append("Connected to ").append(no.nordicsemi.android.dfu.DfuBaseService.access$400(this.this$0)).toString());
                this.this$0.mConnectionState = -2;
                if (p7.getDevice().getBondState() == 12) {
                    no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Waiting 1600 ms for a possible Service Changed indication...");
                    this.this$0.waitFor(1600);
                }
                no.nordicsemi.android.dfu.DfuBaseService v1_4;
                this.this$0.sendLogBroadcast(1, "Discovering services...");
                this.this$0.sendLogBroadcast(0, "gatt.discoverServices()");
                boolean v0 = p7.discoverServices();
                int v2_3 = this.this$0;
                StringBuilder vtmp11 = new StringBuilder().append("Attempting to start service discovery... ");
                if (!v0) {
                    v1_4 = "failed";
                } else {
                    v1_4 = "succeed";
                }
                no.nordicsemi.android.dfu.DfuBaseService.access$000(v2_3, vtmp11.append(v1_4).toString());
                if (!v0) {
                    no.nordicsemi.android.dfu.DfuBaseService.access$502(this.this$0, 4101);
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'Discovering services...' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService$5;', 'onConnectionStateChange', '(Landroid/bluetooth/BluetoothGatt; I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value Discovering services... to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService$5.onConnectionStateChange():


    public void onConnectionStateChange(android.bluetooth.BluetoothGatt p7, int p8, int p9)
    {
        if (p8 != 0) {
            if ((p8 != 8) && (p8 != 19)) {
                no.nordicsemi.android.dfu.DfuBaseService.access$600(this.this$0, new StringBuilder().append("Connection state change error: ").append(p8).append(" newState: ").append(p9).toString());
            } else {
                no.nordicsemi.android.dfu.DfuBaseService.access$300(this.this$0, new StringBuilder().append("Target device disconnected with status: ").append(p8).toString());
            }
            no.nordicsemi.android.dfu.DfuBaseService.access$502(this.this$0, (32768 | p8));
            if (p9 != 0) {
                no.nordicsemi.android.dfu.DfuBaseService.access$700(this.this$0);
                no.nordicsemi.android.dfu.DfuBaseService.access$700(this.this$0).notifyAll();
            } else {
                this.this$0.mConnectionState = 0;
                if (no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0) == null) {
                } else {
                    no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0).getGattCallback().onDisconnected();
                }
            }
        } else {
            if (p9 != 2) {
                if (p9 != 0) {
                } else {
                    no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Disconnected from GATT server");
                    this.this$0.mConnectionState = 0;
                    if (no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0) == null) {
                    } else {
                        no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0).getGattCallback().onDisconnected();
                    }
                }
            } else {
                no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Connected to GATT server");
                this.this$0.sendLogBroadcast(5, new StringBuilder().append("Connected to ").append(no.nordicsemi.android.dfu.DfuBaseService.access$400(this.this$0)).toString());
                this.this$0.mConnectionState = -2;
                if (p7.getDevice().getBondState() == 12) {
                    no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Waiting 1600 ms for a possible Service Changed indication...");
                    this.this$0.waitFor(1600);
                }
                no.nordicsemi.android.dfu.DfuBaseService v1_4;
                this.this$0.sendLogBroadcast(1, "Discovering services...");
                this.this$0.sendLogBroadcast(0, "gatt.discoverServices()");
                boolean v0 = p7.discoverServices();
                int v2_3 = this.this$0;
                StringBuilder vtmp11 = new StringBuilder().append("Attempting to start service discovery... ");
                if (!v0) {
                    v1_4 = "failed";
                } else {
                    v1_4 = "succeed";
                }
                no.nordicsemi.android.dfu.DfuBaseService.access$000(v2_3, vtmp11.append(v1_4).toString());
                if (!v0) {
                    no.nordicsemi.android.dfu.DfuBaseService.access$502(this.this$0, 4101);
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService$5;', 'onConnectionStateChange', '(Landroid/bluetooth/BluetoothGatt; I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService$5.onConnectionStateChange():


    public void onConnectionStateChange(android.bluetooth.BluetoothGatt p7, int p8, int p9)
    {
        if (p8 != 0) {
            if ((p8 != 8) && (p8 != 19)) {
                no.nordicsemi.android.dfu.DfuBaseService.access$600(this.this$0, new StringBuilder().append("Connection state change error: ").append(p8).append(" newState: ").append(p9).toString());
            } else {
                no.nordicsemi.android.dfu.DfuBaseService.access$300(this.this$0, new StringBuilder().append("Target device disconnected with status: ").append(p8).toString());
            }
            no.nordicsemi.android.dfu.DfuBaseService.access$502(this.this$0, (32768 | p8));
            if (p9 != 0) {
                no.nordicsemi.android.dfu.DfuBaseService.access$700(this.this$0);
                no.nordicsemi.android.dfu.DfuBaseService.access$700(this.this$0).notifyAll();
            } else {
                this.this$0.mConnectionState = 0;
                if (no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0) == null) {
                } else {
                    no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0).getGattCallback().onDisconnected();
                }
            }
        } else {
            if (p9 != 2) {
                if (p9 != 0) {
                } else {
                    no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Disconnected from GATT server");
                    this.this$0.mConnectionState = 0;
                    if (no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0) == null) {
                    } else {
                        no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0).getGattCallback().onDisconnected();
                    }
                }
            } else {
                no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Connected to GATT server");
                this.this$0.sendLogBroadcast(5, new StringBuilder().append("Connected to ").append(no.nordicsemi.android.dfu.DfuBaseService.access$400(this.this$0)).toString());
                this.this$0.mConnectionState = -2;
                if (p7.getDevice().getBondState() == 12) {
                    no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Waiting 1600 ms for a possible Service Changed indication...");
                    this.this$0.waitFor(1600);
                }
                no.nordicsemi.android.dfu.DfuBaseService v1_4;
                this.this$0.sendLogBroadcast(1, "Discovering services...");
                this.this$0.sendLogBroadcast(0, "gatt.discoverServices()");
                boolean v0 = p7.discoverServices();
                int v2_3 = this.this$0;
                StringBuilder vtmp11 = new StringBuilder().append("Attempting to start service discovery... ");
                if (!v0) {
                    v1_4 = "failed";
                } else {
                    v1_4 = "succeed";
                }
                no.nordicsemi.android.dfu.DfuBaseService.access$000(v2_3, vtmp11.append(v1_4).toString());
                if (!v0) {
                    no.nordicsemi.android.dfu.DfuBaseService.access$502(this.this$0, 4101);
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService$5;', 'onConnectionStateChange', '(Landroid/bluetooth/BluetoothGatt; I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService$5.onConnectionStateChange():


    public void onConnectionStateChange(android.bluetooth.BluetoothGatt p7, int p8, int p9)
    {
        if (p8 != 0) {
            if ((p8 != 8) && (p8 != 19)) {
                no.nordicsemi.android.dfu.DfuBaseService.access$600(this.this$0, new StringBuilder().append("Connection state change error: ").append(p8).append(" newState: ").append(p9).toString());
            } else {
                no.nordicsemi.android.dfu.DfuBaseService.access$300(this.this$0, new StringBuilder().append("Target device disconnected with status: ").append(p8).toString());
            }
            no.nordicsemi.android.dfu.DfuBaseService.access$502(this.this$0, (32768 | p8));
            if (p9 != 0) {
                no.nordicsemi.android.dfu.DfuBaseService.access$700(this.this$0);
                no.nordicsemi.android.dfu.DfuBaseService.access$700(this.this$0).notifyAll();
            } else {
                this.this$0.mConnectionState = 0;
                if (no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0) == null) {
                } else {
                    no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0).getGattCallback().onDisconnected();
                }
            }
        } else {
            if (p9 != 2) {
                if (p9 != 0) {
                } else {
                    no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Disconnected from GATT server");
                    this.this$0.mConnectionState = 0;
                    if (no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0) == null) {
                    } else {
                        no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0).getGattCallback().onDisconnected();
                    }
                }
            } else {
                no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Connected to GATT server");
                this.this$0.sendLogBroadcast(5, new StringBuilder().append("Connected to ").append(no.nordicsemi.android.dfu.DfuBaseService.access$400(this.this$0)).toString());
                this.this$0.mConnectionState = -2;
                if (p7.getDevice().getBondState() == 12) {
                    no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Waiting 1600 ms for a possible Service Changed indication...");
                    this.this$0.waitFor(1600);
                }
                no.nordicsemi.android.dfu.DfuBaseService v1_4;
                this.this$0.sendLogBroadcast(1, "Discovering services...");
                this.this$0.sendLogBroadcast(0, "gatt.discoverServices()");
                boolean v0 = p7.discoverServices();
                int v2_3 = this.this$0;
                StringBuilder vtmp11 = new StringBuilder().append("Attempting to start service discovery... ");
                if (!v0) {
                    v1_4 = "failed";
                } else {
                    v1_4 = "succeed";
                }
                no.nordicsemi.android.dfu.DfuBaseService.access$000(v2_3, vtmp11.append(v1_4).toString());
                if (!v0) {
                    no.nordicsemi.android.dfu.DfuBaseService.access$502(this.this$0, 4101);
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'gatt.discoverServices()' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService$5;', 'onConnectionStateChange', '(Landroid/bluetooth/BluetoothGatt; I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.discoverServices() to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService$5.onConnectionStateChange():


    public void onConnectionStateChange(android.bluetooth.BluetoothGatt p7, int p8, int p9)
    {
        if (p8 != 0) {
            if ((p8 != 8) && (p8 != 19)) {
                no.nordicsemi.android.dfu.DfuBaseService.access$600(this.this$0, new StringBuilder().append("Connection state change error: ").append(p8).append(" newState: ").append(p9).toString());
            } else {
                no.nordicsemi.android.dfu.DfuBaseService.access$300(this.this$0, new StringBuilder().append("Target device disconnected with status: ").append(p8).toString());
            }
            no.nordicsemi.android.dfu.DfuBaseService.access$502(this.this$0, (32768 | p8));
            if (p9 != 0) {
                no.nordicsemi.android.dfu.DfuBaseService.access$700(this.this$0);
                no.nordicsemi.android.dfu.DfuBaseService.access$700(this.this$0).notifyAll();
            } else {
                this.this$0.mConnectionState = 0;
                if (no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0) == null) {
                } else {
                    no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0).getGattCallback().onDisconnected();
                }
            }
        } else {
            if (p9 != 2) {
                if (p9 != 0) {
                } else {
                    no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Disconnected from GATT server");
                    this.this$0.mConnectionState = 0;
                    if (no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0) == null) {
                    } else {
                        no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0).getGattCallback().onDisconnected();
                    }
                }
            } else {
                no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Connected to GATT server");
                this.this$0.sendLogBroadcast(5, new StringBuilder().append("Connected to ").append(no.nordicsemi.android.dfu.DfuBaseService.access$400(this.this$0)).toString());
                this.this$0.mConnectionState = -2;
                if (p7.getDevice().getBondState() == 12) {
                    no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Waiting 1600 ms for a possible Service Changed indication...");
                    this.this$0.waitFor(1600);
                }
                no.nordicsemi.android.dfu.DfuBaseService v1_4;
                this.this$0.sendLogBroadcast(1, "Discovering services...");
                this.this$0.sendLogBroadcast(0, "gatt.discoverServices()");
                boolean v0 = p7.discoverServices();
                int v2_3 = this.this$0;
                StringBuilder vtmp11 = new StringBuilder().append("Attempting to start service discovery... ");
                if (!v0) {
                    v1_4 = "failed";
                } else {
                    v1_4 = "succeed";
                }
                no.nordicsemi.android.dfu.DfuBaseService.access$000(v2_3, vtmp11.append(v1_4).toString());
                if (!v0) {
                    no.nordicsemi.android.dfu.DfuBaseService.access$502(this.this$0, 4101);
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService$5;', 'onConnectionStateChange', '(Landroid/bluetooth/BluetoothGatt; I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService$5.onConnectionStateChange():


    public void onConnectionStateChange(android.bluetooth.BluetoothGatt p7, int p8, int p9)
    {
        if (p8 != 0) {
            if ((p8 != 8) && (p8 != 19)) {
                no.nordicsemi.android.dfu.DfuBaseService.access$600(this.this$0, new StringBuilder().append("Connection state change error: ").append(p8).append(" newState: ").append(p9).toString());
            } else {
                no.nordicsemi.android.dfu.DfuBaseService.access$300(this.this$0, new StringBuilder().append("Target device disconnected with status: ").append(p8).toString());
            }
            no.nordicsemi.android.dfu.DfuBaseService.access$502(this.this$0, (32768 | p8));
            if (p9 != 0) {
                no.nordicsemi.android.dfu.DfuBaseService.access$700(this.this$0);
                no.nordicsemi.android.dfu.DfuBaseService.access$700(this.this$0).notifyAll();
            } else {
                this.this$0.mConnectionState = 0;
                if (no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0) == null) {
                } else {
                    no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0).getGattCallback().onDisconnected();
                }
            }
        } else {
            if (p9 != 2) {
                if (p9 != 0) {
                } else {
                    no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Disconnected from GATT server");
                    this.this$0.mConnectionState = 0;
                    if (no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0) == null) {
                    } else {
                        no.nordicsemi.android.dfu.DfuBaseService.access$100(this.this$0).getGattCallback().onDisconnected();
                    }
                }
            } else {
                no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Connected to GATT server");
                this.this$0.sendLogBroadcast(5, new StringBuilder().append("Connected to ").append(no.nordicsemi.android.dfu.DfuBaseService.access$400(this.this$0)).toString());
                this.this$0.mConnectionState = -2;
                if (p7.getDevice().getBondState() == 12) {
                    no.nordicsemi.android.dfu.DfuBaseService.access$000(this.this$0, "Waiting 1600 ms for a possible Service Changed indication...");
                    this.this$0.waitFor(1600);
                }
                no.nordicsemi.android.dfu.DfuBaseService v1_4;
                this.this$0.sendLogBroadcast(1, "Discovering services...");
                this.this$0.sendLogBroadcast(0, "gatt.discoverServices()");
                boolean v0 = p7.discoverServices();
                int v2_3 = this.this$0;
                StringBuilder vtmp11 = new StringBuilder().append("Attempting to start service discovery... ");
                if (!v0) {
                    v1_4 = "failed";
                } else {
                    v1_4 = "succeed";
                }
                no.nordicsemi.android.dfu.DfuBaseService.access$000(v2_3, vtmp11.append(v1_4).toString());
                if (!v0) {
                    no.nordicsemi.android.dfu.DfuBaseService.access$502(this.this$0, 4101);
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithoutBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithoutBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p2)
    {
        this.logi("Buttonless service without bond sharing found -> SDK 13 or newer");
        if (this.isBonded()) {
            this.logw("Device is paired! Use Buttonless DFU with Bond Sharing instead (SDK 14 or newer)");
        }
        super.performDfu(p2);
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithoutBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithoutBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p2)
    {
        this.logi("Buttonless service without bond sharing found -> SDK 13 or newer");
        if (this.isBonded()) {
            this.logw("Device is paired! Use Buttonless DFU with Bond Sharing instead (SDK 14 or newer)");
        }
        super.performDfu(p2);
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithoutBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithoutBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p2)
    {
        this.logi("Buttonless service without bond sharing found -> SDK 13 or newer");
        if (this.isBonded()) {
            this.logw("Device is paired! Use Buttonless DFU with Bond Sharing instead (SDK 14 or newer)");
        }
        super.performDfu(p2);
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithoutBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithoutBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p2)
    {
        this.logi("Buttonless service without bond sharing found -> SDK 13 or newer");
        if (this.isBonded()) {
            this.logw("Device is paired! Use Buttonless DFU with Bond Sharing instead (SDK 14 or newer)");
        }
        super.performDfu(p2);
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'Jumping to the DFU Bootloader...' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithoutBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value Jumping to the DFU Bootloader... to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithoutBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p2)
    {
        this.logi("Buttonless service without bond sharing found -> SDK 13 or newer");
        if (this.isBonded()) {
            this.logw("Device is paired! Use Buttonless DFU with Bond Sharing instead (SDK 14 or newer)");
        }
        super.performDfu(p2);
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'Disconnecting...' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'disconnect', '(Landroid/bluetooth/BluetoothGatt;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value Disconnecting... to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.disconnect():


    protected void disconnect(android.bluetooth.BluetoothGatt p3)
    {
        if (this.mConnectionState != 0) {
            this.sendLogBroadcast(1, "Disconnecting...");
            this.mProgressInfo.setProgress(-5);
            this.mConnectionState = -4;
            this.logi("Disconnecting from the device...");
            this.sendLogBroadcast(0, "gatt.disconnect()");
            p3.disconnect();
            this.waitUntilDisconnected();
            this.sendLogBroadcast(5, "Disconnected");
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'gatt.refresh() (hidden)' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'refreshDeviceCache', '(Landroid/bluetooth/BluetoothGatt; Z)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.refresh() (hidden) to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.refreshDeviceCache():


    protected void refreshDeviceCache(android.bluetooth.BluetoothGatt p7, boolean p8)
    {
        if ((p8) || (p7.getDevice().getBondState() == 10)) {
            this.sendLogBroadcast(0, "gatt.refresh() (hidden)");
            try {
                Class[] v5_2 = new Class[0];
                reflect.Method v1 = p7.getClass().getMethod("refresh", v5_2);
            } catch (Exception v0) {
                this.loge("An exception occurred while refreshing device", v0);
                this.sendLogBroadcast(15, "Refreshing failed");
            }
            if (v1 != null) {
                String v3_2 = new Object[0];
                this.logi(new StringBuilder().append("Refreshing result: ").append(((Boolean) v1.invoke(p7, v3_2)).booleanValue()).toString());
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'report', '(I)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.report():


    private void report(int p11)
    {
        this.sendErrorBroadcast(p11);
        if (!this.mDisableNotification) {
            String v2;
            String v1 = this.mDeviceAddress;
            if (this.mDeviceName == null) {
                v2 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
            } else {
                v2 = this.mDeviceName;
            }
            android.support.v4.app.NotificationCompat$Builder v0 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1).setColor(-65536).setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error_msg)).setAutoCancel(1);
            android.content.Intent v3_1 = new android.content.Intent(this, this.getNotificationTarget());
            v3_1.addFlags(268435456);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v1);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v2);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", p11);
            v0.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v3_1, 134217728));
            this.updateErrorNotification(v0);
            ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v0.build());
        }
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'Jumping to the DFU Bootloader...' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value Jumping to the DFU Bootloader... to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Z)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Z)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Z)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Z)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'gatt.disconnect()' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'disconnect', '(Landroid/bluetooth/BluetoothGatt;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.disconnect() to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.disconnect():


    protected void disconnect(android.bluetooth.BluetoothGatt p3)
    {
        if (this.mConnectionState != 0) {
            this.sendLogBroadcast(1, "Disconnecting...");
            this.mProgressInfo.setProgress(-5);
            this.mConnectionState = -4;
            this.logi("Disconnecting from the device...");
            this.sendLogBroadcast(0, "gatt.disconnect()");
            p3.disconnect();
            this.waitUntilDisconnected();
            this.sendLogBroadcast(5, "Disconnected");
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'report', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendErrorBroadcast', '(I)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.report():


    private void report(int p11)
    {
        this.sendErrorBroadcast(p11);
        if (!this.mDisableNotification) {
            String v2;
            String v1 = this.mDeviceAddress;
            if (this.mDeviceName == null) {
                v2 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
            } else {
                v2 = this.mDeviceName;
            }
            android.support.v4.app.NotificationCompat$Builder v0 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1).setColor(-65536).setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error_msg)).setAutoCancel(1);
            android.content.Intent v3_1 = new android.content.Intent(this, this.getNotificationTarget());
            v3_1.addFlags(268435456);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v1);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v2);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", p11);
            v0.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v3_1, 134217728));
            this.updateErrorNotification(v0);
            ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v0.build());
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendErrorBroadcast():


    private void sendErrorBroadcast(int p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR");
        if ((p4 & 16384) <= 0) {
            if ((32768 & p4) <= 0) {
                if ((p4 & 8192) <= 0) {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4);
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 0);
                } else {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -8193));
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 3);
                }
            } else {
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (-32769 & p4));
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 1);
            }
        } else {
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -16385));
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 2);
        }
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'gatt.close()' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'close', '(Landroid/bluetooth/BluetoothGatt;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.close() to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.close():


    protected void close(android.bluetooth.BluetoothGatt p3)
    {
        this.logi("Cleaning up...");
        this.sendLogBroadcast(0, "gatt.close()");
        p3.close();
        this.mConnectionState = -5;
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DATA' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'report', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendErrorBroadcast', '(I)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DATA to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.report():


    private void report(int p11)
    {
        this.sendErrorBroadcast(p11);
        if (!this.mDisableNotification) {
            String v2;
            String v1 = this.mDeviceAddress;
            if (this.mDeviceName == null) {
                v2 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
            } else {
                v2 = this.mDeviceName;
            }
            android.support.v4.app.NotificationCompat$Builder v0 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1).setColor(-65536).setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error_msg)).setAutoCancel(1);
            android.content.Intent v3_1 = new android.content.Intent(this, this.getNotificationTarget());
            v3_1.addFlags(268435456);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v1);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v2);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", p11);
            v0.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v3_1, 134217728));
            this.updateErrorNotification(v0);
            ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v0.build());
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendErrorBroadcast():


    private void sendErrorBroadcast(int p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR");
        if ((p4 & 16384) <= 0) {
            if ((32768 & p4) <= 0) {
                if ((p4 & 8192) <= 0) {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4);
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 0);
                } else {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -8193));
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 3);
                }
            } else {
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (-32769 & p4));
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 1);
            }
        } else {
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -16385));
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 2);
        }
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'report', '(I)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.report():


    private void report(int p11)
    {
        this.sendErrorBroadcast(p11);
        if (!this.mDisableNotification) {
            String v2;
            String v1 = this.mDeviceAddress;
            if (this.mDeviceName == null) {
                v2 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
            } else {
                v2 = this.mDeviceName;
            }
            android.support.v4.app.NotificationCompat$Builder v0 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1).setColor(-65536).setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error_msg)).setAutoCancel(1);
            android.content.Intent v3_1 = new android.content.Intent(this, this.getNotificationTarget());
            v3_1.addFlags(268435456);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v1);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v2);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", p11);
            v0.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v3_1, 134217728));
            this.updateErrorNotification(v0);
            ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v0.build());
        }
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuWithBondSharingImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'terminateConnection', '(Landroid/bluetooth/BluetoothGatt; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'report', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendErrorBroadcast', '(I)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuWithBondSharingImpl.performDfu():


    public void performDfu(android.content.Intent p4)
    {
        this.logi("Buttonless service with bond sharing found -> SDK 14 or newer");
        if (this.isBonded()) {
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_KEEP_BOND", 1);
            p4.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_RESTORE_BOND", 0);
            super.performDfu(p4);
        } else {
            this.logw("Device is not paired, cancelling DFU");
            this.mService.sendLogBroadcast(15, "Device is not bonded");
            this.mService.terminateConnection(this.mGatt, 4110);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.terminateConnection():


    protected void terminateConnection(android.bluetooth.BluetoothGatt p2, int p3)
    {
        if (this.mConnectionState != 0) {
            this.disconnect(p2);
        }
        this.refreshDeviceCache(p2, 0);
        this.close(p2);
        this.waitFor(600);
        if (p3 != 0) {
            this.report(p3);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.report():


    private void report(int p11)
    {
        this.sendErrorBroadcast(p11);
        if (!this.mDisableNotification) {
            String v2;
            String v1 = this.mDeviceAddress;
            if (this.mDeviceName == null) {
                v2 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
            } else {
                v2 = this.mDeviceName;
            }
            android.support.v4.app.NotificationCompat$Builder v0 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1).setColor(-65536).setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error_msg)).setAutoCancel(1);
            android.content.Intent v3_1 = new android.content.Intent(this, this.getNotificationTarget());
            v3_1.addFlags(268435456);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v1);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v2);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", p11);
            v0.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v3_1, 134217728));
            this.updateErrorNotification(v0);
            ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v0.build());
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendErrorBroadcast():


    private void sendErrorBroadcast(int p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR");
        if ((p4 & 16384) <= 0) {
            if ((32768 & p4) <= 0) {
                if ((p4 & 8192) <= 0) {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4);
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 0);
                } else {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -8193));
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 3);
                }
            } else {
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (-32769 & p4));
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 1);
            }
        } else {
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -16385));
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 2);
        }
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'Jumping to the DFU Bootloader...' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value Jumping to the DFU Bootloader... to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/ButtonlessDfuImpl;', 'performDfu', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.ButtonlessDfuImpl.performDfu():


    public void performDfu(android.content.Intent p15)
    {
        no.nordicsemi.android.dfu.DfuBaseService v7_17;
        this.mProgressInfo.setProgress(-2);
        this.mService.waitFor(1000);
        android.bluetooth.BluetoothGatt v3 = this.mGatt;
        this.mService.sendLogBroadcast(15, "Application with buttonless update found");
        this.mService.sendLogBroadcast(1, "Jumping to the DFU Bootloader...");
        android.bluetooth.BluetoothGattCharacteristic v0 = this.getButtonlessDfuCharacteristic();
        int v6 = this.getResponseType();
        this.enableCCCD(v0, this.getResponseType());
        String v8_9 = this.mService;
        String v10_2 = new StringBuilder();
        if (v6 != 2) {
            v7_17 = "Notifications";
        } else {
            v7_17 = "Indications";
        }
        v8_9.sendLogBroadcast(10, v10_2.append(v7_17).append(" enabled").toString());
        this.mService.waitFor(1000);
        try {
            this.mProgressInfo.setProgress(-3);
            this.logi("Sending Enter Bootloader (Op Code = 1)");
            this.writeOpCode(v0, no.nordicsemi.android.dfu.ButtonlessDfuImpl.OP_CODE_ENTER_BOOTLOADER, 1);
            this.mService.sendLogBroadcast(10, "Enter bootloader sent (Op Code = 1)");
            try {
                byte[] v4 = this.readNotificationResponse();
            } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1) {
                v4 = this.mReceivedData;
            }
            if (v4 == null) {
                this.logi("Device disconnected before receiving notification");
            } else {
                int v5 = this.getStatusCode(v4, 1);
                this.logi(new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                this.mService.sendLogBroadcast(10, new StringBuilder().append("Response received (Op Code = ").append(v4[1]).append(", Status = ").append(v5).append(")").toString());
                if (v5 == 1) {
                    this.mService.waitUntilDisconnected();
                } else {
                    throw new no.nordicsemi.android.dfu.internal.exception.RemoteDfuException("Device returned error after sending Enter Bootloader", v5);
                }
            }
            this.mService.sendLogBroadcast(5, "Disconnected by the remote device");
            this.finalize(p15, 0, this.shouldScanForBootloader());
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_1) {
            this.loge(v1_1.getMessage());
            this.mService.sendLogBroadcast(20, v1_1.getMessage());
            this.mService.terminateConnection(v3, 4104);
            return;
        } catch (no.nordicsemi.android.dfu.internal.exception.DeviceDisconnectedException v1_0) {
            int v2 = (v1_0.getErrorNumber() | 2048);
            this.loge(v1_0.getMessage());
            no.nordicsemi.android.dfu.DfuBaseService v7_10 = this.mService;
            Object[] v11_1 = new Object[1];
            v11_1[0] = no.nordicsemi.android.error.SecureDfuError.parseButtonlessError(v2);
            v7_10.sendLogBroadcast(20, String.format(java.util.Locale.US, "Remote DFU error: %s", v11_1));
            this.mService.terminateConnection(v3, (v2 | 8192));
            return;
        }
    }

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseButtonlessDfuImpl$ButtonlessBluetoothCallback;', 'onCharacteristicChanged', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.BaseButtonlessDfuImpl$ButtonlessBluetoothCallback.onCharacteristicChanged():


    public void onCharacteristicChanged(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattCharacteristic p6)
    {
        this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Notification received from ").append(p6.getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
        this.this$0.mReceivedData = p6.getValue();
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseButtonlessDfuImpl$ButtonlessBluetoothCallback;', 'onCharacteristicChanged', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.BaseButtonlessDfuImpl$ButtonlessBluetoothCallback.onCharacteristicChanged():


    public void onCharacteristicChanged(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattCharacteristic p6)
    {
        this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Notification received from ").append(p6.getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
        this.this$0.mReceivedData = p6.getValue();
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseButtonlessDfuImpl$ButtonlessBluetoothCallback;', 'onCharacteristicChanged', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.BaseButtonlessDfuImpl$ButtonlessBluetoothCallback.onCharacteristicChanged():


    public void onCharacteristicChanged(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattCharacteristic p6)
    {
        this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Notification received from ").append(p6.getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
        this.this$0.mReceivedData = p6.getValue();
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseButtonlessDfuImpl$ButtonlessBluetoothCallback;', 'onCharacteristicChanged', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.BaseButtonlessDfuImpl$ButtonlessBluetoothCallback.onCharacteristicChanged():


    public void onCharacteristicChanged(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattCharacteristic p6)
    {
        this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Notification received from ").append(p6.getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
        this.this$0.mReceivedData = p6.getValue();
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onPhyUpdate', '(Landroid/bluetooth/BluetoothGatt; I I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onPhyUpdate():


    public void onPhyUpdate(android.bluetooth.BluetoothGatt p5, int p6, int p7, int p8)
    {
        if (p8 != 0) {
            this.this$0.logw(new StringBuilder().append("Updating PHY failed: ").append(p8).append(" (txPhy: ").append(p6).append(", rxPhy: ").append(p7).append(")").toString());
        } else {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("PHY updated (TX: ").append(this.phyToString(p6)).append(", RX: ").append(this.phyToString(p7)).append(")").toString());
            this.this$0.logi(new StringBuilder().append("PHY updated (TX: ").append(this.phyToString(p6)).append(", RX: ").append(this.phyToString(p7)).append(")").toString());
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onPhyUpdate', '(Landroid/bluetooth/BluetoothGatt; I I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onPhyUpdate():


    public void onPhyUpdate(android.bluetooth.BluetoothGatt p5, int p6, int p7, int p8)
    {
        if (p8 != 0) {
            this.this$0.logw(new StringBuilder().append("Updating PHY failed: ").append(p8).append(" (txPhy: ").append(p6).append(", rxPhy: ").append(p7).append(")").toString());
        } else {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("PHY updated (TX: ").append(this.phyToString(p6)).append(", RX: ").append(this.phyToString(p7)).append(")").toString());
            this.this$0.logi(new StringBuilder().append("PHY updated (TX: ").append(this.phyToString(p6)).append(", RX: ").append(this.phyToString(p7)).append(")").toString());
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onPhyUpdate', '(Landroid/bluetooth/BluetoothGatt; I I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onPhyUpdate():


    public void onPhyUpdate(android.bluetooth.BluetoothGatt p5, int p6, int p7, int p8)
    {
        if (p8 != 0) {
            this.this$0.logw(new StringBuilder().append("Updating PHY failed: ").append(p8).append(" (txPhy: ").append(p6).append(", rxPhy: ").append(p7).append(")").toString());
        } else {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("PHY updated (TX: ").append(this.phyToString(p6)).append(", RX: ").append(this.phyToString(p7)).append(")").toString());
            this.this$0.logi(new StringBuilder().append("PHY updated (TX: ").append(this.phyToString(p6)).append(", RX: ").append(this.phyToString(p7)).append(")").toString());
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onPhyUpdate', '(Landroid/bluetooth/BluetoothGatt; I I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onPhyUpdate():


    public void onPhyUpdate(android.bluetooth.BluetoothGatt p5, int p6, int p7, int p8)
    {
        if (p8 != 0) {
            this.this$0.logw(new StringBuilder().append("Updating PHY failed: ").append(p8).append(" (txPhy: ").append(p6).append(", rxPhy: ").append(p7).append(")").toString());
        } else {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("PHY updated (TX: ").append(this.phyToString(p6)).append(", RX: ").append(this.phyToString(p7)).append(")").toString());
            this.this$0.logi(new StringBuilder().append("PHY updated (TX: ").append(this.phyToString(p6)).append(", RX: ").append(this.phyToString(p7)).append(")").toString());
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onMtuChanged', '(Landroid/bluetooth/BluetoothGatt; I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onMtuChanged():


    public void onMtuChanged(android.bluetooth.BluetoothGatt p5, int p6, int p7)
    {
        if (p7 != 0) {
            this.this$0.logw(new StringBuilder().append("Changing MTU failed: ").append(p7).append(" (mtu: ").append(p6).append(")").toString());
            if ((p7 == 4) && ((no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0) > 23) && ((no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0) - 3) > this.this$0.mBuffer.length))) {
                String v1_13 = new byte[(no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0) - 3)];
                this.this$0.mBuffer = v1_13;
                this.this$0.logi(new StringBuilder().append("MTU restored to: ").append(no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0)).toString());
            }
        } else {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("MTU changed to: ").append(p6).toString());
            if ((p6 - 3) > this.this$0.mBuffer.length) {
                String v1_25 = new byte[(p6 - 3)];
                this.this$0.mBuffer = v1_25;
            }
            this.this$0.logi(new StringBuilder().append("MTU changed to: ").append(p6).toString());
        }
        this.this$0.mRequestCompleted = 1;
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onMtuChanged', '(Landroid/bluetooth/BluetoothGatt; I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onMtuChanged():


    public void onMtuChanged(android.bluetooth.BluetoothGatt p5, int p6, int p7)
    {
        if (p7 != 0) {
            this.this$0.logw(new StringBuilder().append("Changing MTU failed: ").append(p7).append(" (mtu: ").append(p6).append(")").toString());
            if ((p7 == 4) && ((no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0) > 23) && ((no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0) - 3) > this.this$0.mBuffer.length))) {
                String v1_13 = new byte[(no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0) - 3)];
                this.this$0.mBuffer = v1_13;
                this.this$0.logi(new StringBuilder().append("MTU restored to: ").append(no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0)).toString());
            }
        } else {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("MTU changed to: ").append(p6).toString());
            if ((p6 - 3) > this.this$0.mBuffer.length) {
                String v1_25 = new byte[(p6 - 3)];
                this.this$0.mBuffer = v1_25;
            }
            this.this$0.logi(new StringBuilder().append("MTU changed to: ").append(p6).toString());
        }
        this.this$0.mRequestCompleted = 1;
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onMtuChanged', '(Landroid/bluetooth/BluetoothGatt; I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onMtuChanged():


    public void onMtuChanged(android.bluetooth.BluetoothGatt p5, int p6, int p7)
    {
        if (p7 != 0) {
            this.this$0.logw(new StringBuilder().append("Changing MTU failed: ").append(p7).append(" (mtu: ").append(p6).append(")").toString());
            if ((p7 == 4) && ((no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0) > 23) && ((no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0) - 3) > this.this$0.mBuffer.length))) {
                String v1_13 = new byte[(no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0) - 3)];
                this.this$0.mBuffer = v1_13;
                this.this$0.logi(new StringBuilder().append("MTU restored to: ").append(no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0)).toString());
            }
        } else {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("MTU changed to: ").append(p6).toString());
            if ((p6 - 3) > this.this$0.mBuffer.length) {
                String v1_25 = new byte[(p6 - 3)];
                this.this$0.mBuffer = v1_25;
            }
            this.this$0.logi(new StringBuilder().append("MTU changed to: ").append(p6).toString());
        }
        this.this$0.mRequestCompleted = 1;
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onMtuChanged', '(Landroid/bluetooth/BluetoothGatt; I I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onMtuChanged():


    public void onMtuChanged(android.bluetooth.BluetoothGatt p5, int p6, int p7)
    {
        if (p7 != 0) {
            this.this$0.logw(new StringBuilder().append("Changing MTU failed: ").append(p7).append(" (mtu: ").append(p6).append(")").toString());
            if ((p7 == 4) && ((no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0) > 23) && ((no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0) - 3) > this.this$0.mBuffer.length))) {
                String v1_13 = new byte[(no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0) - 3)];
                this.this$0.mBuffer = v1_13;
                this.this$0.logi(new StringBuilder().append("MTU restored to: ").append(no.nordicsemi.android.dfu.BaseDfuImpl.access$000(this.this$0)).toString());
            }
        } else {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("MTU changed to: ").append(p6).toString());
            if ((p6 - 3) > this.this$0.mBuffer.length) {
                String v1_25 = new byte[(p6 - 3)];
                this.this$0.mBuffer = v1_25;
            }
            this.this$0.logi(new StringBuilder().append("MTU changed to: ").append(p6).toString());
        }
        this.this$0.mRequestCompleted = 1;
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'Data written to descr.' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onDescriptorWrite', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattDescriptor; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value Data written to descr. to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onDescriptorWrite():


    public void onDescriptorWrite(android.bluetooth.BluetoothGatt p6, android.bluetooth.BluetoothGattDescriptor p7, int p8)
    {
        if (p8 != 0) {
            this.this$0.loge(new StringBuilder().append("Descriptor write error: ").append(p8).toString());
            this.this$0.mError = (p8 | 16384);
        } else {
            if (no.nordicsemi.android.dfu.BaseDfuImpl.CLIENT_CHARACTERISTIC_CONFIG.equals(p7.getUuid())) {
                this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Data written to descr.").append(p7.getCharacteristic().getUuid()).append(", value (0x): ").append(this.parse(p7)).toString());
                if (!no.nordicsemi.android.dfu.BaseDfuImpl.SERVICE_CHANGED_UUID.equals(p7.getCharacteristic().getUuid())) {
                    this.this$0.mService.sendLogBroadcast(1, new StringBuilder().append("Notifications enabled for ").append(p7.getCharacteristic().getUuid()).toString());
                } else {
                    this.this$0.mService.sendLogBroadcast(1, new StringBuilder().append("Indications enabled for ").append(p7.getCharacteristic().getUuid()).toString());
                }
            }
        }
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onDescriptorWrite', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattDescriptor; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onDescriptorWrite():


    public void onDescriptorWrite(android.bluetooth.BluetoothGatt p6, android.bluetooth.BluetoothGattDescriptor p7, int p8)
    {
        if (p8 != 0) {
            this.this$0.loge(new StringBuilder().append("Descriptor write error: ").append(p8).toString());
            this.this$0.mError = (p8 | 16384);
        } else {
            if (no.nordicsemi.android.dfu.BaseDfuImpl.CLIENT_CHARACTERISTIC_CONFIG.equals(p7.getUuid())) {
                this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Data written to descr.").append(p7.getCharacteristic().getUuid()).append(", value (0x): ").append(this.parse(p7)).toString());
                if (!no.nordicsemi.android.dfu.BaseDfuImpl.SERVICE_CHANGED_UUID.equals(p7.getCharacteristic().getUuid())) {
                    this.this$0.mService.sendLogBroadcast(1, new StringBuilder().append("Notifications enabled for ").append(p7.getCharacteristic().getUuid()).toString());
                } else {
                    this.this$0.mService.sendLogBroadcast(1, new StringBuilder().append("Indications enabled for ").append(p7.getCharacteristic().getUuid()).toString());
                }
            }
        }
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onDescriptorWrite', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattDescriptor; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onDescriptorWrite():


    public void onDescriptorWrite(android.bluetooth.BluetoothGatt p6, android.bluetooth.BluetoothGattDescriptor p7, int p8)
    {
        if (p8 != 0) {
            this.this$0.loge(new StringBuilder().append("Descriptor write error: ").append(p8).toString());
            this.this$0.mError = (p8 | 16384);
        } else {
            if (no.nordicsemi.android.dfu.BaseDfuImpl.CLIENT_CHARACTERISTIC_CONFIG.equals(p7.getUuid())) {
                this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Data written to descr.").append(p7.getCharacteristic().getUuid()).append(", value (0x): ").append(this.parse(p7)).toString());
                if (!no.nordicsemi.android.dfu.BaseDfuImpl.SERVICE_CHANGED_UUID.equals(p7.getCharacteristic().getUuid())) {
                    this.this$0.mService.sendLogBroadcast(1, new StringBuilder().append("Notifications enabled for ").append(p7.getCharacteristic().getUuid()).toString());
                } else {
                    this.this$0.mService.sendLogBroadcast(1, new StringBuilder().append("Indications enabled for ").append(p7.getCharacteristic().getUuid()).toString());
                }
            }
        }
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onDescriptorWrite', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattDescriptor; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onDescriptorWrite():


    public void onDescriptorWrite(android.bluetooth.BluetoothGatt p6, android.bluetooth.BluetoothGattDescriptor p7, int p8)
    {
        if (p8 != 0) {
            this.this$0.loge(new StringBuilder().append("Descriptor write error: ").append(p8).toString());
            this.this$0.mError = (p8 | 16384);
        } else {
            if (no.nordicsemi.android.dfu.BaseDfuImpl.CLIENT_CHARACTERISTIC_CONFIG.equals(p7.getUuid())) {
                this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Data written to descr.").append(p7.getCharacteristic().getUuid()).append(", value (0x): ").append(this.parse(p7)).toString());
                if (!no.nordicsemi.android.dfu.BaseDfuImpl.SERVICE_CHANGED_UUID.equals(p7.getCharacteristic().getUuid())) {
                    this.this$0.mService.sendLogBroadcast(1, new StringBuilder().append("Notifications enabled for ").append(p7.getCharacteristic().getUuid()).toString());
                } else {
                    this.this$0.mService.sendLogBroadcast(1, new StringBuilder().append("Indications enabled for ").append(p7.getCharacteristic().getUuid()).toString());
                }
            }
        }
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onDescriptorWrite', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattDescriptor; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onDescriptorWrite():


    public void onDescriptorWrite(android.bluetooth.BluetoothGatt p6, android.bluetooth.BluetoothGattDescriptor p7, int p8)
    {
        if (p8 != 0) {
            this.this$0.loge(new StringBuilder().append("Descriptor write error: ").append(p8).toString());
            this.this$0.mError = (p8 | 16384);
        } else {
            if (no.nordicsemi.android.dfu.BaseDfuImpl.CLIENT_CHARACTERISTIC_CONFIG.equals(p7.getUuid())) {
                this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Data written to descr.").append(p7.getCharacteristic().getUuid()).append(", value (0x): ").append(this.parse(p7)).toString());
                if (!no.nordicsemi.android.dfu.BaseDfuImpl.SERVICE_CHANGED_UUID.equals(p7.getCharacteristic().getUuid())) {
                    this.this$0.mService.sendLogBroadcast(1, new StringBuilder().append("Notifications enabled for ").append(p7.getCharacteristic().getUuid()).toString());
                } else {
                    this.this$0.mService.sendLogBroadcast(1, new StringBuilder().append("Indications enabled for ").append(p7.getCharacteristic().getUuid()).toString());
                }
            }
        }
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onDescriptorRead', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattDescriptor; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onDescriptorRead():


    public void onDescriptorRead(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattDescriptor p6, int p7)
    {
        if (p7 != 0) {
            this.this$0.loge(new StringBuilder().append("Descriptor read error: ").append(p7).toString());
            this.this$0.mError = (p7 | 16384);
        } else {
            if (no.nordicsemi.android.dfu.BaseDfuImpl.CLIENT_CHARACTERISTIC_CONFIG.equals(p6.getUuid())) {
                this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Read Response received from descr.").append(p6.getCharacteristic().getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
                if (!no.nordicsemi.android.dfu.BaseDfuImpl.SERVICE_CHANGED_UUID.equals(p6.getCharacteristic().getUuid())) {
                    this.this$0.loge("Unknown descriptor read");
                } else {
                    this.this$0.mRequestCompleted = 1;
                }
            }
        }
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onDescriptorRead', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattDescriptor; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onDescriptorRead():


    public void onDescriptorRead(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattDescriptor p6, int p7)
    {
        if (p7 != 0) {
            this.this$0.loge(new StringBuilder().append("Descriptor read error: ").append(p7).toString());
            this.this$0.mError = (p7 | 16384);
        } else {
            if (no.nordicsemi.android.dfu.BaseDfuImpl.CLIENT_CHARACTERISTIC_CONFIG.equals(p6.getUuid())) {
                this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Read Response received from descr.").append(p6.getCharacteristic().getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
                if (!no.nordicsemi.android.dfu.BaseDfuImpl.SERVICE_CHANGED_UUID.equals(p6.getCharacteristic().getUuid())) {
                    this.this$0.loge("Unknown descriptor read");
                } else {
                    this.this$0.mRequestCompleted = 1;
                }
            }
        }
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onDescriptorRead', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattDescriptor; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onDescriptorRead():


    public void onDescriptorRead(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattDescriptor p6, int p7)
    {
        if (p7 != 0) {
            this.this$0.loge(new StringBuilder().append("Descriptor read error: ").append(p7).toString());
            this.this$0.mError = (p7 | 16384);
        } else {
            if (no.nordicsemi.android.dfu.BaseDfuImpl.CLIENT_CHARACTERISTIC_CONFIG.equals(p6.getUuid())) {
                this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Read Response received from descr.").append(p6.getCharacteristic().getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
                if (!no.nordicsemi.android.dfu.BaseDfuImpl.SERVICE_CHANGED_UUID.equals(p6.getCharacteristic().getUuid())) {
                    this.this$0.loge("Unknown descriptor read");
                } else {
                    this.this$0.mRequestCompleted = 1;
                }
            }
        }
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onDescriptorRead', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattDescriptor; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onDescriptorRead():


    public void onDescriptorRead(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattDescriptor p6, int p7)
    {
        if (p7 != 0) {
            this.this$0.loge(new StringBuilder().append("Descriptor read error: ").append(p7).toString());
            this.this$0.mError = (p7 | 16384);
        } else {
            if (no.nordicsemi.android.dfu.BaseDfuImpl.CLIENT_CHARACTERISTIC_CONFIG.equals(p6.getUuid())) {
                this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Read Response received from descr.").append(p6.getCharacteristic().getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
                if (!no.nordicsemi.android.dfu.BaseDfuImpl.SERVICE_CHANGED_UUID.equals(p6.getCharacteristic().getUuid())) {
                    this.this$0.loge("Unknown descriptor read");
                } else {
                    this.this$0.mRequestCompleted = 1;
                }
            }
        }
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'Read Response received from descr.' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onDescriptorRead', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattDescriptor; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value Read Response received from descr. to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onDescriptorRead():


    public void onDescriptorRead(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattDescriptor p6, int p7)
    {
        if (p7 != 0) {
            this.this$0.loge(new StringBuilder().append("Descriptor read error: ").append(p7).toString());
            this.this$0.mError = (p7 | 16384);
        } else {
            if (no.nordicsemi.android.dfu.BaseDfuImpl.CLIENT_CHARACTERISTIC_CONFIG.equals(p6.getUuid())) {
                this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Read Response received from descr.").append(p6.getCharacteristic().getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
                if (!no.nordicsemi.android.dfu.BaseDfuImpl.SERVICE_CHANGED_UUID.equals(p6.getCharacteristic().getUuid())) {
                    this.this$0.loge("Unknown descriptor read");
                } else {
                    this.this$0.mRequestCompleted = 1;
                }
            }
        }
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onCharacteristicRead', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onCharacteristicRead():


    public void onCharacteristicRead(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattCharacteristic p6, int p7)
    {
        if (p7 != 0) {
            this.this$0.loge(new StringBuilder().append("Characteristic read error: ").append(p7).toString());
            this.this$0.mError = (p7 | 16384);
        } else {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Read Response received from ").append(p6.getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
            this.this$0.mReceivedData = p6.getValue();
            this.this$0.mRequestCompleted = 1;
        }
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onCharacteristicRead', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onCharacteristicRead():


    public void onCharacteristicRead(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattCharacteristic p6, int p7)
    {
        if (p7 != 0) {
            this.this$0.loge(new StringBuilder().append("Characteristic read error: ").append(p7).toString());
            this.this$0.mError = (p7 | 16384);
        } else {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Read Response received from ").append(p6.getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
            this.this$0.mReceivedData = p6.getValue();
            this.this$0.mRequestCompleted = 1;
        }
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onCharacteristicRead', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onCharacteristicRead():


    public void onCharacteristicRead(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattCharacteristic p6, int p7)
    {
        if (p7 != 0) {
            this.this$0.loge(new StringBuilder().append("Characteristic read error: ").append(p7).toString());
            this.this$0.mError = (p7 | 16384);
        } else {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Read Response received from ").append(p6.getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
            this.this$0.mReceivedData = p6.getValue();
            this.this$0.mRequestCompleted = 1;
        }
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/BaseDfuImpl$BaseBluetoothGattCallback;', 'onCharacteristicRead', '(Landroid/bluetooth/BluetoothGatt; Landroid/bluetooth/BluetoothGattCharacteristic; I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.BaseDfuImpl$BaseBluetoothGattCallback.onCharacteristicRead():


    public void onCharacteristicRead(android.bluetooth.BluetoothGatt p5, android.bluetooth.BluetoothGattCharacteristic p6, int p7)
    {
        if (p7 != 0) {
            this.this$0.loge(new StringBuilder().append("Characteristic read error: ").append(p7).toString());
            this.this$0.mError = (p7 | 16384);
        } else {
            this.this$0.mService.sendLogBroadcast(5, new StringBuilder().append("Read Response received from ").append(p6.getUuid()).append(", value (0x): ").append(this.parse(p6)).toString());
            this.this$0.mReceivedData = p6.getValue();
            this.this$0.mRequestCompleted = 1;
        }
        this.this$0.notifyLock();
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'waitFor', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.waitFor():


    protected void waitFor(int p7)
    {
        try {
            this.sendLogBroadcast(0, new StringBuilder().append("wait(").append(p7).append(")").toString());
            this.mLock.wait(((long) p7));
        } catch (String v1_3) {
            throw v1_3;
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_ACTION' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '(Landroid/support/v4/app/NotificationCompat$Builder; I)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_ACTION to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    protected void updateProgressNotification(android.support.v4.app.NotificationCompat$Builder p5, int p6)
    {
        if ((p6 != -7) && (p6 != -6)) {
            android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION");
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ACTION", 2);
            p5.addAction(no.nordicsemi.android.dfu.R$drawable.ic_action_notify_cancel, this.getString(no.nordicsemi.android.dfu.R$string.dfu_action_abort), android.app.PendingIntent.getBroadcast(this, 1, v0_1, 134217728));
        }
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '(Landroid/support/v4/app/NotificationCompat$Builder; I)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    protected void updateProgressNotification(android.support.v4.app.NotificationCompat$Builder p5, int p6)
    {
        if ((p6 != -7) && (p6 != -6)) {
            android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION");
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ACTION", 2);
            p5.addAction(no.nordicsemi.android.dfu.R$drawable.ic_action_notify_cancel, this.getString(no.nordicsemi.android.dfu.R$string.dfu_action_abort), android.app.PendingIntent.getBroadcast(this, 1, v0_1, 134217728));
        }
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '()V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    public void updateProgressNotification()
    {
        no.nordicsemi.android.dfu.DfuProgressInfo v5 = this.mProgressInfo;
        int v11 = v5.getProgress();
        if (this.mLastProgress != v11) {
            this.mLastProgress = v11;
            this.sendProgressBroadcast(v5);
            if (!this.mDisableNotification) {
                long v8 = android.os.SystemClock.elapsedRealtime();
                if (((v8 - this.mLastNotificationTime) >= 250) || ((-6 == v11) || (-7 == v11))) {
                    String v4;
                    this.mLastNotificationTime = v8;
                    String v3 = this.mDeviceAddress;
                    if (this.mDeviceName == null) {
                        v4 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
                    } else {
                        v4 = this.mDeviceName;
                    }
                    android.support.v4.app.NotificationCompat$Builder v2 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1);
                    v2.setColor(-7829368);
                    switch (v11) {
                        case -7:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted_msg)).setAutoCancel(1);
                            break;
                        case -6:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed_msg)).setAutoCancel(1).setColor(-16730086);
                            break;
                        case -5:
                            android.support.v4.app.NotificationCompat$Builder v14_9 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting));
                            int v0_8 = new Object[1];
                            int v16_3 = v0_8;
                            v16_3[0] = v4;
                            v14_9.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting_msg, v16_3)).setProgress(100, 0, 1);
                            break;
                        case -4:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating_msg)).setProgress(100, 0, 1);
                            break;
                        case -3:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu_msg)).setProgress(100, 0, 1);
                            break;
                        case -2:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting_msg)).setProgress(100, 0, 1);
                            break;
                        case -1:
                            android.support.v4.app.NotificationCompat$Builder v14_52 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting));
                            int v0_32 = new Object[1];
                            int v16_11 = v0_32;
                            v16_11[0] = v4;
                            v14_52.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting_msg, v16_11)).setProgress(100, 0, 1);
                            break;
                        default:
                            String v13;
                            if (v5.getTotalParts() != 1) {
                                int v15_30 = new Object[2];
                                v15_30[0] = Integer.valueOf(v5.getCurrentPart());
                                v15_30[1] = Integer.valueOf(v5.getTotalParts());
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_part, v15_30);
                            } else {
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading);
                            }
                            int v15_32 = new Object[1];
                            v15_32[0] = v4;
                            v2.setOngoing(1).setContentTitle(v13).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_msg, v15_32)).setProgress(100, v11, 0);
                    }
                    android.content.Intent v6_1 = new android.content.Intent(this, this.getNotificationTarget());
                    v6_1.addFlags(268435456);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v3);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v4);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", v11);
                    v2.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v6_1, 134217728));
                    this.updateProgressNotification(v2, v11);
                    ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v2.build());
                }
            }
        }
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '()V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    public void updateProgressNotification()
    {
        no.nordicsemi.android.dfu.DfuProgressInfo v5 = this.mProgressInfo;
        int v11 = v5.getProgress();
        if (this.mLastProgress != v11) {
            this.mLastProgress = v11;
            this.sendProgressBroadcast(v5);
            if (!this.mDisableNotification) {
                long v8 = android.os.SystemClock.elapsedRealtime();
                if (((v8 - this.mLastNotificationTime) >= 250) || ((-6 == v11) || (-7 == v11))) {
                    String v4;
                    this.mLastNotificationTime = v8;
                    String v3 = this.mDeviceAddress;
                    if (this.mDeviceName == null) {
                        v4 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
                    } else {
                        v4 = this.mDeviceName;
                    }
                    android.support.v4.app.NotificationCompat$Builder v2 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1);
                    v2.setColor(-7829368);
                    switch (v11) {
                        case -7:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted_msg)).setAutoCancel(1);
                            break;
                        case -6:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed_msg)).setAutoCancel(1).setColor(-16730086);
                            break;
                        case -5:
                            android.support.v4.app.NotificationCompat$Builder v14_9 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting));
                            int v0_8 = new Object[1];
                            int v16_3 = v0_8;
                            v16_3[0] = v4;
                            v14_9.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting_msg, v16_3)).setProgress(100, 0, 1);
                            break;
                        case -4:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating_msg)).setProgress(100, 0, 1);
                            break;
                        case -3:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu_msg)).setProgress(100, 0, 1);
                            break;
                        case -2:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting_msg)).setProgress(100, 0, 1);
                            break;
                        case -1:
                            android.support.v4.app.NotificationCompat$Builder v14_52 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting));
                            int v0_32 = new Object[1];
                            int v16_11 = v0_32;
                            v16_11[0] = v4;
                            v14_52.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting_msg, v16_11)).setProgress(100, 0, 1);
                            break;
                        default:
                            String v13;
                            if (v5.getTotalParts() != 1) {
                                int v15_30 = new Object[2];
                                v15_30[0] = Integer.valueOf(v5.getCurrentPart());
                                v15_30[1] = Integer.valueOf(v5.getTotalParts());
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_part, v15_30);
                            } else {
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading);
                            }
                            int v15_32 = new Object[1];
                            v15_32[0] = v4;
                            v2.setOngoing(1).setContentTitle(v13).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_msg, v15_32)).setProgress(100, v11, 0);
                    }
                    android.content.Intent v6_1 = new android.content.Intent(this, this.getNotificationTarget());
                    v6_1.addFlags(268435456);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v3);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v4);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", v11);
                    v2.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v6_1, 134217728));
                    this.updateProgressNotification(v2, v11);
                    ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v2.build());
                }
            }
        }
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_PART_CURRENT' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '()V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendProgressBroadcast', '(Lno/nordicsemi/android/dfu/DfuProgressInfo;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_PART_CURRENT to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    public void updateProgressNotification()
    {
        no.nordicsemi.android.dfu.DfuProgressInfo v5 = this.mProgressInfo;
        int v11 = v5.getProgress();
        if (this.mLastProgress != v11) {
            this.mLastProgress = v11;
            this.sendProgressBroadcast(v5);
            if (!this.mDisableNotification) {
                long v8 = android.os.SystemClock.elapsedRealtime();
                if (((v8 - this.mLastNotificationTime) >= 250) || ((-6 == v11) || (-7 == v11))) {
                    String v4;
                    this.mLastNotificationTime = v8;
                    String v3 = this.mDeviceAddress;
                    if (this.mDeviceName == null) {
                        v4 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
                    } else {
                        v4 = this.mDeviceName;
                    }
                    android.support.v4.app.NotificationCompat$Builder v2 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1);
                    v2.setColor(-7829368);
                    switch (v11) {
                        case -7:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted_msg)).setAutoCancel(1);
                            break;
                        case -6:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed_msg)).setAutoCancel(1).setColor(-16730086);
                            break;
                        case -5:
                            android.support.v4.app.NotificationCompat$Builder v14_9 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting));
                            int v0_8 = new Object[1];
                            int v16_3 = v0_8;
                            v16_3[0] = v4;
                            v14_9.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting_msg, v16_3)).setProgress(100, 0, 1);
                            break;
                        case -4:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating_msg)).setProgress(100, 0, 1);
                            break;
                        case -3:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu_msg)).setProgress(100, 0, 1);
                            break;
                        case -2:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting_msg)).setProgress(100, 0, 1);
                            break;
                        case -1:
                            android.support.v4.app.NotificationCompat$Builder v14_52 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting));
                            int v0_32 = new Object[1];
                            int v16_11 = v0_32;
                            v16_11[0] = v4;
                            v14_52.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting_msg, v16_11)).setProgress(100, 0, 1);
                            break;
                        default:
                            String v13;
                            if (v5.getTotalParts() != 1) {
                                int v15_30 = new Object[2];
                                v15_30[0] = Integer.valueOf(v5.getCurrentPart());
                                v15_30[1] = Integer.valueOf(v5.getTotalParts());
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_part, v15_30);
                            } else {
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading);
                            }
                            int v15_32 = new Object[1];
                            v15_32[0] = v4;
                            v2.setOngoing(1).setContentTitle(v13).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_msg, v15_32)).setProgress(100, v11, 0);
                    }
                    android.content.Intent v6_1 = new android.content.Intent(this, this.getNotificationTarget());
                    v6_1.addFlags(268435456);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v3);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v4);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", v11);
                    v2.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v6_1, 134217728));
                    this.updateProgressNotification(v2, v11);
                    ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v2.build());
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendProgressBroadcast():


    private void sendProgressBroadcast(no.nordicsemi.android.dfu.DfuProgressInfo p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_PROGRESS");
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4.getProgress());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PART_CURRENT", p4.getCurrentPart());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PARTS_TOTAL", p4.getTotalParts());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_SPEED_B_PER_MS", p4.getSpeed());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_AVG_SPEED_B_PER_MS", p4.getAverageSpeed());
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '()V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendProgressBroadcast', '(Lno/nordicsemi/android/dfu/DfuProgressInfo;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    public void updateProgressNotification()
    {
        no.nordicsemi.android.dfu.DfuProgressInfo v5 = this.mProgressInfo;
        int v11 = v5.getProgress();
        if (this.mLastProgress != v11) {
            this.mLastProgress = v11;
            this.sendProgressBroadcast(v5);
            if (!this.mDisableNotification) {
                long v8 = android.os.SystemClock.elapsedRealtime();
                if (((v8 - this.mLastNotificationTime) >= 250) || ((-6 == v11) || (-7 == v11))) {
                    String v4;
                    this.mLastNotificationTime = v8;
                    String v3 = this.mDeviceAddress;
                    if (this.mDeviceName == null) {
                        v4 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
                    } else {
                        v4 = this.mDeviceName;
                    }
                    android.support.v4.app.NotificationCompat$Builder v2 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1);
                    v2.setColor(-7829368);
                    switch (v11) {
                        case -7:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted_msg)).setAutoCancel(1);
                            break;
                        case -6:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed_msg)).setAutoCancel(1).setColor(-16730086);
                            break;
                        case -5:
                            android.support.v4.app.NotificationCompat$Builder v14_9 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting));
                            int v0_8 = new Object[1];
                            int v16_3 = v0_8;
                            v16_3[0] = v4;
                            v14_9.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting_msg, v16_3)).setProgress(100, 0, 1);
                            break;
                        case -4:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating_msg)).setProgress(100, 0, 1);
                            break;
                        case -3:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu_msg)).setProgress(100, 0, 1);
                            break;
                        case -2:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting_msg)).setProgress(100, 0, 1);
                            break;
                        case -1:
                            android.support.v4.app.NotificationCompat$Builder v14_52 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting));
                            int v0_32 = new Object[1];
                            int v16_11 = v0_32;
                            v16_11[0] = v4;
                            v14_52.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting_msg, v16_11)).setProgress(100, 0, 1);
                            break;
                        default:
                            String v13;
                            if (v5.getTotalParts() != 1) {
                                int v15_30 = new Object[2];
                                v15_30[0] = Integer.valueOf(v5.getCurrentPart());
                                v15_30[1] = Integer.valueOf(v5.getTotalParts());
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_part, v15_30);
                            } else {
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading);
                            }
                            int v15_32 = new Object[1];
                            v15_32[0] = v4;
                            v2.setOngoing(1).setContentTitle(v13).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_msg, v15_32)).setProgress(100, v11, 0);
                    }
                    android.content.Intent v6_1 = new android.content.Intent(this, this.getNotificationTarget());
                    v6_1.addFlags(268435456);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v3);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v4);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", v11);
                    v2.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v6_1, 134217728));
                    this.updateProgressNotification(v2, v11);
                    ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v2.build());
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendProgressBroadcast():


    private void sendProgressBroadcast(no.nordicsemi.android.dfu.DfuProgressInfo p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_PROGRESS");
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4.getProgress());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PART_CURRENT", p4.getCurrentPart());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PARTS_TOTAL", p4.getTotalParts());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_SPEED_B_PER_MS", p4.getSpeed());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_AVG_SPEED_B_PER_MS", p4.getAverageSpeed());
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DATA' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '()V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendProgressBroadcast', '(Lno/nordicsemi/android/dfu/DfuProgressInfo;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DATA to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    public void updateProgressNotification()
    {
        no.nordicsemi.android.dfu.DfuProgressInfo v5 = this.mProgressInfo;
        int v11 = v5.getProgress();
        if (this.mLastProgress != v11) {
            this.mLastProgress = v11;
            this.sendProgressBroadcast(v5);
            if (!this.mDisableNotification) {
                long v8 = android.os.SystemClock.elapsedRealtime();
                if (((v8 - this.mLastNotificationTime) >= 250) || ((-6 == v11) || (-7 == v11))) {
                    String v4;
                    this.mLastNotificationTime = v8;
                    String v3 = this.mDeviceAddress;
                    if (this.mDeviceName == null) {
                        v4 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
                    } else {
                        v4 = this.mDeviceName;
                    }
                    android.support.v4.app.NotificationCompat$Builder v2 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1);
                    v2.setColor(-7829368);
                    switch (v11) {
                        case -7:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted_msg)).setAutoCancel(1);
                            break;
                        case -6:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed_msg)).setAutoCancel(1).setColor(-16730086);
                            break;
                        case -5:
                            android.support.v4.app.NotificationCompat$Builder v14_9 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting));
                            int v0_8 = new Object[1];
                            int v16_3 = v0_8;
                            v16_3[0] = v4;
                            v14_9.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting_msg, v16_3)).setProgress(100, 0, 1);
                            break;
                        case -4:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating_msg)).setProgress(100, 0, 1);
                            break;
                        case -3:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu_msg)).setProgress(100, 0, 1);
                            break;
                        case -2:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting_msg)).setProgress(100, 0, 1);
                            break;
                        case -1:
                            android.support.v4.app.NotificationCompat$Builder v14_52 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting));
                            int v0_32 = new Object[1];
                            int v16_11 = v0_32;
                            v16_11[0] = v4;
                            v14_52.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting_msg, v16_11)).setProgress(100, 0, 1);
                            break;
                        default:
                            String v13;
                            if (v5.getTotalParts() != 1) {
                                int v15_30 = new Object[2];
                                v15_30[0] = Integer.valueOf(v5.getCurrentPart());
                                v15_30[1] = Integer.valueOf(v5.getTotalParts());
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_part, v15_30);
                            } else {
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading);
                            }
                            int v15_32 = new Object[1];
                            v15_32[0] = v4;
                            v2.setOngoing(1).setContentTitle(v13).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_msg, v15_32)).setProgress(100, v11, 0);
                    }
                    android.content.Intent v6_1 = new android.content.Intent(this, this.getNotificationTarget());
                    v6_1.addFlags(268435456);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v3);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v4);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", v11);
                    v2.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v6_1, 134217728));
                    this.updateProgressNotification(v2, v11);
                    ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v2.build());
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendProgressBroadcast():


    private void sendProgressBroadcast(no.nordicsemi.android.dfu.DfuProgressInfo p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_PROGRESS");
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4.getProgress());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PART_CURRENT", p4.getCurrentPart());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PARTS_TOTAL", p4.getTotalParts());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_SPEED_B_PER_MS", p4.getSpeed());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_AVG_SPEED_B_PER_MS", p4.getAverageSpeed());
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_PROGRESS' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '()V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendProgressBroadcast', '(Lno/nordicsemi/android/dfu/DfuProgressInfo;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_PROGRESS to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    public void updateProgressNotification()
    {
        no.nordicsemi.android.dfu.DfuProgressInfo v5 = this.mProgressInfo;
        int v11 = v5.getProgress();
        if (this.mLastProgress != v11) {
            this.mLastProgress = v11;
            this.sendProgressBroadcast(v5);
            if (!this.mDisableNotification) {
                long v8 = android.os.SystemClock.elapsedRealtime();
                if (((v8 - this.mLastNotificationTime) >= 250) || ((-6 == v11) || (-7 == v11))) {
                    String v4;
                    this.mLastNotificationTime = v8;
                    String v3 = this.mDeviceAddress;
                    if (this.mDeviceName == null) {
                        v4 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
                    } else {
                        v4 = this.mDeviceName;
                    }
                    android.support.v4.app.NotificationCompat$Builder v2 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1);
                    v2.setColor(-7829368);
                    switch (v11) {
                        case -7:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted_msg)).setAutoCancel(1);
                            break;
                        case -6:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed_msg)).setAutoCancel(1).setColor(-16730086);
                            break;
                        case -5:
                            android.support.v4.app.NotificationCompat$Builder v14_9 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting));
                            int v0_8 = new Object[1];
                            int v16_3 = v0_8;
                            v16_3[0] = v4;
                            v14_9.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting_msg, v16_3)).setProgress(100, 0, 1);
                            break;
                        case -4:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating_msg)).setProgress(100, 0, 1);
                            break;
                        case -3:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu_msg)).setProgress(100, 0, 1);
                            break;
                        case -2:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting_msg)).setProgress(100, 0, 1);
                            break;
                        case -1:
                            android.support.v4.app.NotificationCompat$Builder v14_52 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting));
                            int v0_32 = new Object[1];
                            int v16_11 = v0_32;
                            v16_11[0] = v4;
                            v14_52.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting_msg, v16_11)).setProgress(100, 0, 1);
                            break;
                        default:
                            String v13;
                            if (v5.getTotalParts() != 1) {
                                int v15_30 = new Object[2];
                                v15_30[0] = Integer.valueOf(v5.getCurrentPart());
                                v15_30[1] = Integer.valueOf(v5.getTotalParts());
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_part, v15_30);
                            } else {
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading);
                            }
                            int v15_32 = new Object[1];
                            v15_32[0] = v4;
                            v2.setOngoing(1).setContentTitle(v13).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_msg, v15_32)).setProgress(100, v11, 0);
                    }
                    android.content.Intent v6_1 = new android.content.Intent(this, this.getNotificationTarget());
                    v6_1.addFlags(268435456);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v3);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v4);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", v11);
                    v2.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v6_1, 134217728));
                    this.updateProgressNotification(v2, v11);
                    ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v2.build());
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendProgressBroadcast():


    private void sendProgressBroadcast(no.nordicsemi.android.dfu.DfuProgressInfo p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_PROGRESS");
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4.getProgress());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PART_CURRENT", p4.getCurrentPart());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PARTS_TOTAL", p4.getTotalParts());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_SPEED_B_PER_MS", p4.getSpeed());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_AVG_SPEED_B_PER_MS", p4.getAverageSpeed());
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_PARTS_TOTAL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '()V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendProgressBroadcast', '(Lno/nordicsemi/android/dfu/DfuProgressInfo;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_PARTS_TOTAL to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    public void updateProgressNotification()
    {
        no.nordicsemi.android.dfu.DfuProgressInfo v5 = this.mProgressInfo;
        int v11 = v5.getProgress();
        if (this.mLastProgress != v11) {
            this.mLastProgress = v11;
            this.sendProgressBroadcast(v5);
            if (!this.mDisableNotification) {
                long v8 = android.os.SystemClock.elapsedRealtime();
                if (((v8 - this.mLastNotificationTime) >= 250) || ((-6 == v11) || (-7 == v11))) {
                    String v4;
                    this.mLastNotificationTime = v8;
                    String v3 = this.mDeviceAddress;
                    if (this.mDeviceName == null) {
                        v4 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
                    } else {
                        v4 = this.mDeviceName;
                    }
                    android.support.v4.app.NotificationCompat$Builder v2 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1);
                    v2.setColor(-7829368);
                    switch (v11) {
                        case -7:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted_msg)).setAutoCancel(1);
                            break;
                        case -6:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed_msg)).setAutoCancel(1).setColor(-16730086);
                            break;
                        case -5:
                            android.support.v4.app.NotificationCompat$Builder v14_9 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting));
                            int v0_8 = new Object[1];
                            int v16_3 = v0_8;
                            v16_3[0] = v4;
                            v14_9.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting_msg, v16_3)).setProgress(100, 0, 1);
                            break;
                        case -4:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating_msg)).setProgress(100, 0, 1);
                            break;
                        case -3:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu_msg)).setProgress(100, 0, 1);
                            break;
                        case -2:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting_msg)).setProgress(100, 0, 1);
                            break;
                        case -1:
                            android.support.v4.app.NotificationCompat$Builder v14_52 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting));
                            int v0_32 = new Object[1];
                            int v16_11 = v0_32;
                            v16_11[0] = v4;
                            v14_52.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting_msg, v16_11)).setProgress(100, 0, 1);
                            break;
                        default:
                            String v13;
                            if (v5.getTotalParts() != 1) {
                                int v15_30 = new Object[2];
                                v15_30[0] = Integer.valueOf(v5.getCurrentPart());
                                v15_30[1] = Integer.valueOf(v5.getTotalParts());
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_part, v15_30);
                            } else {
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading);
                            }
                            int v15_32 = new Object[1];
                            v15_32[0] = v4;
                            v2.setOngoing(1).setContentTitle(v13).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_msg, v15_32)).setProgress(100, v11, 0);
                    }
                    android.content.Intent v6_1 = new android.content.Intent(this, this.getNotificationTarget());
                    v6_1.addFlags(268435456);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v3);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v4);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", v11);
                    v2.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v6_1, 134217728));
                    this.updateProgressNotification(v2, v11);
                    ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v2.build());
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendProgressBroadcast():


    private void sendProgressBroadcast(no.nordicsemi.android.dfu.DfuProgressInfo p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_PROGRESS");
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4.getProgress());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PART_CURRENT", p4.getCurrentPart());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PARTS_TOTAL", p4.getTotalParts());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_SPEED_B_PER_MS", p4.getSpeed());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_AVG_SPEED_B_PER_MS", p4.getAverageSpeed());
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_SPEED_B_PER_MS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; F)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '()V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendProgressBroadcast', '(Lno/nordicsemi/android/dfu/DfuProgressInfo;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; F)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_SPEED_B_PER_MS to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    public void updateProgressNotification()
    {
        no.nordicsemi.android.dfu.DfuProgressInfo v5 = this.mProgressInfo;
        int v11 = v5.getProgress();
        if (this.mLastProgress != v11) {
            this.mLastProgress = v11;
            this.sendProgressBroadcast(v5);
            if (!this.mDisableNotification) {
                long v8 = android.os.SystemClock.elapsedRealtime();
                if (((v8 - this.mLastNotificationTime) >= 250) || ((-6 == v11) || (-7 == v11))) {
                    String v4;
                    this.mLastNotificationTime = v8;
                    String v3 = this.mDeviceAddress;
                    if (this.mDeviceName == null) {
                        v4 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
                    } else {
                        v4 = this.mDeviceName;
                    }
                    android.support.v4.app.NotificationCompat$Builder v2 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1);
                    v2.setColor(-7829368);
                    switch (v11) {
                        case -7:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted_msg)).setAutoCancel(1);
                            break;
                        case -6:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed_msg)).setAutoCancel(1).setColor(-16730086);
                            break;
                        case -5:
                            android.support.v4.app.NotificationCompat$Builder v14_9 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting));
                            int v0_8 = new Object[1];
                            int v16_3 = v0_8;
                            v16_3[0] = v4;
                            v14_9.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting_msg, v16_3)).setProgress(100, 0, 1);
                            break;
                        case -4:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating_msg)).setProgress(100, 0, 1);
                            break;
                        case -3:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu_msg)).setProgress(100, 0, 1);
                            break;
                        case -2:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting_msg)).setProgress(100, 0, 1);
                            break;
                        case -1:
                            android.support.v4.app.NotificationCompat$Builder v14_52 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting));
                            int v0_32 = new Object[1];
                            int v16_11 = v0_32;
                            v16_11[0] = v4;
                            v14_52.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting_msg, v16_11)).setProgress(100, 0, 1);
                            break;
                        default:
                            String v13;
                            if (v5.getTotalParts() != 1) {
                                int v15_30 = new Object[2];
                                v15_30[0] = Integer.valueOf(v5.getCurrentPart());
                                v15_30[1] = Integer.valueOf(v5.getTotalParts());
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_part, v15_30);
                            } else {
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading);
                            }
                            int v15_32 = new Object[1];
                            v15_32[0] = v4;
                            v2.setOngoing(1).setContentTitle(v13).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_msg, v15_32)).setProgress(100, v11, 0);
                    }
                    android.content.Intent v6_1 = new android.content.Intent(this, this.getNotificationTarget());
                    v6_1.addFlags(268435456);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v3);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v4);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", v11);
                    v2.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v6_1, 134217728));
                    this.updateProgressNotification(v2, v11);
                    ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v2.build());
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendProgressBroadcast():


    private void sendProgressBroadcast(no.nordicsemi.android.dfu.DfuProgressInfo p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_PROGRESS");
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4.getProgress());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PART_CURRENT", p4.getCurrentPart());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PARTS_TOTAL", p4.getTotalParts());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_SPEED_B_PER_MS", p4.getSpeed());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_AVG_SPEED_B_PER_MS", p4.getAverageSpeed());
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_AVG_SPEED_B_PER_MS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; F)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '()V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendProgressBroadcast', '(Lno/nordicsemi/android/dfu/DfuProgressInfo;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; F)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_AVG_SPEED_B_PER_MS to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    public void updateProgressNotification()
    {
        no.nordicsemi.android.dfu.DfuProgressInfo v5 = this.mProgressInfo;
        int v11 = v5.getProgress();
        if (this.mLastProgress != v11) {
            this.mLastProgress = v11;
            this.sendProgressBroadcast(v5);
            if (!this.mDisableNotification) {
                long v8 = android.os.SystemClock.elapsedRealtime();
                if (((v8 - this.mLastNotificationTime) >= 250) || ((-6 == v11) || (-7 == v11))) {
                    String v4;
                    this.mLastNotificationTime = v8;
                    String v3 = this.mDeviceAddress;
                    if (this.mDeviceName == null) {
                        v4 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
                    } else {
                        v4 = this.mDeviceName;
                    }
                    android.support.v4.app.NotificationCompat$Builder v2 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1);
                    v2.setColor(-7829368);
                    switch (v11) {
                        case -7:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted_msg)).setAutoCancel(1);
                            break;
                        case -6:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed_msg)).setAutoCancel(1).setColor(-16730086);
                            break;
                        case -5:
                            android.support.v4.app.NotificationCompat$Builder v14_9 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting));
                            int v0_8 = new Object[1];
                            int v16_3 = v0_8;
                            v16_3[0] = v4;
                            v14_9.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting_msg, v16_3)).setProgress(100, 0, 1);
                            break;
                        case -4:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating_msg)).setProgress(100, 0, 1);
                            break;
                        case -3:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu_msg)).setProgress(100, 0, 1);
                            break;
                        case -2:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting_msg)).setProgress(100, 0, 1);
                            break;
                        case -1:
                            android.support.v4.app.NotificationCompat$Builder v14_52 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting));
                            int v0_32 = new Object[1];
                            int v16_11 = v0_32;
                            v16_11[0] = v4;
                            v14_52.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting_msg, v16_11)).setProgress(100, 0, 1);
                            break;
                        default:
                            String v13;
                            if (v5.getTotalParts() != 1) {
                                int v15_30 = new Object[2];
                                v15_30[0] = Integer.valueOf(v5.getCurrentPart());
                                v15_30[1] = Integer.valueOf(v5.getTotalParts());
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_part, v15_30);
                            } else {
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading);
                            }
                            int v15_32 = new Object[1];
                            v15_32[0] = v4;
                            v2.setOngoing(1).setContentTitle(v13).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_msg, v15_32)).setProgress(100, v11, 0);
                    }
                    android.content.Intent v6_1 = new android.content.Intent(this, this.getNotificationTarget());
                    v6_1.addFlags(268435456);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v3);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v4);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", v11);
                    v2.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v6_1, 134217728));
                    this.updateProgressNotification(v2, v11);
                    ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v2.build());
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendProgressBroadcast():


    private void sendProgressBroadcast(no.nordicsemi.android.dfu.DfuProgressInfo p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_PROGRESS");
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4.getProgress());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PART_CURRENT", p4.getCurrentPart());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PARTS_TOTAL", p4.getTotalParts());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_SPEED_B_PER_MS", p4.getSpeed());
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_AVG_SPEED_B_PER_MS", p4.getAverageSpeed());
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_ACTION' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '()V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '(Landroid/support/v4/app/NotificationCompat$Builder; I)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_ACTION to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    public void updateProgressNotification()
    {
        no.nordicsemi.android.dfu.DfuProgressInfo v5 = this.mProgressInfo;
        int v11 = v5.getProgress();
        if (this.mLastProgress != v11) {
            this.mLastProgress = v11;
            this.sendProgressBroadcast(v5);
            if (!this.mDisableNotification) {
                long v8 = android.os.SystemClock.elapsedRealtime();
                if (((v8 - this.mLastNotificationTime) >= 250) || ((-6 == v11) || (-7 == v11))) {
                    String v4;
                    this.mLastNotificationTime = v8;
                    String v3 = this.mDeviceAddress;
                    if (this.mDeviceName == null) {
                        v4 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
                    } else {
                        v4 = this.mDeviceName;
                    }
                    android.support.v4.app.NotificationCompat$Builder v2 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1);
                    v2.setColor(-7829368);
                    switch (v11) {
                        case -7:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted_msg)).setAutoCancel(1);
                            break;
                        case -6:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed_msg)).setAutoCancel(1).setColor(-16730086);
                            break;
                        case -5:
                            android.support.v4.app.NotificationCompat$Builder v14_9 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting));
                            int v0_8 = new Object[1];
                            int v16_3 = v0_8;
                            v16_3[0] = v4;
                            v14_9.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting_msg, v16_3)).setProgress(100, 0, 1);
                            break;
                        case -4:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating_msg)).setProgress(100, 0, 1);
                            break;
                        case -3:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu_msg)).setProgress(100, 0, 1);
                            break;
                        case -2:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting_msg)).setProgress(100, 0, 1);
                            break;
                        case -1:
                            android.support.v4.app.NotificationCompat$Builder v14_52 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting));
                            int v0_32 = new Object[1];
                            int v16_11 = v0_32;
                            v16_11[0] = v4;
                            v14_52.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting_msg, v16_11)).setProgress(100, 0, 1);
                            break;
                        default:
                            String v13;
                            if (v5.getTotalParts() != 1) {
                                int v15_30 = new Object[2];
                                v15_30[0] = Integer.valueOf(v5.getCurrentPart());
                                v15_30[1] = Integer.valueOf(v5.getTotalParts());
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_part, v15_30);
                            } else {
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading);
                            }
                            int v15_32 = new Object[1];
                            v15_32[0] = v4;
                            v2.setOngoing(1).setContentTitle(v13).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_msg, v15_32)).setProgress(100, v11, 0);
                    }
                    android.content.Intent v6_1 = new android.content.Intent(this, this.getNotificationTarget());
                    v6_1.addFlags(268435456);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v3);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v4);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", v11);
                    v2.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v6_1, 134217728));
                    this.updateProgressNotification(v2, v11);
                    ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v2.build());
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    protected void updateProgressNotification(android.support.v4.app.NotificationCompat$Builder p5, int p6)
    {
        if ((p6 != -7) && (p6 != -6)) {
            android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION");
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ACTION", 2);
            p5.addAction(no.nordicsemi.android.dfu.R$drawable.ic_action_notify_cancel, this.getString(no.nordicsemi.android.dfu.R$string.dfu_action_abort), android.app.PendingIntent.getBroadcast(this, 1, v0_1, 134217728));
        }
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '()V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'updateProgressNotification', '(Landroid/support/v4/app/NotificationCompat$Builder; I)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    public void updateProgressNotification()
    {
        no.nordicsemi.android.dfu.DfuProgressInfo v5 = this.mProgressInfo;
        int v11 = v5.getProgress();
        if (this.mLastProgress != v11) {
            this.mLastProgress = v11;
            this.sendProgressBroadcast(v5);
            if (!this.mDisableNotification) {
                long v8 = android.os.SystemClock.elapsedRealtime();
                if (((v8 - this.mLastNotificationTime) >= 250) || ((-6 == v11) || (-7 == v11))) {
                    String v4;
                    this.mLastNotificationTime = v8;
                    String v3 = this.mDeviceAddress;
                    if (this.mDeviceName == null) {
                        v4 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
                    } else {
                        v4 = this.mDeviceName;
                    }
                    android.support.v4.app.NotificationCompat$Builder v2 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1);
                    v2.setColor(-7829368);
                    switch (v11) {
                        case -7:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_aborted_msg)).setAutoCancel(1);
                            break;
                        case -6:
                            v2.setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_completed_msg)).setAutoCancel(1).setColor(-16730086);
                            break;
                        case -5:
                            android.support.v4.app.NotificationCompat$Builder v14_9 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting));
                            int v0_8 = new Object[1];
                            int v16_3 = v0_8;
                            v16_3[0] = v4;
                            v14_9.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_disconnecting_msg, v16_3)).setProgress(100, 0, 1);
                            break;
                        case -4:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_validating_msg)).setProgress(100, 0, 1);
                            break;
                        case -3:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_switching_to_dfu_msg)).setProgress(100, 0, 1);
                            break;
                        case -2:
                            v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting)).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_starting_msg)).setProgress(100, 0, 1);
                            break;
                        case -1:
                            android.support.v4.app.NotificationCompat$Builder v14_52 = v2.setOngoing(1).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting));
                            int v0_32 = new Object[1];
                            int v16_11 = v0_32;
                            v16_11[0] = v4;
                            v14_52.setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_connecting_msg, v16_11)).setProgress(100, 0, 1);
                            break;
                        default:
                            String v13;
                            if (v5.getTotalParts() != 1) {
                                int v15_30 = new Object[2];
                                v15_30[0] = Integer.valueOf(v5.getCurrentPart());
                                v15_30[1] = Integer.valueOf(v5.getTotalParts());
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_part, v15_30);
                            } else {
                                v13 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading);
                            }
                            int v15_32 = new Object[1];
                            v15_32[0] = v4;
                            v2.setOngoing(1).setContentTitle(v13).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_uploading_msg, v15_32)).setProgress(100, v11, 0);
                    }
                    android.content.Intent v6_1 = new android.content.Intent(this, this.getNotificationTarget());
                    v6_1.addFlags(268435456);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v3);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v4);
                    v6_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", v11);
                    v2.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v6_1, 134217728));
                    this.updateProgressNotification(v2, v11);
                    ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v2.build());
                }
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.updateProgressNotification():


    protected void updateProgressNotification(android.support.v4.app.NotificationCompat$Builder p5, int p6)
    {
        if ((p6 != -7) && (p6 != -6)) {
            android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ACTION");
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ACTION", 2);
            p5.addAction(no.nordicsemi.android.dfu.R$drawable.ic_action_notify_cancel, this.getString(no.nordicsemi.android.dfu.R$string.dfu_action_abort), android.app.PendingIntent.getBroadcast(this, 1, v0_1, 134217728));
        }
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'refreshDeviceCache', '(Landroid/bluetooth/BluetoothGatt; Z)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.refreshDeviceCache():


    protected void refreshDeviceCache(android.bluetooth.BluetoothGatt p7, boolean p8)
    {
        if ((p8) || (p7.getDevice().getBondState() == 10)) {
            this.sendLogBroadcast(0, "gatt.refresh() (hidden)");
            try {
                Class[] v5_2 = new Class[0];
                reflect.Method v1 = p7.getClass().getMethod("refresh", v5_2);
            } catch (Exception v0) {
                this.loge("An exception occurred while refreshing device", v0);
                this.sendLogBroadcast(15, "Refreshing failed");
            }
            if (v1 != null) {
                String v3_2 = new Object[0];
                this.logi(new StringBuilder().append("Refreshing result: ").append(((Boolean) v1.invoke(p7, v3_2)).booleanValue()).toString());
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'refreshDeviceCache', '(Landroid/bluetooth/BluetoothGatt; Z)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.refreshDeviceCache():


    protected void refreshDeviceCache(android.bluetooth.BluetoothGatt p7, boolean p8)
    {
        if ((p8) || (p7.getDevice().getBondState() == 10)) {
            this.sendLogBroadcast(0, "gatt.refresh() (hidden)");
            try {
                Class[] v5_2 = new Class[0];
                reflect.Method v1 = p7.getClass().getMethod("refresh", v5_2);
            } catch (Exception v0) {
                this.loge("An exception occurred while refreshing device", v0);
                this.sendLogBroadcast(15, "Refreshing failed");
            }
            if (v1 != null) {
                String v3_2 = new Object[0];
                this.logi(new StringBuilder().append("Refreshing result: ").append(((Boolean) v1.invoke(p7, v3_2)).booleanValue()).toString());
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'refreshDeviceCache', '(Landroid/bluetooth/BluetoothGatt; Z)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.refreshDeviceCache():


    protected void refreshDeviceCache(android.bluetooth.BluetoothGatt p7, boolean p8)
    {
        if ((p8) || (p7.getDevice().getBondState() == 10)) {
            this.sendLogBroadcast(0, "gatt.refresh() (hidden)");
            try {
                Class[] v5_2 = new Class[0];
                reflect.Method v1 = p7.getClass().getMethod("refresh", v5_2);
            } catch (Exception v0) {
                this.loge("An exception occurred while refreshing device", v0);
                this.sendLogBroadcast(15, "Refreshing failed");
            }
            if (v1 != null) {
                String v3_2 = new Object[0];
                this.logi(new StringBuilder().append("Refreshing result: ").append(((Boolean) v1.invoke(p7, v3_2)).booleanValue()).toString());
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'gatt.refresh() (hidden)' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '1', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'refreshDeviceCache', '(Landroid/bluetooth/BluetoothGatt; Z)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value gatt.refresh() (hidden) to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.refreshDeviceCache():


    protected void refreshDeviceCache(android.bluetooth.BluetoothGatt p7, boolean p8)
    {
        if ((p8) || (p7.getDevice().getBondState() == 10)) {
            this.sendLogBroadcast(0, "gatt.refresh() (hidden)");
            try {
                Class[] v5_2 = new Class[0];
                reflect.Method v1 = p7.getClass().getMethod("refresh", v5_2);
            } catch (Exception v0) {
                this.loge("An exception occurred while refreshing device", v0);
                this.sendLogBroadcast(15, "Refreshing failed");
            }
            if (v1 != null) {
                String v3_2 = new Object[0];
                this.logi(new StringBuilder().append("Refreshing result: ").append(((Boolean) v1.invoke(p7, v3_2)).booleanValue()).toString());
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'refreshDeviceCache', '(Landroid/bluetooth/BluetoothGatt; Z)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.refreshDeviceCache():


    protected void refreshDeviceCache(android.bluetooth.BluetoothGatt p7, boolean p8)
    {
        if ((p8) || (p7.getDevice().getBondState() == 10)) {
            this.sendLogBroadcast(0, "gatt.refresh() (hidden)");
            try {
                Class[] v5_2 = new Class[0];
                reflect.Method v1 = p7.getClass().getMethod("refresh", v5_2);
            } catch (Exception v0) {
                this.loge("An exception occurred while refreshing device", v0);
                this.sendLogBroadcast(15, "Refreshing failed");
            }
            if (v1 != null) {
                String v3_2 = new Object[0];
                this.logi(new StringBuilder().append("Refreshing result: ").append(((Boolean) v1.invoke(p7, v3_2)).booleanValue()).toString());
            }
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'onHandleIntent', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'report', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendErrorBroadcast', '(I)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.onHandleIntent():


    protected void onHandleIntent(android.content.Intent p38)
    {
        String v10 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS");
        String v11 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME");
        boolean v12 = p38.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_NOTIFICATION", 0);
        boolean v19 = p38.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_FOREGROUND_SERVICE", 1);
        String v15 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_PATH");
        android.net.Uri v17_1 = ((android.net.Uri) p38.getParcelableExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_URI"));
        int v16 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_RES_ID", 0);
        String v21 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_PATH");
        android.net.Uri v23_1 = ((android.net.Uri) p38.getParcelableExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_URI"));
        int v22 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_RES_ID", 0);
        int v7 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_TYPE", 0);
        if ((v15 != null) && (v7 == 0)) {
            if (!v15.toLowerCase(java.util.Locale.US).endsWith("zip")) {
                v7 = 4;
            } else {
                v7 = 0;
            }
        }
        String v26 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_MIME_TYPE");
        if (v26 == null) {
            if (v7 != 0) {
                v26 = "application/octet-stream";
            } else {
                v26 = "application/zip";
            }
        }
        if (((v7 & -8) <= 0) && (("application/zip".equals(v26)) || ("application/octet-stream".equals(v26)))) {
            if ((!"application/octet-stream".equals(v26)) || ((v7 == 1) || ((v7 == 2) || (v7 == 4)))) {
                if ((v12) || (this.getNotificationTarget() != null)) {
                    if ((!v19) && (android.os.Build$VERSION.SDK_INT >= 26)) {
                        this.logw("Foreground service disabled. Android Oreo or newer may kill a background service few moments after user closes the application.\nConsider enabling foreground service using DfuServiceInitiator#setForeground(boolean)");
                    }
                    no.nordicsemi.android.dfu.UuidHelper.assignCustomUuids(p38);
                    this.mDeviceAddress = v10;
                    this.mDeviceName = v11;
                    this.mDisableNotification = v12;
                    this.mConnectionState = 0;
                    this.mError = 0;
                    try {
                        int v25 = Integer.parseInt(android.preference.PreferenceManager.getDefaultSharedPreferences(this).getString("settings_mbr_size", String.valueOf(4096)));
                    } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13) {
                        v25 = 4096;
                        if (v19) {
                            this = this.startForeground();
                        }
                        this.sendLogBroadcast(1, "DFU service started");
                        java.io.InputStream v8 = this.mFirmwareInputStream;
                        java.io.ByteArrayInputStream v9_0 = this.mInitFileInputStream;
                        try {
                            int v18;
                            if (this.mFirmwareInputStream != null) {
                                v18 = 0;
                                try {
                                    if (v18 == 0) {
                                        java.io.FileInputStream v24_1 = v9_0;
                                        try {
                                            java.io.ByteArrayInputStream v9_2;
                                            if (!"application/zip".equals(v26)) {
                                                v9_2 = v24_1;
                                            } else {
                                                no.nordicsemi.android.dfu.internal.ArchiveInputStream v31 = ((no.nordicsemi.android.dfu.internal.ArchiveInputStream) v8);
                                                if (v7 != 0) {
                                                    v7 = v31.setContentType(v7);
                                                } else {
                                                    v7 = v31.getContentType();
                                                }
                                                if (((v7 & 4) <= 0) || ((v31.applicationImageSize() % 4) == 0)) {
                                                    if (((v7 & 2) <= 0) || ((v31.bootloaderImageSize() % 4) == 0)) {
                                                        if (((v7 & 1) <= 0) || ((v31.softDeviceImageSize() % 4) == 0)) {
                                                            if (v7 != 4) {
                                                                if (v31.getSystemInit() == null) {
                                                                } else {
                                                                    v9_2 = new java.io.ByteArrayInputStream(v31.getSystemInit());
                                                                }
                                                            } else {
                                                                if (v31.getApplicationInit() == null) {
                                                                } else {
                                                                    v9_2 = new java.io.ByteArrayInputStream(v31.getApplicationInit());
                                                                }
                                                            }
                                                        } else {
                                                            throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Soft Device firmware is not word-aligned.");
                                                        }
                                                    } else {
                                                        throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Bootloader firmware is not word-aligned.");
                                                    }
                                                } else {
                                                    throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Application firmware is not word-aligned.");
                                                }
                                            }
                                        } catch (int v5_129) {
                                            if (v19) {
                                                this.stopForeground(v12);
                                            }
                                            throw v5_129;
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_6) {
                                            this.loge("An exception occurred while opening file", v13_6);
                                            this.sendLogBroadcast(20, "Opening file failed: File not found");
                                            this.report(4097);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                            this.mFirmwareInputStream = v8;
                                            this.mInitFileInputStream = v9_2;
                                            this.sendLogBroadcast(5, "Firmware file opened successfully");
                                            if (v18 == 0) {
                                                this.waitFor(1000);
                                                this.waitFor(1000);
                                            }
                                            this.mProgressInfo = new no.nordicsemi.android.dfu.DfuProgressInfo(this);
                                            if (!this.mAborted) {
                                                this.sendLogBroadcast(1, "Connecting to DFU target...");
                                                this.mProgressInfo.setProgress(-1);
                                                android.bluetooth.BluetoothGatt v6 = this.connect(v10);
                                                if (v6 != null) {
                                                    if (this.mConnectionState != 0) {
                                                        if (this.mError <= 0) {
                                                            if (!this.mAborted) {
                                                                this.sendLogBroadcast(5, "Services discovered");
                                                                p38.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 0);
                                                                try {
                                                                    no.nordicsemi.android.dfu.DfuServiceProvider v29_1 = new no.nordicsemi.android.dfu.DfuServiceProvider();
                                                                    this.mDfuServiceImpl = v29_1;
                                                                    no.nordicsemi.android.dfu.DfuService v4 = v29_1.getServiceImpl(p38, this, v6);
                                                                    this.mDfuServiceImpl = v4;
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13) {
                                                                    this.logw("Upload aborted");
                                                                    this.sendLogBroadcast(15, "Upload aborted");
                                                                    this.terminateConnection(v6, 0);
                                                                    this.mProgressInfo.setProgress(-7);
                                                                    if (v4 == null) {
                                                                        if (!v19) {
                                                                            return;
                                                                        } else {
                                                                            this.stopForeground(v12);
                                                                            return;
                                                                        }
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_1) {
                                                                    this.sendLogBroadcast(20, "Device has disconnected");
                                                                    this.loge(v13_1.getMessage());
                                                                    this.close(v6);
                                                                    this.report(4096);
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_0) {
                                                                    int v14_0 = v13_0.getErrorNumber();
                                                                    if ((32768 & v14_0) <= 0) {
                                                                        int v14_1 = (v14_0 & -16385);
                                                                        void v0_51 = new Object[2];
                                                                        Object[] v34_1 = v0_51;
                                                                        v34_1[0] = Integer.valueOf(v14_1);
                                                                        v34_1[1] = no.nordicsemi.android.error.GattError.parse(v14_1);
                                                                        this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Error (0x%02X): %s", v34_1));
                                                                    } else {
                                                                        int v14_2 = (v14_0 & -32769);
                                                                        void v0_55 = new Object[2];
                                                                        Object[] v34_3 = v0_55;
                                                                        v34_3[0] = Integer.valueOf(v14_2);
                                                                        v34_3[1] = no.nordicsemi.android.error.GattError.parseConnectionError(v14_2);
                                                                        this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Error (0x%02X): %s", v34_3));
                                                                    }
                                                                    this.loge(v13_0.getMessage());
                                                                    this.terminateConnection(v6, v13_0.getErrorNumber());
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (int v5_67) {
                                                                    if (v4 != null) {
                                                                        v4.release();
                                                                    }
                                                                    throw v5_67;
                                                                }
                                                                if (v4 != null) {
                                                                    if (v4.initialize(p38, v6, v7, v8, v9_2)) {
                                                                        v4.performDfu(p38);
                                                                    }
                                                                } else {
                                                                    android.util.Log.w("DfuBaseService", "DFU Service not found.");
                                                                    this.sendLogBroadcast(15, "DFU Service not found");
                                                                    this.terminateConnection(v6, 4102);
                                                                    if (v4 != null) {
                                                                        v4.release();
                                                                    }
                                                                    if (!v19) {
                                                                        return;
                                                                    } else {
                                                                        this.stopForeground(v12);
                                                                        return;
                                                                    }
                                                                }
                                                            } else {
                                                                this.logw("Upload aborted");
                                                                this.sendLogBroadcast(15, "Upload aborted");
                                                                this.terminateConnection(v6, 0);
                                                                this.mProgressInfo.setProgress(-7);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            }
                                                        } else {
                                                            if ((this.mError & 32768) <= 0) {
                                                                int v14_3 = (this.mError & -16385);
                                                                this.loge(new StringBuilder().append("An error occurred during discovering services:").append(v14_3).toString());
                                                                void v0_87 = new Object[2];
                                                                Object[] v34_5 = v0_87;
                                                                v34_5[0] = Integer.valueOf(v14_3);
                                                                v34_5[1] = no.nordicsemi.android.error.GattError.parse(v14_3);
                                                                this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Connection failed (0x%02X): %s", v34_5));
                                                            } else {
                                                                int v14_4 = (this.mError & -32769);
                                                                this.loge(new StringBuilder().append("An error occurred while connecting to the device:").append(v14_4).toString());
                                                                void v0_94 = new Object[2];
                                                                Object[] v34_7 = v0_94;
                                                                v34_7[0] = Integer.valueOf(v14_4);
                                                                v34_7[1] = no.nordicsemi.android.error.GattError.parseConnectionError(v14_4);
                                                                this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Connection failed (0x%02X): %s", v34_7));
                                                            }
                                                            if (p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 0) != 0) {
                                                                this.terminateConnection(v6, this.mError);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            } else {
                                                                this.sendLogBroadcast(15, "Retrying...");
                                                                if (this.mConnectionState != 0) {
                                                                    this.disconnect(v6);
                                                                }
                                                                this.refreshDeviceCache(v6, 1);
                                                                this.close(v6);
                                                                this.logi("Restarting the service");
                                                                android.content.Intent v27_1 = new android.content.Intent();
                                                                v27_1.fillIn(p38, 24);
                                                                v27_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 1);
                                                                this.startService(v27_1);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            }
                                                        }
                                                    } else {
                                                        if (this.mError != 32901) {
                                                            this.loge("Device got disconnected before service discovery finished");
                                                            this.sendLogBroadcast(20, "Disconnected");
                                                        } else {
                                                            this.loge(new StringBuilder().append("Device not reachable. Check if the device with address ").append(v10).append(" is in range, is advertising and is connectable").toString());
                                                            this.sendLogBroadcast(20, "Error 133: Connection timeout");
                                                        }
                                                        this.terminateConnection(v6, 4096);
                                                        if (v19) {
                                                            this.stopForeground(v12);
                                                        }
                                                        return;
                                                    }
                                                } else {
                                                    this.loge("Bluetooth adapter disabled");
                                                    this.sendLogBroadcast(20, "Bluetooth adapter disabled");
                                                    this.report(4106);
                                                    if (!v19) {
                                                        return;
                                                    } else {
                                                        this.stopForeground(v12);
                                                        return;
                                                    }
                                                }
                                            } else {
                                                this.logw("Upload aborted");
                                                this.sendLogBroadcast(15, "Upload aborted");
                                                this.mProgressInfo.setProgress(-7);
                                                if (v19) {
                                                    this.stopForeground(v12);
                                                }
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_5) {
                                            this.loge("Firmware not word-aligned", v13_5);
                                            this.sendLogBroadcast(20, "Opening file failed: Firmware size must be word-aligned");
                                            this.report(4108);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_4) {
                                            this.loge("An exception occurred while calculating file size", v13_4);
                                            this.sendLogBroadcast(20, new StringBuilder().append("Opening file failed: ").append(v13_4.getLocalizedMessage()).toString());
                                            this.report(4098);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_3) {
                                            this.loge("An exception occurred while opening files. Did you set the firmware file?", v13_3);
                                            this.sendLogBroadcast(20, new StringBuilder().append("Opening file failed: ").append(v13_3.getLocalizedMessage()).toString());
                                            this.report(4098);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        }
                                        if (v18 != 0) {
                                            v8.mark(v8.available());
                                            if (v9_2 != null) {
                                                v9_2.mark(v9_2.available());
                                            }
                                        }
                                    } else {
                                        this.sendLogBroadcast(1, "Opening file...");
                                        if (v17_1 == null) {
                                            if (v15 == null) {
                                                if (v16 > 0) {
                                                    v8 = this.openInputStream(v16, v26, v25, v7);
                                                }
                                            } else {
                                                v8 = this.openInputStream(v15, v26, v25, v7);
                                            }
                                        } else {
                                            v8 = this.openInputStream(v17_1, v26, v25, v7);
                                        }
                                        if (v23_1 == null) {
                                            if (v21 == null) {
                                                if (v22 > 0) {
                                                    v9_0 = this.getResources().openRawResource(v22);
                                                }
                                            } else {
                                                java.io.FileInputStream v24_0 = new java.io.FileInputStream;
                                                v24_0(v21);
                                                v9_0 = v24_0;
                                            }
                                        } else {
                                            v9_0 = this.getContentResolver().openInputStream(v23_1);
                                        }
                                        if ((v8.available() % 4) == 0) {
                                        } else {
                                            throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("The new firmware is not word-aligned.");
                                        }
                                    }
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_2) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_6) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_5) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_4) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_3) {
                                }
                                this.loge("A security exception occurred while opening file", v13_2);
                                this.sendLogBroadcast(20, "Opening file failed: Permission required");
                                this.report(4097);
                                if (!v19) {
                                    return;
                                } else {
                                    this.stopForeground(v12);
                                    return;
                                }
                            } else {
                                v18 = 1;
                            }
                        } catch (int v5_129) {
                        }
                    }
                    if (v25 >= 0) {
                    } else {
                        v25 = 0;
                    }
                } else {
                    throw new NullPointerException("getNotificationTarget() must not return null if notifications are enabled");
                }
            } else {
                this.logw("Unable to determine file type");
                this.sendLogBroadcast(15, "Unable to determine file type");
                this.report(4105);
            }
        } else {
            this.logw("File type or file mime-type not supported");
            this.sendLogBroadcast(15, "File type or file mime-type not supported");
            this.report(4105);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.report():


    private void report(int p11)
    {
        this.sendErrorBroadcast(p11);
        if (!this.mDisableNotification) {
            String v2;
            String v1 = this.mDeviceAddress;
            if (this.mDeviceName == null) {
                v2 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
            } else {
                v2 = this.mDeviceName;
            }
            android.support.v4.app.NotificationCompat$Builder v0 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1).setColor(-65536).setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error_msg)).setAutoCancel(1);
            android.content.Intent v3_1 = new android.content.Intent(this, this.getNotificationTarget());
            v3_1.addFlags(268435456);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v1);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v2);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", p11);
            v0.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v3_1, 134217728));
            this.updateErrorNotification(v0);
            ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v0.build());
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendErrorBroadcast():


    private void sendErrorBroadcast(int p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR");
        if ((p4 & 16384) <= 0) {
            if ((32768 & p4) <= 0) {
                if ((p4 & 8192) <= 0) {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4);
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 0);
                } else {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -8193));
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 3);
                }
            } else {
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (-32769 & p4));
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 1);
            }
        } else {
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -16385));
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 2);
        }
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'onHandleIntent', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.onHandleIntent():


    protected void onHandleIntent(android.content.Intent p38)
    {
        String v10 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS");
        String v11 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME");
        boolean v12 = p38.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_NOTIFICATION", 0);
        boolean v19 = p38.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_FOREGROUND_SERVICE", 1);
        String v15 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_PATH");
        android.net.Uri v17_1 = ((android.net.Uri) p38.getParcelableExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_URI"));
        int v16 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_RES_ID", 0);
        String v21 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_PATH");
        android.net.Uri v23_1 = ((android.net.Uri) p38.getParcelableExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_URI"));
        int v22 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_RES_ID", 0);
        int v7 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_TYPE", 0);
        if ((v15 != null) && (v7 == 0)) {
            if (!v15.toLowerCase(java.util.Locale.US).endsWith("zip")) {
                v7 = 4;
            } else {
                v7 = 0;
            }
        }
        String v26 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_MIME_TYPE");
        if (v26 == null) {
            if (v7 != 0) {
                v26 = "application/octet-stream";
            } else {
                v26 = "application/zip";
            }
        }
        if (((v7 & -8) <= 0) && (("application/zip".equals(v26)) || ("application/octet-stream".equals(v26)))) {
            if ((!"application/octet-stream".equals(v26)) || ((v7 == 1) || ((v7 == 2) || (v7 == 4)))) {
                if ((v12) || (this.getNotificationTarget() != null)) {
                    if ((!v19) && (android.os.Build$VERSION.SDK_INT >= 26)) {
                        this.logw("Foreground service disabled. Android Oreo or newer may kill a background service few moments after user closes the application.\nConsider enabling foreground service using DfuServiceInitiator#setForeground(boolean)");
                    }
                    no.nordicsemi.android.dfu.UuidHelper.assignCustomUuids(p38);
                    this.mDeviceAddress = v10;
                    this.mDeviceName = v11;
                    this.mDisableNotification = v12;
                    this.mConnectionState = 0;
                    this.mError = 0;
                    try {
                        int v25 = Integer.parseInt(android.preference.PreferenceManager.getDefaultSharedPreferences(this).getString("settings_mbr_size", String.valueOf(4096)));
                    } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13) {
                        v25 = 4096;
                        if (v19) {
                            this = this.startForeground();
                        }
                        this.sendLogBroadcast(1, "DFU service started");
                        java.io.InputStream v8 = this.mFirmwareInputStream;
                        java.io.ByteArrayInputStream v9_0 = this.mInitFileInputStream;
                        try {
                            int v18;
                            if (this.mFirmwareInputStream != null) {
                                v18 = 0;
                                try {
                                    if (v18 == 0) {
                                        java.io.FileInputStream v24_1 = v9_0;
                                        try {
                                            java.io.ByteArrayInputStream v9_2;
                                            if (!"application/zip".equals(v26)) {
                                                v9_2 = v24_1;
                                            } else {
                                                no.nordicsemi.android.dfu.internal.ArchiveInputStream v31 = ((no.nordicsemi.android.dfu.internal.ArchiveInputStream) v8);
                                                if (v7 != 0) {
                                                    v7 = v31.setContentType(v7);
                                                } else {
                                                    v7 = v31.getContentType();
                                                }
                                                if (((v7 & 4) <= 0) || ((v31.applicationImageSize() % 4) == 0)) {
                                                    if (((v7 & 2) <= 0) || ((v31.bootloaderImageSize() % 4) == 0)) {
                                                        if (((v7 & 1) <= 0) || ((v31.softDeviceImageSize() % 4) == 0)) {
                                                            if (v7 != 4) {
                                                                if (v31.getSystemInit() == null) {
                                                                } else {
                                                                    v9_2 = new java.io.ByteArrayInputStream(v31.getSystemInit());
                                                                }
                                                            } else {
                                                                if (v31.getApplicationInit() == null) {
                                                                } else {
                                                                    v9_2 = new java.io.ByteArrayInputStream(v31.getApplicationInit());
                                                                }
                                                            }
                                                        } else {
                                                            throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Soft Device firmware is not word-aligned.");
                                                        }
                                                    } else {
                                                        throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Bootloader firmware is not word-aligned.");
                                                    }
                                                } else {
                                                    throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Application firmware is not word-aligned.");
                                                }
                                            }
                                        } catch (int v5_129) {
                                            if (v19) {
                                                this.stopForeground(v12);
                                            }
                                            throw v5_129;
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_6) {
                                            this.loge("An exception occurred while opening file", v13_6);
                                            this.sendLogBroadcast(20, "Opening file failed: File not found");
                                            this.report(4097);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                            this.mFirmwareInputStream = v8;
                                            this.mInitFileInputStream = v9_2;
                                            this.sendLogBroadcast(5, "Firmware file opened successfully");
                                            if (v18 == 0) {
                                                this.waitFor(1000);
                                                this.waitFor(1000);
                                            }
                                            this.mProgressInfo = new no.nordicsemi.android.dfu.DfuProgressInfo(this);
                                            if (!this.mAborted) {
                                                this.sendLogBroadcast(1, "Connecting to DFU target...");
                                                this.mProgressInfo.setProgress(-1);
                                                android.bluetooth.BluetoothGatt v6 = this.connect(v10);
                                                if (v6 != null) {
                                                    if (this.mConnectionState != 0) {
                                                        if (this.mError <= 0) {
                                                            if (!this.mAborted) {
                                                                this.sendLogBroadcast(5, "Services discovered");
                                                                p38.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 0);
                                                                try {
                                                                    no.nordicsemi.android.dfu.DfuServiceProvider v29_1 = new no.nordicsemi.android.dfu.DfuServiceProvider();
                                                                    this.mDfuServiceImpl = v29_1;
                                                                    no.nordicsemi.android.dfu.DfuService v4 = v29_1.getServiceImpl(p38, this, v6);
                                                                    this.mDfuServiceImpl = v4;
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13) {
                                                                    this.logw("Upload aborted");
                                                                    this.sendLogBroadcast(15, "Upload aborted");
                                                                    this.terminateConnection(v6, 0);
                                                                    this.mProgressInfo.setProgress(-7);
                                                                    if (v4 == null) {
                                                                        if (!v19) {
                                                                            return;
                                                                        } else {
                                                                            this.stopForeground(v12);
                                                                            return;
                                                                        }
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_1) {
                                                                    this.sendLogBroadcast(20, "Device has disconnected");
                                                                    this.loge(v13_1.getMessage());
                                                                    this.close(v6);
                                                                    this.report(4096);
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_0) {
                                                                    int v14_0 = v13_0.getErrorNumber();
                                                                    if ((32768 & v14_0) <= 0) {
                                                                        int v14_1 = (v14_0 & -16385);
                                                                        void v0_51 = new Object[2];
                                                                        Object[] v34_1 = v0_51;
                                                                        v34_1[0] = Integer.valueOf(v14_1);
                                                                        v34_1[1] = no.nordicsemi.android.error.GattError.parse(v14_1);
                                                                        this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Error (0x%02X): %s", v34_1));
                                                                    } else {
                                                                        int v14_2 = (v14_0 & -32769);
                                                                        void v0_55 = new Object[2];
                                                                        Object[] v34_3 = v0_55;
                                                                        v34_3[0] = Integer.valueOf(v14_2);
                                                                        v34_3[1] = no.nordicsemi.android.error.GattError.parseConnectionError(v14_2);
                                                                        this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Error (0x%02X): %s", v34_3));
                                                                    }
                                                                    this.loge(v13_0.getMessage());
                                                                    this.terminateConnection(v6, v13_0.getErrorNumber());
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (int v5_67) {
                                                                    if (v4 != null) {
                                                                        v4.release();
                                                                    }
                                                                    throw v5_67;
                                                                }
                                                                if (v4 != null) {
                                                                    if (v4.initialize(p38, v6, v7, v8, v9_2)) {
                                                                        v4.performDfu(p38);
                                                                    }
                                                                } else {
                                                                    android.util.Log.w("DfuBaseService", "DFU Service not found.");
                                                                    this.sendLogBroadcast(15, "DFU Service not found");
                                                                    this.terminateConnection(v6, 4102);
                                                                    if (v4 != null) {
                                                                        v4.release();
                                                                    }
                                                                    if (!v19) {
                                                                        return;
                                                                    } else {
                                                                        this.stopForeground(v12);
                                                                        return;
                                                                    }
                                                                }
                                                            } else {
                                                                this.logw("Upload aborted");
                                                                this.sendLogBroadcast(15, "Upload aborted");
                                                                this.terminateConnection(v6, 0);
                                                                this.mProgressInfo.setProgress(-7);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            }
                                                        } else {
                                                            if ((this.mError & 32768) <= 0) {
                                                                int v14_3 = (this.mError & -16385);
                                                                this.loge(new StringBuilder().append("An error occurred during discovering services:").append(v14_3).toString());
                                                                void v0_87 = new Object[2];
                                                                Object[] v34_5 = v0_87;
                                                                v34_5[0] = Integer.valueOf(v14_3);
                                                                v34_5[1] = no.nordicsemi.android.error.GattError.parse(v14_3);
                                                                this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Connection failed (0x%02X): %s", v34_5));
                                                            } else {
                                                                int v14_4 = (this.mError & -32769);
                                                                this.loge(new StringBuilder().append("An error occurred while connecting to the device:").append(v14_4).toString());
                                                                void v0_94 = new Object[2];
                                                                Object[] v34_7 = v0_94;
                                                                v34_7[0] = Integer.valueOf(v14_4);
                                                                v34_7[1] = no.nordicsemi.android.error.GattError.parseConnectionError(v14_4);
                                                                this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Connection failed (0x%02X): %s", v34_7));
                                                            }
                                                            if (p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 0) != 0) {
                                                                this.terminateConnection(v6, this.mError);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            } else {
                                                                this.sendLogBroadcast(15, "Retrying...");
                                                                if (this.mConnectionState != 0) {
                                                                    this.disconnect(v6);
                                                                }
                                                                this.refreshDeviceCache(v6, 1);
                                                                this.close(v6);
                                                                this.logi("Restarting the service");
                                                                android.content.Intent v27_1 = new android.content.Intent();
                                                                v27_1.fillIn(p38, 24);
                                                                v27_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 1);
                                                                this.startService(v27_1);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            }
                                                        }
                                                    } else {
                                                        if (this.mError != 32901) {
                                                            this.loge("Device got disconnected before service discovery finished");
                                                            this.sendLogBroadcast(20, "Disconnected");
                                                        } else {
                                                            this.loge(new StringBuilder().append("Device not reachable. Check if the device with address ").append(v10).append(" is in range, is advertising and is connectable").toString());
                                                            this.sendLogBroadcast(20, "Error 133: Connection timeout");
                                                        }
                                                        this.terminateConnection(v6, 4096);
                                                        if (v19) {
                                                            this.stopForeground(v12);
                                                        }
                                                        return;
                                                    }
                                                } else {
                                                    this.loge("Bluetooth adapter disabled");
                                                    this.sendLogBroadcast(20, "Bluetooth adapter disabled");
                                                    this.report(4106);
                                                    if (!v19) {
                                                        return;
                                                    } else {
                                                        this.stopForeground(v12);
                                                        return;
                                                    }
                                                }
                                            } else {
                                                this.logw("Upload aborted");
                                                this.sendLogBroadcast(15, "Upload aborted");
                                                this.mProgressInfo.setProgress(-7);
                                                if (v19) {
                                                    this.stopForeground(v12);
                                                }
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_5) {
                                            this.loge("Firmware not word-aligned", v13_5);
                                            this.sendLogBroadcast(20, "Opening file failed: Firmware size must be word-aligned");
                                            this.report(4108);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_4) {
                                            this.loge("An exception occurred while calculating file size", v13_4);
                                            this.sendLogBroadcast(20, new StringBuilder().append("Opening file failed: ").append(v13_4.getLocalizedMessage()).toString());
                                            this.report(4098);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_3) {
                                            this.loge("An exception occurred while opening files. Did you set the firmware file?", v13_3);
                                            this.sendLogBroadcast(20, new StringBuilder().append("Opening file failed: ").append(v13_3.getLocalizedMessage()).toString());
                                            this.report(4098);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        }
                                        if (v18 != 0) {
                                            v8.mark(v8.available());
                                            if (v9_2 != null) {
                                                v9_2.mark(v9_2.available());
                                            }
                                        }
                                    } else {
                                        this.sendLogBroadcast(1, "Opening file...");
                                        if (v17_1 == null) {
                                            if (v15 == null) {
                                                if (v16 > 0) {
                                                    v8 = this.openInputStream(v16, v26, v25, v7);
                                                }
                                            } else {
                                                v8 = this.openInputStream(v15, v26, v25, v7);
                                            }
                                        } else {
                                            v8 = this.openInputStream(v17_1, v26, v25, v7);
                                        }
                                        if (v23_1 == null) {
                                            if (v21 == null) {
                                                if (v22 > 0) {
                                                    v9_0 = this.getResources().openRawResource(v22);
                                                }
                                            } else {
                                                java.io.FileInputStream v24_0 = new java.io.FileInputStream;
                                                v24_0(v21);
                                                v9_0 = v24_0;
                                            }
                                        } else {
                                            v9_0 = this.getContentResolver().openInputStream(v23_1);
                                        }
                                        if ((v8.available() % 4) == 0) {
                                        } else {
                                            throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("The new firmware is not word-aligned.");
                                        }
                                    }
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_2) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_6) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_5) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_4) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_3) {
                                }
                                this.loge("A security exception occurred while opening file", v13_2);
                                this.sendLogBroadcast(20, "Opening file failed: Permission required");
                                this.report(4097);
                                if (!v19) {
                                    return;
                                } else {
                                    this.stopForeground(v12);
                                    return;
                                }
                            } else {
                                v18 = 1;
                            }
                        } catch (int v5_129) {
                        }
                    }
                    if (v25 >= 0) {
                    } else {
                        v25 = 0;
                    }
                } else {
                    throw new NullPointerException("getNotificationTarget() must not return null if notifications are enabled");
                }
            } else {
                this.logw("Unable to determine file type");
                this.sendLogBroadcast(15, "Unable to determine file type");
                this.report(4105);
            }
        } else {
            this.logw("File type or file mime-type not supported");
            this.sendLogBroadcast(15, "File type or file mime-type not supported");
            this.report(4105);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'onHandleIntent', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.onHandleIntent():


    protected void onHandleIntent(android.content.Intent p38)
    {
        String v10 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS");
        String v11 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME");
        boolean v12 = p38.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_NOTIFICATION", 0);
        boolean v19 = p38.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_FOREGROUND_SERVICE", 1);
        String v15 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_PATH");
        android.net.Uri v17_1 = ((android.net.Uri) p38.getParcelableExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_URI"));
        int v16 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_RES_ID", 0);
        String v21 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_PATH");
        android.net.Uri v23_1 = ((android.net.Uri) p38.getParcelableExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_URI"));
        int v22 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_RES_ID", 0);
        int v7 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_TYPE", 0);
        if ((v15 != null) && (v7 == 0)) {
            if (!v15.toLowerCase(java.util.Locale.US).endsWith("zip")) {
                v7 = 4;
            } else {
                v7 = 0;
            }
        }
        String v26 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_MIME_TYPE");
        if (v26 == null) {
            if (v7 != 0) {
                v26 = "application/octet-stream";
            } else {
                v26 = "application/zip";
            }
        }
        if (((v7 & -8) <= 0) && (("application/zip".equals(v26)) || ("application/octet-stream".equals(v26)))) {
            if ((!"application/octet-stream".equals(v26)) || ((v7 == 1) || ((v7 == 2) || (v7 == 4)))) {
                if ((v12) || (this.getNotificationTarget() != null)) {
                    if ((!v19) && (android.os.Build$VERSION.SDK_INT >= 26)) {
                        this.logw("Foreground service disabled. Android Oreo or newer may kill a background service few moments after user closes the application.\nConsider enabling foreground service using DfuServiceInitiator#setForeground(boolean)");
                    }
                    no.nordicsemi.android.dfu.UuidHelper.assignCustomUuids(p38);
                    this.mDeviceAddress = v10;
                    this.mDeviceName = v11;
                    this.mDisableNotification = v12;
                    this.mConnectionState = 0;
                    this.mError = 0;
                    try {
                        int v25 = Integer.parseInt(android.preference.PreferenceManager.getDefaultSharedPreferences(this).getString("settings_mbr_size", String.valueOf(4096)));
                    } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13) {
                        v25 = 4096;
                        if (v19) {
                            this = this.startForeground();
                        }
                        this.sendLogBroadcast(1, "DFU service started");
                        java.io.InputStream v8 = this.mFirmwareInputStream;
                        java.io.ByteArrayInputStream v9_0 = this.mInitFileInputStream;
                        try {
                            int v18;
                            if (this.mFirmwareInputStream != null) {
                                v18 = 0;
                                try {
                                    if (v18 == 0) {
                                        java.io.FileInputStream v24_1 = v9_0;
                                        try {
                                            java.io.ByteArrayInputStream v9_2;
                                            if (!"application/zip".equals(v26)) {
                                                v9_2 = v24_1;
                                            } else {
                                                no.nordicsemi.android.dfu.internal.ArchiveInputStream v31 = ((no.nordicsemi.android.dfu.internal.ArchiveInputStream) v8);
                                                if (v7 != 0) {
                                                    v7 = v31.setContentType(v7);
                                                } else {
                                                    v7 = v31.getContentType();
                                                }
                                                if (((v7 & 4) <= 0) || ((v31.applicationImageSize() % 4) == 0)) {
                                                    if (((v7 & 2) <= 0) || ((v31.bootloaderImageSize() % 4) == 0)) {
                                                        if (((v7 & 1) <= 0) || ((v31.softDeviceImageSize() % 4) == 0)) {
                                                            if (v7 != 4) {
                                                                if (v31.getSystemInit() == null) {
                                                                } else {
                                                                    v9_2 = new java.io.ByteArrayInputStream(v31.getSystemInit());
                                                                }
                                                            } else {
                                                                if (v31.getApplicationInit() == null) {
                                                                } else {
                                                                    v9_2 = new java.io.ByteArrayInputStream(v31.getApplicationInit());
                                                                }
                                                            }
                                                        } else {
                                                            throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Soft Device firmware is not word-aligned.");
                                                        }
                                                    } else {
                                                        throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Bootloader firmware is not word-aligned.");
                                                    }
                                                } else {
                                                    throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Application firmware is not word-aligned.");
                                                }
                                            }
                                        } catch (int v5_129) {
                                            if (v19) {
                                                this.stopForeground(v12);
                                            }
                                            throw v5_129;
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_6) {
                                            this.loge("An exception occurred while opening file", v13_6);
                                            this.sendLogBroadcast(20, "Opening file failed: File not found");
                                            this.report(4097);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                            this.mFirmwareInputStream = v8;
                                            this.mInitFileInputStream = v9_2;
                                            this.sendLogBroadcast(5, "Firmware file opened successfully");
                                            if (v18 == 0) {
                                                this.waitFor(1000);
                                                this.waitFor(1000);
                                            }
                                            this.mProgressInfo = new no.nordicsemi.android.dfu.DfuProgressInfo(this);
                                            if (!this.mAborted) {
                                                this.sendLogBroadcast(1, "Connecting to DFU target...");
                                                this.mProgressInfo.setProgress(-1);
                                                android.bluetooth.BluetoothGatt v6 = this.connect(v10);
                                                if (v6 != null) {
                                                    if (this.mConnectionState != 0) {
                                                        if (this.mError <= 0) {
                                                            if (!this.mAborted) {
                                                                this.sendLogBroadcast(5, "Services discovered");
                                                                p38.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 0);
                                                                try {
                                                                    no.nordicsemi.android.dfu.DfuServiceProvider v29_1 = new no.nordicsemi.android.dfu.DfuServiceProvider();
                                                                    this.mDfuServiceImpl = v29_1;
                                                                    no.nordicsemi.android.dfu.DfuService v4 = v29_1.getServiceImpl(p38, this, v6);
                                                                    this.mDfuServiceImpl = v4;
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13) {
                                                                    this.logw("Upload aborted");
                                                                    this.sendLogBroadcast(15, "Upload aborted");
                                                                    this.terminateConnection(v6, 0);
                                                                    this.mProgressInfo.setProgress(-7);
                                                                    if (v4 == null) {
                                                                        if (!v19) {
                                                                            return;
                                                                        } else {
                                                                            this.stopForeground(v12);
                                                                            return;
                                                                        }
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_1) {
                                                                    this.sendLogBroadcast(20, "Device has disconnected");
                                                                    this.loge(v13_1.getMessage());
                                                                    this.close(v6);
                                                                    this.report(4096);
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_0) {
                                                                    int v14_0 = v13_0.getErrorNumber();
                                                                    if ((32768 & v14_0) <= 0) {
                                                                        int v14_1 = (v14_0 & -16385);
                                                                        void v0_51 = new Object[2];
                                                                        Object[] v34_1 = v0_51;
                                                                        v34_1[0] = Integer.valueOf(v14_1);
                                                                        v34_1[1] = no.nordicsemi.android.error.GattError.parse(v14_1);
                                                                        this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Error (0x%02X): %s", v34_1));
                                                                    } else {
                                                                        int v14_2 = (v14_0 & -32769);
                                                                        void v0_55 = new Object[2];
                                                                        Object[] v34_3 = v0_55;
                                                                        v34_3[0] = Integer.valueOf(v14_2);
                                                                        v34_3[1] = no.nordicsemi.android.error.GattError.parseConnectionError(v14_2);
                                                                        this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Error (0x%02X): %s", v34_3));
                                                                    }
                                                                    this.loge(v13_0.getMessage());
                                                                    this.terminateConnection(v6, v13_0.getErrorNumber());
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (int v5_67) {
                                                                    if (v4 != null) {
                                                                        v4.release();
                                                                    }
                                                                    throw v5_67;
                                                                }
                                                                if (v4 != null) {
                                                                    if (v4.initialize(p38, v6, v7, v8, v9_2)) {
                                                                        v4.performDfu(p38);
                                                                    }
                                                                } else {
                                                                    android.util.Log.w("DfuBaseService", "DFU Service not found.");
                                                                    this.sendLogBroadcast(15, "DFU Service not found");
                                                                    this.terminateConnection(v6, 4102);
                                                                    if (v4 != null) {
                                                                        v4.release();
                                                                    }
                                                                    if (!v19) {
                                                                        return;
                                                                    } else {
                                                                        this.stopForeground(v12);
                                                                        return;
                                                                    }
                                                                }
                                                            } else {
                                                                this.logw("Upload aborted");
                                                                this.sendLogBroadcast(15, "Upload aborted");
                                                                this.terminateConnection(v6, 0);
                                                                this.mProgressInfo.setProgress(-7);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            }
                                                        } else {
                                                            if ((this.mError & 32768) <= 0) {
                                                                int v14_3 = (this.mError & -16385);
                                                                this.loge(new StringBuilder().append("An error occurred during discovering services:").append(v14_3).toString());
                                                                void v0_87 = new Object[2];
                                                                Object[] v34_5 = v0_87;
                                                                v34_5[0] = Integer.valueOf(v14_3);
                                                                v34_5[1] = no.nordicsemi.android.error.GattError.parse(v14_3);
                                                                this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Connection failed (0x%02X): %s", v34_5));
                                                            } else {
                                                                int v14_4 = (this.mError & -32769);
                                                                this.loge(new StringBuilder().append("An error occurred while connecting to the device:").append(v14_4).toString());
                                                                void v0_94 = new Object[2];
                                                                Object[] v34_7 = v0_94;
                                                                v34_7[0] = Integer.valueOf(v14_4);
                                                                v34_7[1] = no.nordicsemi.android.error.GattError.parseConnectionError(v14_4);
                                                                this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Connection failed (0x%02X): %s", v34_7));
                                                            }
                                                            if (p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 0) != 0) {
                                                                this.terminateConnection(v6, this.mError);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            } else {
                                                                this.sendLogBroadcast(15, "Retrying...");
                                                                if (this.mConnectionState != 0) {
                                                                    this.disconnect(v6);
                                                                }
                                                                this.refreshDeviceCache(v6, 1);
                                                                this.close(v6);
                                                                this.logi("Restarting the service");
                                                                android.content.Intent v27_1 = new android.content.Intent();
                                                                v27_1.fillIn(p38, 24);
                                                                v27_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 1);
                                                                this.startService(v27_1);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            }
                                                        }
                                                    } else {
                                                        if (this.mError != 32901) {
                                                            this.loge("Device got disconnected before service discovery finished");
                                                            this.sendLogBroadcast(20, "Disconnected");
                                                        } else {
                                                            this.loge(new StringBuilder().append("Device not reachable. Check if the device with address ").append(v10).append(" is in range, is advertising and is connectable").toString());
                                                            this.sendLogBroadcast(20, "Error 133: Connection timeout");
                                                        }
                                                        this.terminateConnection(v6, 4096);
                                                        if (v19) {
                                                            this.stopForeground(v12);
                                                        }
                                                        return;
                                                    }
                                                } else {
                                                    this.loge("Bluetooth adapter disabled");
                                                    this.sendLogBroadcast(20, "Bluetooth adapter disabled");
                                                    this.report(4106);
                                                    if (!v19) {
                                                        return;
                                                    } else {
                                                        this.stopForeground(v12);
                                                        return;
                                                    }
                                                }
                                            } else {
                                                this.logw("Upload aborted");
                                                this.sendLogBroadcast(15, "Upload aborted");
                                                this.mProgressInfo.setProgress(-7);
                                                if (v19) {
                                                    this.stopForeground(v12);
                                                }
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_5) {
                                            this.loge("Firmware not word-aligned", v13_5);
                                            this.sendLogBroadcast(20, "Opening file failed: Firmware size must be word-aligned");
                                            this.report(4108);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_4) {
                                            this.loge("An exception occurred while calculating file size", v13_4);
                                            this.sendLogBroadcast(20, new StringBuilder().append("Opening file failed: ").append(v13_4.getLocalizedMessage()).toString());
                                            this.report(4098);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_3) {
                                            this.loge("An exception occurred while opening files. Did you set the firmware file?", v13_3);
                                            this.sendLogBroadcast(20, new StringBuilder().append("Opening file failed: ").append(v13_3.getLocalizedMessage()).toString());
                                            this.report(4098);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        }
                                        if (v18 != 0) {
                                            v8.mark(v8.available());
                                            if (v9_2 != null) {
                                                v9_2.mark(v9_2.available());
                                            }
                                        }
                                    } else {
                                        this.sendLogBroadcast(1, "Opening file...");
                                        if (v17_1 == null) {
                                            if (v15 == null) {
                                                if (v16 > 0) {
                                                    v8 = this.openInputStream(v16, v26, v25, v7);
                                                }
                                            } else {
                                                v8 = this.openInputStream(v15, v26, v25, v7);
                                            }
                                        } else {
                                            v8 = this.openInputStream(v17_1, v26, v25, v7);
                                        }
                                        if (v23_1 == null) {
                                            if (v21 == null) {
                                                if (v22 > 0) {
                                                    v9_0 = this.getResources().openRawResource(v22);
                                                }
                                            } else {
                                                java.io.FileInputStream v24_0 = new java.io.FileInputStream;
                                                v24_0(v21);
                                                v9_0 = v24_0;
                                            }
                                        } else {
                                            v9_0 = this.getContentResolver().openInputStream(v23_1);
                                        }
                                        if ((v8.available() % 4) == 0) {
                                        } else {
                                            throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("The new firmware is not word-aligned.");
                                        }
                                    }
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_2) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_6) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_5) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_4) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_3) {
                                }
                                this.loge("A security exception occurred while opening file", v13_2);
                                this.sendLogBroadcast(20, "Opening file failed: Permission required");
                                this.report(4097);
                                if (!v19) {
                                    return;
                                } else {
                                    this.stopForeground(v12);
                                    return;
                                }
                            } else {
                                v18 = 1;
                            }
                        } catch (int v5_129) {
                        }
                    }
                    if (v25 >= 0) {
                    } else {
                        v25 = 0;
                    }
                } else {
                    throw new NullPointerException("getNotificationTarget() must not return null if notifications are enabled");
                }
            } else {
                this.logw("Unable to determine file type");
                this.sendLogBroadcast(15, "Unable to determine file type");
                this.report(4105);
            }
        } else {
            this.logw("File type or file mime-type not supported");
            this.sendLogBroadcast(15, "File type or file mime-type not supported");
            this.report(4105);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR' ==>>> Sink '['Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'onHandleIntent', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'report', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendErrorBroadcast', '(I)V'), ('Landroid/content/Intent;', '<init>', '(Ljava/lang/String;)V')]]

Use of a string value no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.onHandleIntent():


    protected void onHandleIntent(android.content.Intent p38)
    {
        String v10 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS");
        String v11 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME");
        boolean v12 = p38.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_NOTIFICATION", 0);
        boolean v19 = p38.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_FOREGROUND_SERVICE", 1);
        String v15 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_PATH");
        android.net.Uri v17_1 = ((android.net.Uri) p38.getParcelableExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_URI"));
        int v16 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_RES_ID", 0);
        String v21 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_PATH");
        android.net.Uri v23_1 = ((android.net.Uri) p38.getParcelableExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_URI"));
        int v22 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_RES_ID", 0);
        int v7 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_TYPE", 0);
        if ((v15 != null) && (v7 == 0)) {
            if (!v15.toLowerCase(java.util.Locale.US).endsWith("zip")) {
                v7 = 4;
            } else {
                v7 = 0;
            }
        }
        String v26 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_MIME_TYPE");
        if (v26 == null) {
            if (v7 != 0) {
                v26 = "application/octet-stream";
            } else {
                v26 = "application/zip";
            }
        }
        if (((v7 & -8) <= 0) && (("application/zip".equals(v26)) || ("application/octet-stream".equals(v26)))) {
            if ((!"application/octet-stream".equals(v26)) || ((v7 == 1) || ((v7 == 2) || (v7 == 4)))) {
                if ((v12) || (this.getNotificationTarget() != null)) {
                    if ((!v19) && (android.os.Build$VERSION.SDK_INT >= 26)) {
                        this.logw("Foreground service disabled. Android Oreo or newer may kill a background service few moments after user closes the application.\nConsider enabling foreground service using DfuServiceInitiator#setForeground(boolean)");
                    }
                    no.nordicsemi.android.dfu.UuidHelper.assignCustomUuids(p38);
                    this.mDeviceAddress = v10;
                    this.mDeviceName = v11;
                    this.mDisableNotification = v12;
                    this.mConnectionState = 0;
                    this.mError = 0;
                    try {
                        int v25 = Integer.parseInt(android.preference.PreferenceManager.getDefaultSharedPreferences(this).getString("settings_mbr_size", String.valueOf(4096)));
                    } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13) {
                        v25 = 4096;
                        if (v19) {
                            this = this.startForeground();
                        }
                        this.sendLogBroadcast(1, "DFU service started");
                        java.io.InputStream v8 = this.mFirmwareInputStream;
                        java.io.ByteArrayInputStream v9_0 = this.mInitFileInputStream;
                        try {
                            int v18;
                            if (this.mFirmwareInputStream != null) {
                                v18 = 0;
                                try {
                                    if (v18 == 0) {
                                        java.io.FileInputStream v24_1 = v9_0;
                                        try {
                                            java.io.ByteArrayInputStream v9_2;
                                            if (!"application/zip".equals(v26)) {
                                                v9_2 = v24_1;
                                            } else {
                                                no.nordicsemi.android.dfu.internal.ArchiveInputStream v31 = ((no.nordicsemi.android.dfu.internal.ArchiveInputStream) v8);
                                                if (v7 != 0) {
                                                    v7 = v31.setContentType(v7);
                                                } else {
                                                    v7 = v31.getContentType();
                                                }
                                                if (((v7 & 4) <= 0) || ((v31.applicationImageSize() % 4) == 0)) {
                                                    if (((v7 & 2) <= 0) || ((v31.bootloaderImageSize() % 4) == 0)) {
                                                        if (((v7 & 1) <= 0) || ((v31.softDeviceImageSize() % 4) == 0)) {
                                                            if (v7 != 4) {
                                                                if (v31.getSystemInit() == null) {
                                                                } else {
                                                                    v9_2 = new java.io.ByteArrayInputStream(v31.getSystemInit());
                                                                }
                                                            } else {
                                                                if (v31.getApplicationInit() == null) {
                                                                } else {
                                                                    v9_2 = new java.io.ByteArrayInputStream(v31.getApplicationInit());
                                                                }
                                                            }
                                                        } else {
                                                            throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Soft Device firmware is not word-aligned.");
                                                        }
                                                    } else {
                                                        throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Bootloader firmware is not word-aligned.");
                                                    }
                                                } else {
                                                    throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Application firmware is not word-aligned.");
                                                }
                                            }
                                        } catch (int v5_129) {
                                            if (v19) {
                                                this.stopForeground(v12);
                                            }
                                            throw v5_129;
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_6) {
                                            this.loge("An exception occurred while opening file", v13_6);
                                            this.sendLogBroadcast(20, "Opening file failed: File not found");
                                            this.report(4097);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                            this.mFirmwareInputStream = v8;
                                            this.mInitFileInputStream = v9_2;
                                            this.sendLogBroadcast(5, "Firmware file opened successfully");
                                            if (v18 == 0) {
                                                this.waitFor(1000);
                                                this.waitFor(1000);
                                            }
                                            this.mProgressInfo = new no.nordicsemi.android.dfu.DfuProgressInfo(this);
                                            if (!this.mAborted) {
                                                this.sendLogBroadcast(1, "Connecting to DFU target...");
                                                this.mProgressInfo.setProgress(-1);
                                                android.bluetooth.BluetoothGatt v6 = this.connect(v10);
                                                if (v6 != null) {
                                                    if (this.mConnectionState != 0) {
                                                        if (this.mError <= 0) {
                                                            if (!this.mAborted) {
                                                                this.sendLogBroadcast(5, "Services discovered");
                                                                p38.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 0);
                                                                try {
                                                                    no.nordicsemi.android.dfu.DfuServiceProvider v29_1 = new no.nordicsemi.android.dfu.DfuServiceProvider();
                                                                    this.mDfuServiceImpl = v29_1;
                                                                    no.nordicsemi.android.dfu.DfuService v4 = v29_1.getServiceImpl(p38, this, v6);
                                                                    this.mDfuServiceImpl = v4;
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13) {
                                                                    this.logw("Upload aborted");
                                                                    this.sendLogBroadcast(15, "Upload aborted");
                                                                    this.terminateConnection(v6, 0);
                                                                    this.mProgressInfo.setProgress(-7);
                                                                    if (v4 == null) {
                                                                        if (!v19) {
                                                                            return;
                                                                        } else {
                                                                            this.stopForeground(v12);
                                                                            return;
                                                                        }
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_1) {
                                                                    this.sendLogBroadcast(20, "Device has disconnected");
                                                                    this.loge(v13_1.getMessage());
                                                                    this.close(v6);
                                                                    this.report(4096);
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_0) {
                                                                    int v14_0 = v13_0.getErrorNumber();
                                                                    if ((32768 & v14_0) <= 0) {
                                                                        int v14_1 = (v14_0 & -16385);
                                                                        void v0_51 = new Object[2];
                                                                        Object[] v34_1 = v0_51;
                                                                        v34_1[0] = Integer.valueOf(v14_1);
                                                                        v34_1[1] = no.nordicsemi.android.error.GattError.parse(v14_1);
                                                                        this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Error (0x%02X): %s", v34_1));
                                                                    } else {
                                                                        int v14_2 = (v14_0 & -32769);
                                                                        void v0_55 = new Object[2];
                                                                        Object[] v34_3 = v0_55;
                                                                        v34_3[0] = Integer.valueOf(v14_2);
                                                                        v34_3[1] = no.nordicsemi.android.error.GattError.parseConnectionError(v14_2);
                                                                        this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Error (0x%02X): %s", v34_3));
                                                                    }
                                                                    this.loge(v13_0.getMessage());
                                                                    this.terminateConnection(v6, v13_0.getErrorNumber());
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (int v5_67) {
                                                                    if (v4 != null) {
                                                                        v4.release();
                                                                    }
                                                                    throw v5_67;
                                                                }
                                                                if (v4 != null) {
                                                                    if (v4.initialize(p38, v6, v7, v8, v9_2)) {
                                                                        v4.performDfu(p38);
                                                                    }
                                                                } else {
                                                                    android.util.Log.w("DfuBaseService", "DFU Service not found.");
                                                                    this.sendLogBroadcast(15, "DFU Service not found");
                                                                    this.terminateConnection(v6, 4102);
                                                                    if (v4 != null) {
                                                                        v4.release();
                                                                    }
                                                                    if (!v19) {
                                                                        return;
                                                                    } else {
                                                                        this.stopForeground(v12);
                                                                        return;
                                                                    }
                                                                }
                                                            } else {
                                                                this.logw("Upload aborted");
                                                                this.sendLogBroadcast(15, "Upload aborted");
                                                                this.terminateConnection(v6, 0);
                                                                this.mProgressInfo.setProgress(-7);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            }
                                                        } else {
                                                            if ((this.mError & 32768) <= 0) {
                                                                int v14_3 = (this.mError & -16385);
                                                                this.loge(new StringBuilder().append("An error occurred during discovering services:").append(v14_3).toString());
                                                                void v0_87 = new Object[2];
                                                                Object[] v34_5 = v0_87;
                                                                v34_5[0] = Integer.valueOf(v14_3);
                                                                v34_5[1] = no.nordicsemi.android.error.GattError.parse(v14_3);
                                                                this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Connection failed (0x%02X): %s", v34_5));
                                                            } else {
                                                                int v14_4 = (this.mError & -32769);
                                                                this.loge(new StringBuilder().append("An error occurred while connecting to the device:").append(v14_4).toString());
                                                                void v0_94 = new Object[2];
                                                                Object[] v34_7 = v0_94;
                                                                v34_7[0] = Integer.valueOf(v14_4);
                                                                v34_7[1] = no.nordicsemi.android.error.GattError.parseConnectionError(v14_4);
                                                                this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Connection failed (0x%02X): %s", v34_7));
                                                            }
                                                            if (p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 0) != 0) {
                                                                this.terminateConnection(v6, this.mError);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            } else {
                                                                this.sendLogBroadcast(15, "Retrying...");
                                                                if (this.mConnectionState != 0) {
                                                                    this.disconnect(v6);
                                                                }
                                                                this.refreshDeviceCache(v6, 1);
                                                                this.close(v6);
                                                                this.logi("Restarting the service");
                                                                android.content.Intent v27_1 = new android.content.Intent();
                                                                v27_1.fillIn(p38, 24);
                                                                v27_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 1);
                                                                this.startService(v27_1);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            }
                                                        }
                                                    } else {
                                                        if (this.mError != 32901) {
                                                            this.loge("Device got disconnected before service discovery finished");
                                                            this.sendLogBroadcast(20, "Disconnected");
                                                        } else {
                                                            this.loge(new StringBuilder().append("Device not reachable. Check if the device with address ").append(v10).append(" is in range, is advertising and is connectable").toString());
                                                            this.sendLogBroadcast(20, "Error 133: Connection timeout");
                                                        }
                                                        this.terminateConnection(v6, 4096);
                                                        if (v19) {
                                                            this.stopForeground(v12);
                                                        }
                                                        return;
                                                    }
                                                } else {
                                                    this.loge("Bluetooth adapter disabled");
                                                    this.sendLogBroadcast(20, "Bluetooth adapter disabled");
                                                    this.report(4106);
                                                    if (!v19) {
                                                        return;
                                                    } else {
                                                        this.stopForeground(v12);
                                                        return;
                                                    }
                                                }
                                            } else {
                                                this.logw("Upload aborted");
                                                this.sendLogBroadcast(15, "Upload aborted");
                                                this.mProgressInfo.setProgress(-7);
                                                if (v19) {
                                                    this.stopForeground(v12);
                                                }
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_5) {
                                            this.loge("Firmware not word-aligned", v13_5);
                                            this.sendLogBroadcast(20, "Opening file failed: Firmware size must be word-aligned");
                                            this.report(4108);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_4) {
                                            this.loge("An exception occurred while calculating file size", v13_4);
                                            this.sendLogBroadcast(20, new StringBuilder().append("Opening file failed: ").append(v13_4.getLocalizedMessage()).toString());
                                            this.report(4098);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_3) {
                                            this.loge("An exception occurred while opening files. Did you set the firmware file?", v13_3);
                                            this.sendLogBroadcast(20, new StringBuilder().append("Opening file failed: ").append(v13_3.getLocalizedMessage()).toString());
                                            this.report(4098);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        }
                                        if (v18 != 0) {
                                            v8.mark(v8.available());
                                            if (v9_2 != null) {
                                                v9_2.mark(v9_2.available());
                                            }
                                        }
                                    } else {
                                        this.sendLogBroadcast(1, "Opening file...");
                                        if (v17_1 == null) {
                                            if (v15 == null) {
                                                if (v16 > 0) {
                                                    v8 = this.openInputStream(v16, v26, v25, v7);
                                                }
                                            } else {
                                                v8 = this.openInputStream(v15, v26, v25, v7);
                                            }
                                        } else {
                                            v8 = this.openInputStream(v17_1, v26, v25, v7);
                                        }
                                        if (v23_1 == null) {
                                            if (v21 == null) {
                                                if (v22 > 0) {
                                                    v9_0 = this.getResources().openRawResource(v22);
                                                }
                                            } else {
                                                java.io.FileInputStream v24_0 = new java.io.FileInputStream;
                                                v24_0(v21);
                                                v9_0 = v24_0;
                                            }
                                        } else {
                                            v9_0 = this.getContentResolver().openInputStream(v23_1);
                                        }
                                        if ((v8.available() % 4) == 0) {
                                        } else {
                                            throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("The new firmware is not word-aligned.");
                                        }
                                    }
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_2) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_6) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_5) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_4) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_3) {
                                }
                                this.loge("A security exception occurred while opening file", v13_2);
                                this.sendLogBroadcast(20, "Opening file failed: Permission required");
                                this.report(4097);
                                if (!v19) {
                                    return;
                                } else {
                                    this.stopForeground(v12);
                                    return;
                                }
                            } else {
                                v18 = 1;
                            }
                        } catch (int v5_129) {
                        }
                    }
                    if (v25 >= 0) {
                    } else {
                        v25 = 0;
                    }
                } else {
                    throw new NullPointerException("getNotificationTarget() must not return null if notifications are enabled");
                }
            } else {
                this.logw("Unable to determine file type");
                this.sendLogBroadcast(15, "Unable to determine file type");
                this.report(4105);
            }
        } else {
            this.logw("File type or file mime-type not supported");
            this.sendLogBroadcast(15, "File type or file mime-type not supported");
            this.report(4105);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.report():


    private void report(int p11)
    {
        this.sendErrorBroadcast(p11);
        if (!this.mDisableNotification) {
            String v2;
            String v1 = this.mDeviceAddress;
            if (this.mDeviceName == null) {
                v2 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
            } else {
                v2 = this.mDeviceName;
            }
            android.support.v4.app.NotificationCompat$Builder v0 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1).setColor(-65536).setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error_msg)).setAutoCancel(1);
            android.content.Intent v3_1 = new android.content.Intent(this, this.getNotificationTarget());
            v3_1.addFlags(268435456);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v1);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v2);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", p11);
            v0.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v3_1, 134217728));
            this.updateErrorNotification(v0);
            ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v0.build());
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendErrorBroadcast():


    private void sendErrorBroadcast(int p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR");
        if ((p4 & 16384) <= 0) {
            if ((32768 & p4) <= 0) {
                if ((p4 & 8192) <= 0) {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4);
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 0);
                } else {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -8193));
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 3);
                }
            } else {
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (-32769 & p4));
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 1);
            }
        } else {
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -16385));
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 2);
        }
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.<init>() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'onHandleIntent', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.onHandleIntent():


    protected void onHandleIntent(android.content.Intent p38)
    {
        String v10 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS");
        String v11 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME");
        boolean v12 = p38.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_NOTIFICATION", 0);
        boolean v19 = p38.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_FOREGROUND_SERVICE", 1);
        String v15 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_PATH");
        android.net.Uri v17_1 = ((android.net.Uri) p38.getParcelableExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_URI"));
        int v16 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_RES_ID", 0);
        String v21 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_PATH");
        android.net.Uri v23_1 = ((android.net.Uri) p38.getParcelableExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_URI"));
        int v22 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_RES_ID", 0);
        int v7 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_TYPE", 0);
        if ((v15 != null) && (v7 == 0)) {
            if (!v15.toLowerCase(java.util.Locale.US).endsWith("zip")) {
                v7 = 4;
            } else {
                v7 = 0;
            }
        }
        String v26 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_MIME_TYPE");
        if (v26 == null) {
            if (v7 != 0) {
                v26 = "application/octet-stream";
            } else {
                v26 = "application/zip";
            }
        }
        if (((v7 & -8) <= 0) && (("application/zip".equals(v26)) || ("application/octet-stream".equals(v26)))) {
            if ((!"application/octet-stream".equals(v26)) || ((v7 == 1) || ((v7 == 2) || (v7 == 4)))) {
                if ((v12) || (this.getNotificationTarget() != null)) {
                    if ((!v19) && (android.os.Build$VERSION.SDK_INT >= 26)) {
                        this.logw("Foreground service disabled. Android Oreo or newer may kill a background service few moments after user closes the application.\nConsider enabling foreground service using DfuServiceInitiator#setForeground(boolean)");
                    }
                    no.nordicsemi.android.dfu.UuidHelper.assignCustomUuids(p38);
                    this.mDeviceAddress = v10;
                    this.mDeviceName = v11;
                    this.mDisableNotification = v12;
                    this.mConnectionState = 0;
                    this.mError = 0;
                    try {
                        int v25 = Integer.parseInt(android.preference.PreferenceManager.getDefaultSharedPreferences(this).getString("settings_mbr_size", String.valueOf(4096)));
                    } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13) {
                        v25 = 4096;
                        if (v19) {
                            this = this.startForeground();
                        }
                        this.sendLogBroadcast(1, "DFU service started");
                        java.io.InputStream v8 = this.mFirmwareInputStream;
                        java.io.ByteArrayInputStream v9_0 = this.mInitFileInputStream;
                        try {
                            int v18;
                            if (this.mFirmwareInputStream != null) {
                                v18 = 0;
                                try {
                                    if (v18 == 0) {
                                        java.io.FileInputStream v24_1 = v9_0;
                                        try {
                                            java.io.ByteArrayInputStream v9_2;
                                            if (!"application/zip".equals(v26)) {
                                                v9_2 = v24_1;
                                            } else {
                                                no.nordicsemi.android.dfu.internal.ArchiveInputStream v31 = ((no.nordicsemi.android.dfu.internal.ArchiveInputStream) v8);
                                                if (v7 != 0) {
                                                    v7 = v31.setContentType(v7);
                                                } else {
                                                    v7 = v31.getContentType();
                                                }
                                                if (((v7 & 4) <= 0) || ((v31.applicationImageSize() % 4) == 0)) {
                                                    if (((v7 & 2) <= 0) || ((v31.bootloaderImageSize() % 4) == 0)) {
                                                        if (((v7 & 1) <= 0) || ((v31.softDeviceImageSize() % 4) == 0)) {
                                                            if (v7 != 4) {
                                                                if (v31.getSystemInit() == null) {
                                                                } else {
                                                                    v9_2 = new java.io.ByteArrayInputStream(v31.getSystemInit());
                                                                }
                                                            } else {
                                                                if (v31.getApplicationInit() == null) {
                                                                } else {
                                                                    v9_2 = new java.io.ByteArrayInputStream(v31.getApplicationInit());
                                                                }
                                                            }
                                                        } else {
                                                            throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Soft Device firmware is not word-aligned.");
                                                        }
                                                    } else {
                                                        throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Bootloader firmware is not word-aligned.");
                                                    }
                                                } else {
                                                    throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Application firmware is not word-aligned.");
                                                }
                                            }
                                        } catch (int v5_129) {
                                            if (v19) {
                                                this.stopForeground(v12);
                                            }
                                            throw v5_129;
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_6) {
                                            this.loge("An exception occurred while opening file", v13_6);
                                            this.sendLogBroadcast(20, "Opening file failed: File not found");
                                            this.report(4097);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                            this.mFirmwareInputStream = v8;
                                            this.mInitFileInputStream = v9_2;
                                            this.sendLogBroadcast(5, "Firmware file opened successfully");
                                            if (v18 == 0) {
                                                this.waitFor(1000);
                                                this.waitFor(1000);
                                            }
                                            this.mProgressInfo = new no.nordicsemi.android.dfu.DfuProgressInfo(this);
                                            if (!this.mAborted) {
                                                this.sendLogBroadcast(1, "Connecting to DFU target...");
                                                this.mProgressInfo.setProgress(-1);
                                                android.bluetooth.BluetoothGatt v6 = this.connect(v10);
                                                if (v6 != null) {
                                                    if (this.mConnectionState != 0) {
                                                        if (this.mError <= 0) {
                                                            if (!this.mAborted) {
                                                                this.sendLogBroadcast(5, "Services discovered");
                                                                p38.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 0);
                                                                try {
                                                                    no.nordicsemi.android.dfu.DfuServiceProvider v29_1 = new no.nordicsemi.android.dfu.DfuServiceProvider();
                                                                    this.mDfuServiceImpl = v29_1;
                                                                    no.nordicsemi.android.dfu.DfuService v4 = v29_1.getServiceImpl(p38, this, v6);
                                                                    this.mDfuServiceImpl = v4;
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13) {
                                                                    this.logw("Upload aborted");
                                                                    this.sendLogBroadcast(15, "Upload aborted");
                                                                    this.terminateConnection(v6, 0);
                                                                    this.mProgressInfo.setProgress(-7);
                                                                    if (v4 == null) {
                                                                        if (!v19) {
                                                                            return;
                                                                        } else {
                                                                            this.stopForeground(v12);
                                                                            return;
                                                                        }
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_1) {
                                                                    this.sendLogBroadcast(20, "Device has disconnected");
                                                                    this.loge(v13_1.getMessage());
                                                                    this.close(v6);
                                                                    this.report(4096);
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_0) {
                                                                    int v14_0 = v13_0.getErrorNumber();
                                                                    if ((32768 & v14_0) <= 0) {
                                                                        int v14_1 = (v14_0 & -16385);
                                                                        void v0_51 = new Object[2];
                                                                        Object[] v34_1 = v0_51;
                                                                        v34_1[0] = Integer.valueOf(v14_1);
                                                                        v34_1[1] = no.nordicsemi.android.error.GattError.parse(v14_1);
                                                                        this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Error (0x%02X): %s", v34_1));
                                                                    } else {
                                                                        int v14_2 = (v14_0 & -32769);
                                                                        void v0_55 = new Object[2];
                                                                        Object[] v34_3 = v0_55;
                                                                        v34_3[0] = Integer.valueOf(v14_2);
                                                                        v34_3[1] = no.nordicsemi.android.error.GattError.parseConnectionError(v14_2);
                                                                        this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Error (0x%02X): %s", v34_3));
                                                                    }
                                                                    this.loge(v13_0.getMessage());
                                                                    this.terminateConnection(v6, v13_0.getErrorNumber());
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (int v5_67) {
                                                                    if (v4 != null) {
                                                                        v4.release();
                                                                    }
                                                                    throw v5_67;
                                                                }
                                                                if (v4 != null) {
                                                                    if (v4.initialize(p38, v6, v7, v8, v9_2)) {
                                                                        v4.performDfu(p38);
                                                                    }
                                                                } else {
                                                                    android.util.Log.w("DfuBaseService", "DFU Service not found.");
                                                                    this.sendLogBroadcast(15, "DFU Service not found");
                                                                    this.terminateConnection(v6, 4102);
                                                                    if (v4 != null) {
                                                                        v4.release();
                                                                    }
                                                                    if (!v19) {
                                                                        return;
                                                                    } else {
                                                                        this.stopForeground(v12);
                                                                        return;
                                                                    }
                                                                }
                                                            } else {
                                                                this.logw("Upload aborted");
                                                                this.sendLogBroadcast(15, "Upload aborted");
                                                                this.terminateConnection(v6, 0);
                                                                this.mProgressInfo.setProgress(-7);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            }
                                                        } else {
                                                            if ((this.mError & 32768) <= 0) {
                                                                int v14_3 = (this.mError & -16385);
                                                                this.loge(new StringBuilder().append("An error occurred during discovering services:").append(v14_3).toString());
                                                                void v0_87 = new Object[2];
                                                                Object[] v34_5 = v0_87;
                                                                v34_5[0] = Integer.valueOf(v14_3);
                                                                v34_5[1] = no.nordicsemi.android.error.GattError.parse(v14_3);
                                                                this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Connection failed (0x%02X): %s", v34_5));
                                                            } else {
                                                                int v14_4 = (this.mError & -32769);
                                                                this.loge(new StringBuilder().append("An error occurred while connecting to the device:").append(v14_4).toString());
                                                                void v0_94 = new Object[2];
                                                                Object[] v34_7 = v0_94;
                                                                v34_7[0] = Integer.valueOf(v14_4);
                                                                v34_7[1] = no.nordicsemi.android.error.GattError.parseConnectionError(v14_4);
                                                                this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Connection failed (0x%02X): %s", v34_7));
                                                            }
                                                            if (p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 0) != 0) {
                                                                this.terminateConnection(v6, this.mError);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            } else {
                                                                this.sendLogBroadcast(15, "Retrying...");
                                                                if (this.mConnectionState != 0) {
                                                                    this.disconnect(v6);
                                                                }
                                                                this.refreshDeviceCache(v6, 1);
                                                                this.close(v6);
                                                                this.logi("Restarting the service");
                                                                android.content.Intent v27_1 = new android.content.Intent();
                                                                v27_1.fillIn(p38, 24);
                                                                v27_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 1);
                                                                this.startService(v27_1);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            }
                                                        }
                                                    } else {
                                                        if (this.mError != 32901) {
                                                            this.loge("Device got disconnected before service discovery finished");
                                                            this.sendLogBroadcast(20, "Disconnected");
                                                        } else {
                                                            this.loge(new StringBuilder().append("Device not reachable. Check if the device with address ").append(v10).append(" is in range, is advertising and is connectable").toString());
                                                            this.sendLogBroadcast(20, "Error 133: Connection timeout");
                                                        }
                                                        this.terminateConnection(v6, 4096);
                                                        if (v19) {
                                                            this.stopForeground(v12);
                                                        }
                                                        return;
                                                    }
                                                } else {
                                                    this.loge("Bluetooth adapter disabled");
                                                    this.sendLogBroadcast(20, "Bluetooth adapter disabled");
                                                    this.report(4106);
                                                    if (!v19) {
                                                        return;
                                                    } else {
                                                        this.stopForeground(v12);
                                                        return;
                                                    }
                                                }
                                            } else {
                                                this.logw("Upload aborted");
                                                this.sendLogBroadcast(15, "Upload aborted");
                                                this.mProgressInfo.setProgress(-7);
                                                if (v19) {
                                                    this.stopForeground(v12);
                                                }
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_5) {
                                            this.loge("Firmware not word-aligned", v13_5);
                                            this.sendLogBroadcast(20, "Opening file failed: Firmware size must be word-aligned");
                                            this.report(4108);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_4) {
                                            this.loge("An exception occurred while calculating file size", v13_4);
                                            this.sendLogBroadcast(20, new StringBuilder().append("Opening file failed: ").append(v13_4.getLocalizedMessage()).toString());
                                            this.report(4098);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_3) {
                                            this.loge("An exception occurred while opening files. Did you set the firmware file?", v13_3);
                                            this.sendLogBroadcast(20, new StringBuilder().append("Opening file failed: ").append(v13_3.getLocalizedMessage()).toString());
                                            this.report(4098);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        }
                                        if (v18 != 0) {
                                            v8.mark(v8.available());
                                            if (v9_2 != null) {
                                                v9_2.mark(v9_2.available());
                                            }
                                        }
                                    } else {
                                        this.sendLogBroadcast(1, "Opening file...");
                                        if (v17_1 == null) {
                                            if (v15 == null) {
                                                if (v16 > 0) {
                                                    v8 = this.openInputStream(v16, v26, v25, v7);
                                                }
                                            } else {
                                                v8 = this.openInputStream(v15, v26, v25, v7);
                                            }
                                        } else {
                                            v8 = this.openInputStream(v17_1, v26, v25, v7);
                                        }
                                        if (v23_1 == null) {
                                            if (v21 == null) {
                                                if (v22 > 0) {
                                                    v9_0 = this.getResources().openRawResource(v22);
                                                }
                                            } else {
                                                java.io.FileInputStream v24_0 = new java.io.FileInputStream;
                                                v24_0(v21);
                                                v9_0 = v24_0;
                                            }
                                        } else {
                                            v9_0 = this.getContentResolver().openInputStream(v23_1);
                                        }
                                        if ((v8.available() % 4) == 0) {
                                        } else {
                                            throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("The new firmware is not word-aligned.");
                                        }
                                    }
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_2) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_6) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_5) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_4) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_3) {
                                }
                                this.loge("A security exception occurred while opening file", v13_2);
                                this.sendLogBroadcast(20, "Opening file failed: Permission required");
                                this.report(4097);
                                if (!v19) {
                                    return;
                                } else {
                                    this.stopForeground(v12);
                                    return;
                                }
                            } else {
                                v18 = 1;
                            }
                        } catch (int v5_129) {
                        }
                    }
                    if (v25 >= 0) {
                    } else {
                        v25 = 0;
                    }
                } else {
                    throw new NullPointerException("getNotificationTarget() must not return null if notifications are enabled");
                }
            } else {
                this.logw("Unable to determine file type");
                this.sendLogBroadcast(15, "Unable to determine file type");
                this.report(4105);
            }
        } else {
            this.logw("File type or file mime-type not supported");
            this.sendLogBroadcast(15, "File type or file mime-type not supported");
            this.report(4105);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendLogBroadcast():


    void sendLogBroadcast(int p5, String p6)
    {
        String v1 = new StringBuilder().append("[DFU] ").append(p6).toString();
        android.content.Intent v0_0 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_LOG");
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_INFO", v1);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_LOG_LEVEL", p5);
        v0_0.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_0);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'onHandleIntent', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'report', '(I)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.onHandleIntent():


    protected void onHandleIntent(android.content.Intent p38)
    {
        String v10 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS");
        String v11 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME");
        boolean v12 = p38.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_NOTIFICATION", 0);
        boolean v19 = p38.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_FOREGROUND_SERVICE", 1);
        String v15 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_PATH");
        android.net.Uri v17_1 = ((android.net.Uri) p38.getParcelableExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_URI"));
        int v16 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_RES_ID", 0);
        String v21 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_PATH");
        android.net.Uri v23_1 = ((android.net.Uri) p38.getParcelableExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_URI"));
        int v22 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_RES_ID", 0);
        int v7 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_TYPE", 0);
        if ((v15 != null) && (v7 == 0)) {
            if (!v15.toLowerCase(java.util.Locale.US).endsWith("zip")) {
                v7 = 4;
            } else {
                v7 = 0;
            }
        }
        String v26 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_MIME_TYPE");
        if (v26 == null) {
            if (v7 != 0) {
                v26 = "application/octet-stream";
            } else {
                v26 = "application/zip";
            }
        }
        if (((v7 & -8) <= 0) && (("application/zip".equals(v26)) || ("application/octet-stream".equals(v26)))) {
            if ((!"application/octet-stream".equals(v26)) || ((v7 == 1) || ((v7 == 2) || (v7 == 4)))) {
                if ((v12) || (this.getNotificationTarget() != null)) {
                    if ((!v19) && (android.os.Build$VERSION.SDK_INT >= 26)) {
                        this.logw("Foreground service disabled. Android Oreo or newer may kill a background service few moments after user closes the application.\nConsider enabling foreground service using DfuServiceInitiator#setForeground(boolean)");
                    }
                    no.nordicsemi.android.dfu.UuidHelper.assignCustomUuids(p38);
                    this.mDeviceAddress = v10;
                    this.mDeviceName = v11;
                    this.mDisableNotification = v12;
                    this.mConnectionState = 0;
                    this.mError = 0;
                    try {
                        int v25 = Integer.parseInt(android.preference.PreferenceManager.getDefaultSharedPreferences(this).getString("settings_mbr_size", String.valueOf(4096)));
                    } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13) {
                        v25 = 4096;
                        if (v19) {
                            this = this.startForeground();
                        }
                        this.sendLogBroadcast(1, "DFU service started");
                        java.io.InputStream v8 = this.mFirmwareInputStream;
                        java.io.ByteArrayInputStream v9_0 = this.mInitFileInputStream;
                        try {
                            int v18;
                            if (this.mFirmwareInputStream != null) {
                                v18 = 0;
                                try {
                                    if (v18 == 0) {
                                        java.io.FileInputStream v24_1 = v9_0;
                                        try {
                                            java.io.ByteArrayInputStream v9_2;
                                            if (!"application/zip".equals(v26)) {
                                                v9_2 = v24_1;
                                            } else {
                                                no.nordicsemi.android.dfu.internal.ArchiveInputStream v31 = ((no.nordicsemi.android.dfu.internal.ArchiveInputStream) v8);
                                                if (v7 != 0) {
                                                    v7 = v31.setContentType(v7);
                                                } else {
                                                    v7 = v31.getContentType();
                                                }
                                                if (((v7 & 4) <= 0) || ((v31.applicationImageSize() % 4) == 0)) {
                                                    if (((v7 & 2) <= 0) || ((v31.bootloaderImageSize() % 4) == 0)) {
                                                        if (((v7 & 1) <= 0) || ((v31.softDeviceImageSize() % 4) == 0)) {
                                                            if (v7 != 4) {
                                                                if (v31.getSystemInit() == null) {
                                                                } else {
                                                                    v9_2 = new java.io.ByteArrayInputStream(v31.getSystemInit());
                                                                }
                                                            } else {
                                                                if (v31.getApplicationInit() == null) {
                                                                } else {
                                                                    v9_2 = new java.io.ByteArrayInputStream(v31.getApplicationInit());
                                                                }
                                                            }
                                                        } else {
                                                            throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Soft Device firmware is not word-aligned.");
                                                        }
                                                    } else {
                                                        throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Bootloader firmware is not word-aligned.");
                                                    }
                                                } else {
                                                    throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Application firmware is not word-aligned.");
                                                }
                                            }
                                        } catch (int v5_129) {
                                            if (v19) {
                                                this.stopForeground(v12);
                                            }
                                            throw v5_129;
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_6) {
                                            this.loge("An exception occurred while opening file", v13_6);
                                            this.sendLogBroadcast(20, "Opening file failed: File not found");
                                            this.report(4097);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                            this.mFirmwareInputStream = v8;
                                            this.mInitFileInputStream = v9_2;
                                            this.sendLogBroadcast(5, "Firmware file opened successfully");
                                            if (v18 == 0) {
                                                this.waitFor(1000);
                                                this.waitFor(1000);
                                            }
                                            this.mProgressInfo = new no.nordicsemi.android.dfu.DfuProgressInfo(this);
                                            if (!this.mAborted) {
                                                this.sendLogBroadcast(1, "Connecting to DFU target...");
                                                this.mProgressInfo.setProgress(-1);
                                                android.bluetooth.BluetoothGatt v6 = this.connect(v10);
                                                if (v6 != null) {
                                                    if (this.mConnectionState != 0) {
                                                        if (this.mError <= 0) {
                                                            if (!this.mAborted) {
                                                                this.sendLogBroadcast(5, "Services discovered");
                                                                p38.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 0);
                                                                try {
                                                                    no.nordicsemi.android.dfu.DfuServiceProvider v29_1 = new no.nordicsemi.android.dfu.DfuServiceProvider();
                                                                    this.mDfuServiceImpl = v29_1;
                                                                    no.nordicsemi.android.dfu.DfuService v4 = v29_1.getServiceImpl(p38, this, v6);
                                                                    this.mDfuServiceImpl = v4;
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13) {
                                                                    this.logw("Upload aborted");
                                                                    this.sendLogBroadcast(15, "Upload aborted");
                                                                    this.terminateConnection(v6, 0);
                                                                    this.mProgressInfo.setProgress(-7);
                                                                    if (v4 == null) {
                                                                        if (!v19) {
                                                                            return;
                                                                        } else {
                                                                            this.stopForeground(v12);
                                                                            return;
                                                                        }
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_1) {
                                                                    this.sendLogBroadcast(20, "Device has disconnected");
                                                                    this.loge(v13_1.getMessage());
                                                                    this.close(v6);
                                                                    this.report(4096);
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_0) {
                                                                    int v14_0 = v13_0.getErrorNumber();
                                                                    if ((32768 & v14_0) <= 0) {
                                                                        int v14_1 = (v14_0 & -16385);
                                                                        void v0_51 = new Object[2];
                                                                        Object[] v34_1 = v0_51;
                                                                        v34_1[0] = Integer.valueOf(v14_1);
                                                                        v34_1[1] = no.nordicsemi.android.error.GattError.parse(v14_1);
                                                                        this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Error (0x%02X): %s", v34_1));
                                                                    } else {
                                                                        int v14_2 = (v14_0 & -32769);
                                                                        void v0_55 = new Object[2];
                                                                        Object[] v34_3 = v0_55;
                                                                        v34_3[0] = Integer.valueOf(v14_2);
                                                                        v34_3[1] = no.nordicsemi.android.error.GattError.parseConnectionError(v14_2);
                                                                        this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Error (0x%02X): %s", v34_3));
                                                                    }
                                                                    this.loge(v13_0.getMessage());
                                                                    this.terminateConnection(v6, v13_0.getErrorNumber());
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (int v5_67) {
                                                                    if (v4 != null) {
                                                                        v4.release();
                                                                    }
                                                                    throw v5_67;
                                                                }
                                                                if (v4 != null) {
                                                                    if (v4.initialize(p38, v6, v7, v8, v9_2)) {
                                                                        v4.performDfu(p38);
                                                                    }
                                                                } else {
                                                                    android.util.Log.w("DfuBaseService", "DFU Service not found.");
                                                                    this.sendLogBroadcast(15, "DFU Service not found");
                                                                    this.terminateConnection(v6, 4102);
                                                                    if (v4 != null) {
                                                                        v4.release();
                                                                    }
                                                                    if (!v19) {
                                                                        return;
                                                                    } else {
                                                                        this.stopForeground(v12);
                                                                        return;
                                                                    }
                                                                }
                                                            } else {
                                                                this.logw("Upload aborted");
                                                                this.sendLogBroadcast(15, "Upload aborted");
                                                                this.terminateConnection(v6, 0);
                                                                this.mProgressInfo.setProgress(-7);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            }
                                                        } else {
                                                            if ((this.mError & 32768) <= 0) {
                                                                int v14_3 = (this.mError & -16385);
                                                                this.loge(new StringBuilder().append("An error occurred during discovering services:").append(v14_3).toString());
                                                                void v0_87 = new Object[2];
                                                                Object[] v34_5 = v0_87;
                                                                v34_5[0] = Integer.valueOf(v14_3);
                                                                v34_5[1] = no.nordicsemi.android.error.GattError.parse(v14_3);
                                                                this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Connection failed (0x%02X): %s", v34_5));
                                                            } else {
                                                                int v14_4 = (this.mError & -32769);
                                                                this.loge(new StringBuilder().append("An error occurred while connecting to the device:").append(v14_4).toString());
                                                                void v0_94 = new Object[2];
                                                                Object[] v34_7 = v0_94;
                                                                v34_7[0] = Integer.valueOf(v14_4);
                                                                v34_7[1] = no.nordicsemi.android.error.GattError.parseConnectionError(v14_4);
                                                                this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Connection failed (0x%02X): %s", v34_7));
                                                            }
                                                            if (p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 0) != 0) {
                                                                this.terminateConnection(v6, this.mError);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            } else {
                                                                this.sendLogBroadcast(15, "Retrying...");
                                                                if (this.mConnectionState != 0) {
                                                                    this.disconnect(v6);
                                                                }
                                                                this.refreshDeviceCache(v6, 1);
                                                                this.close(v6);
                                                                this.logi("Restarting the service");
                                                                android.content.Intent v27_1 = new android.content.Intent();
                                                                v27_1.fillIn(p38, 24);
                                                                v27_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 1);
                                                                this.startService(v27_1);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            }
                                                        }
                                                    } else {
                                                        if (this.mError != 32901) {
                                                            this.loge("Device got disconnected before service discovery finished");
                                                            this.sendLogBroadcast(20, "Disconnected");
                                                        } else {
                                                            this.loge(new StringBuilder().append("Device not reachable. Check if the device with address ").append(v10).append(" is in range, is advertising and is connectable").toString());
                                                            this.sendLogBroadcast(20, "Error 133: Connection timeout");
                                                        }
                                                        this.terminateConnection(v6, 4096);
                                                        if (v19) {
                                                            this.stopForeground(v12);
                                                        }
                                                        return;
                                                    }
                                                } else {
                                                    this.loge("Bluetooth adapter disabled");
                                                    this.sendLogBroadcast(20, "Bluetooth adapter disabled");
                                                    this.report(4106);
                                                    if (!v19) {
                                                        return;
                                                    } else {
                                                        this.stopForeground(v12);
                                                        return;
                                                    }
                                                }
                                            } else {
                                                this.logw("Upload aborted");
                                                this.sendLogBroadcast(15, "Upload aborted");
                                                this.mProgressInfo.setProgress(-7);
                                                if (v19) {
                                                    this.stopForeground(v12);
                                                }
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_5) {
                                            this.loge("Firmware not word-aligned", v13_5);
                                            this.sendLogBroadcast(20, "Opening file failed: Firmware size must be word-aligned");
                                            this.report(4108);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_4) {
                                            this.loge("An exception occurred while calculating file size", v13_4);
                                            this.sendLogBroadcast(20, new StringBuilder().append("Opening file failed: ").append(v13_4.getLocalizedMessage()).toString());
                                            this.report(4098);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_3) {
                                            this.loge("An exception occurred while opening files. Did you set the firmware file?", v13_3);
                                            this.sendLogBroadcast(20, new StringBuilder().append("Opening file failed: ").append(v13_3.getLocalizedMessage()).toString());
                                            this.report(4098);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        }
                                        if (v18 != 0) {
                                            v8.mark(v8.available());
                                            if (v9_2 != null) {
                                                v9_2.mark(v9_2.available());
                                            }
                                        }
                                    } else {
                                        this.sendLogBroadcast(1, "Opening file...");
                                        if (v17_1 == null) {
                                            if (v15 == null) {
                                                if (v16 > 0) {
                                                    v8 = this.openInputStream(v16, v26, v25, v7);
                                                }
                                            } else {
                                                v8 = this.openInputStream(v15, v26, v25, v7);
                                            }
                                        } else {
                                            v8 = this.openInputStream(v17_1, v26, v25, v7);
                                        }
                                        if (v23_1 == null) {
                                            if (v21 == null) {
                                                if (v22 > 0) {
                                                    v9_0 = this.getResources().openRawResource(v22);
                                                }
                                            } else {
                                                java.io.FileInputStream v24_0 = new java.io.FileInputStream;
                                                v24_0(v21);
                                                v9_0 = v24_0;
                                            }
                                        } else {
                                            v9_0 = this.getContentResolver().openInputStream(v23_1);
                                        }
                                        if ((v8.available() % 4) == 0) {
                                        } else {
                                            throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("The new firmware is not word-aligned.");
                                        }
                                    }
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_2) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_6) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_5) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_4) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_3) {
                                }
                                this.loge("A security exception occurred while opening file", v13_2);
                                this.sendLogBroadcast(20, "Opening file failed: Permission required");
                                this.report(4097);
                                if (!v19) {
                                    return;
                                } else {
                                    this.stopForeground(v12);
                                    return;
                                }
                            } else {
                                v18 = 1;
                            }
                        } catch (int v5_129) {
                        }
                    }
                    if (v25 >= 0) {
                    } else {
                        v25 = 0;
                    }
                } else {
                    throw new NullPointerException("getNotificationTarget() must not return null if notifications are enabled");
                }
            } else {
                this.logw("Unable to determine file type");
                this.sendLogBroadcast(15, "Unable to determine file type");
                this.report(4105);
            }
        } else {
            this.logw("File type or file mime-type not supported");
            this.sendLogBroadcast(15, "File type or file mime-type not supported");
            this.report(4105);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.report():


    private void report(int p11)
    {
        this.sendErrorBroadcast(p11);
        if (!this.mDisableNotification) {
            String v2;
            String v1 = this.mDeviceAddress;
            if (this.mDeviceName == null) {
                v2 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
            } else {
                v2 = this.mDeviceName;
            }
            android.support.v4.app.NotificationCompat$Builder v0 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1).setColor(-65536).setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error_msg)).setAutoCancel(1);
            android.content.Intent v3_1 = new android.content.Intent(this, this.getNotificationTarget());
            v3_1.addFlags(268435456);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v1);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v2);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", p11);
            v0.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v3_1, 134217728));
            this.updateErrorNotification(v0);
            ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v0.build());
        }
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DATA' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'onHandleIntent', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'report', '(I)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendErrorBroadcast', '(I)V'), ('Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; I)Landroid/content/Intent;')]]

Use of a string value no.nordicsemi.android.dfu.extra.EXTRA_DATA to construct an Intent

Method no.nordicsemi.android.dfu.DfuBaseService.onHandleIntent():


    protected void onHandleIntent(android.content.Intent p38)
    {
        String v10 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS");
        String v11 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME");
        boolean v12 = p38.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_DISABLE_NOTIFICATION", 0);
        boolean v19 = p38.getBooleanExtra("no.nordicsemi.android.dfu.extra.EXTRA_FOREGROUND_SERVICE", 1);
        String v15 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_PATH");
        android.net.Uri v17_1 = ((android.net.Uri) p38.getParcelableExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_URI"));
        int v16 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_RES_ID", 0);
        String v21 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_PATH");
        android.net.Uri v23_1 = ((android.net.Uri) p38.getParcelableExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_URI"));
        int v22 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_INIT_FILE_RES_ID", 0);
        int v7 = p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_FILE_TYPE", 0);
        if ((v15 != null) && (v7 == 0)) {
            if (!v15.toLowerCase(java.util.Locale.US).endsWith("zip")) {
                v7 = 4;
            } else {
                v7 = 0;
            }
        }
        String v26 = p38.getStringExtra("no.nordicsemi.android.dfu.extra.EXTRA_MIME_TYPE");
        if (v26 == null) {
            if (v7 != 0) {
                v26 = "application/octet-stream";
            } else {
                v26 = "application/zip";
            }
        }
        if (((v7 & -8) <= 0) && (("application/zip".equals(v26)) || ("application/octet-stream".equals(v26)))) {
            if ((!"application/octet-stream".equals(v26)) || ((v7 == 1) || ((v7 == 2) || (v7 == 4)))) {
                if ((v12) || (this.getNotificationTarget() != null)) {
                    if ((!v19) && (android.os.Build$VERSION.SDK_INT >= 26)) {
                        this.logw("Foreground service disabled. Android Oreo or newer may kill a background service few moments after user closes the application.\nConsider enabling foreground service using DfuServiceInitiator#setForeground(boolean)");
                    }
                    no.nordicsemi.android.dfu.UuidHelper.assignCustomUuids(p38);
                    this.mDeviceAddress = v10;
                    this.mDeviceName = v11;
                    this.mDisableNotification = v12;
                    this.mConnectionState = 0;
                    this.mError = 0;
                    try {
                        int v25 = Integer.parseInt(android.preference.PreferenceManager.getDefaultSharedPreferences(this).getString("settings_mbr_size", String.valueOf(4096)));
                    } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13) {
                        v25 = 4096;
                        if (v19) {
                            this = this.startForeground();
                        }
                        this.sendLogBroadcast(1, "DFU service started");
                        java.io.InputStream v8 = this.mFirmwareInputStream;
                        java.io.ByteArrayInputStream v9_0 = this.mInitFileInputStream;
                        try {
                            int v18;
                            if (this.mFirmwareInputStream != null) {
                                v18 = 0;
                                try {
                                    if (v18 == 0) {
                                        java.io.FileInputStream v24_1 = v9_0;
                                        try {
                                            java.io.ByteArrayInputStream v9_2;
                                            if (!"application/zip".equals(v26)) {
                                                v9_2 = v24_1;
                                            } else {
                                                no.nordicsemi.android.dfu.internal.ArchiveInputStream v31 = ((no.nordicsemi.android.dfu.internal.ArchiveInputStream) v8);
                                                if (v7 != 0) {
                                                    v7 = v31.setContentType(v7);
                                                } else {
                                                    v7 = v31.getContentType();
                                                }
                                                if (((v7 & 4) <= 0) || ((v31.applicationImageSize() % 4) == 0)) {
                                                    if (((v7 & 2) <= 0) || ((v31.bootloaderImageSize() % 4) == 0)) {
                                                        if (((v7 & 1) <= 0) || ((v31.softDeviceImageSize() % 4) == 0)) {
                                                            if (v7 != 4) {
                                                                if (v31.getSystemInit() == null) {
                                                                } else {
                                                                    v9_2 = new java.io.ByteArrayInputStream(v31.getSystemInit());
                                                                }
                                                            } else {
                                                                if (v31.getApplicationInit() == null) {
                                                                } else {
                                                                    v9_2 = new java.io.ByteArrayInputStream(v31.getApplicationInit());
                                                                }
                                                            }
                                                        } else {
                                                            throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Soft Device firmware is not word-aligned.");
                                                        }
                                                    } else {
                                                        throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Bootloader firmware is not word-aligned.");
                                                    }
                                                } else {
                                                    throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("Application firmware is not word-aligned.");
                                                }
                                            }
                                        } catch (int v5_129) {
                                            if (v19) {
                                                this.stopForeground(v12);
                                            }
                                            throw v5_129;
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_6) {
                                            this.loge("An exception occurred while opening file", v13_6);
                                            this.sendLogBroadcast(20, "Opening file failed: File not found");
                                            this.report(4097);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                            this.mFirmwareInputStream = v8;
                                            this.mInitFileInputStream = v9_2;
                                            this.sendLogBroadcast(5, "Firmware file opened successfully");
                                            if (v18 == 0) {
                                                this.waitFor(1000);
                                                this.waitFor(1000);
                                            }
                                            this.mProgressInfo = new no.nordicsemi.android.dfu.DfuProgressInfo(this);
                                            if (!this.mAborted) {
                                                this.sendLogBroadcast(1, "Connecting to DFU target...");
                                                this.mProgressInfo.setProgress(-1);
                                                android.bluetooth.BluetoothGatt v6 = this.connect(v10);
                                                if (v6 != null) {
                                                    if (this.mConnectionState != 0) {
                                                        if (this.mError <= 0) {
                                                            if (!this.mAborted) {
                                                                this.sendLogBroadcast(5, "Services discovered");
                                                                p38.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 0);
                                                                try {
                                                                    no.nordicsemi.android.dfu.DfuServiceProvider v29_1 = new no.nordicsemi.android.dfu.DfuServiceProvider();
                                                                    this.mDfuServiceImpl = v29_1;
                                                                    no.nordicsemi.android.dfu.DfuService v4 = v29_1.getServiceImpl(p38, this, v6);
                                                                    this.mDfuServiceImpl = v4;
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13) {
                                                                    this.logw("Upload aborted");
                                                                    this.sendLogBroadcast(15, "Upload aborted");
                                                                    this.terminateConnection(v6, 0);
                                                                    this.mProgressInfo.setProgress(-7);
                                                                    if (v4 == null) {
                                                                        if (!v19) {
                                                                            return;
                                                                        } else {
                                                                            this.stopForeground(v12);
                                                                            return;
                                                                        }
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_1) {
                                                                    this.sendLogBroadcast(20, "Device has disconnected");
                                                                    this.loge(v13_1.getMessage());
                                                                    this.close(v6);
                                                                    this.report(4096);
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_0) {
                                                                    int v14_0 = v13_0.getErrorNumber();
                                                                    if ((32768 & v14_0) <= 0) {
                                                                        int v14_1 = (v14_0 & -16385);
                                                                        void v0_51 = new Object[2];
                                                                        Object[] v34_1 = v0_51;
                                                                        v34_1[0] = Integer.valueOf(v14_1);
                                                                        v34_1[1] = no.nordicsemi.android.error.GattError.parse(v14_1);
                                                                        this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Error (0x%02X): %s", v34_1));
                                                                    } else {
                                                                        int v14_2 = (v14_0 & -32769);
                                                                        void v0_55 = new Object[2];
                                                                        Object[] v34_3 = v0_55;
                                                                        v34_3[0] = Integer.valueOf(v14_2);
                                                                        v34_3[1] = no.nordicsemi.android.error.GattError.parseConnectionError(v14_2);
                                                                        this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Error (0x%02X): %s", v34_3));
                                                                    }
                                                                    this.loge(v13_0.getMessage());
                                                                    this.terminateConnection(v6, v13_0.getErrorNumber());
                                                                    if (v4 == null) {
                                                                    } else {
                                                                        v4.release();
                                                                    }
                                                                } catch (int v5_67) {
                                                                    if (v4 != null) {
                                                                        v4.release();
                                                                    }
                                                                    throw v5_67;
                                                                }
                                                                if (v4 != null) {
                                                                    if (v4.initialize(p38, v6, v7, v8, v9_2)) {
                                                                        v4.performDfu(p38);
                                                                    }
                                                                } else {
                                                                    android.util.Log.w("DfuBaseService", "DFU Service not found.");
                                                                    this.sendLogBroadcast(15, "DFU Service not found");
                                                                    this.terminateConnection(v6, 4102);
                                                                    if (v4 != null) {
                                                                        v4.release();
                                                                    }
                                                                    if (!v19) {
                                                                        return;
                                                                    } else {
                                                                        this.stopForeground(v12);
                                                                        return;
                                                                    }
                                                                }
                                                            } else {
                                                                this.logw("Upload aborted");
                                                                this.sendLogBroadcast(15, "Upload aborted");
                                                                this.terminateConnection(v6, 0);
                                                                this.mProgressInfo.setProgress(-7);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            }
                                                        } else {
                                                            if ((this.mError & 32768) <= 0) {
                                                                int v14_3 = (this.mError & -16385);
                                                                this.loge(new StringBuilder().append("An error occurred during discovering services:").append(v14_3).toString());
                                                                void v0_87 = new Object[2];
                                                                Object[] v34_5 = v0_87;
                                                                v34_5[0] = Integer.valueOf(v14_3);
                                                                v34_5[1] = no.nordicsemi.android.error.GattError.parse(v14_3);
                                                                this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Connection failed (0x%02X): %s", v34_5));
                                                            } else {
                                                                int v14_4 = (this.mError & -32769);
                                                                this.loge(new StringBuilder().append("An error occurred while connecting to the device:").append(v14_4).toString());
                                                                void v0_94 = new Object[2];
                                                                Object[] v34_7 = v0_94;
                                                                v34_7[0] = Integer.valueOf(v14_4);
                                                                v34_7[1] = no.nordicsemi.android.error.GattError.parseConnectionError(v14_4);
                                                                this.sendLogBroadcast(20, String.format(java.util.Locale.US, "Connection failed (0x%02X): %s", v34_7));
                                                            }
                                                            if (p38.getIntExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 0) != 0) {
                                                                this.terminateConnection(v6, this.mError);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            } else {
                                                                this.sendLogBroadcast(15, "Retrying...");
                                                                if (this.mConnectionState != 0) {
                                                                    this.disconnect(v6);
                                                                }
                                                                this.refreshDeviceCache(v6, 1);
                                                                this.close(v6);
                                                                this.logi("Restarting the service");
                                                                android.content.Intent v27_1 = new android.content.Intent();
                                                                v27_1.fillIn(p38, 24);
                                                                v27_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ATTEMPT", 1);
                                                                this.startService(v27_1);
                                                                if (!v19) {
                                                                    return;
                                                                } else {
                                                                    this.stopForeground(v12);
                                                                    return;
                                                                }
                                                            }
                                                        }
                                                    } else {
                                                        if (this.mError != 32901) {
                                                            this.loge("Device got disconnected before service discovery finished");
                                                            this.sendLogBroadcast(20, "Disconnected");
                                                        } else {
                                                            this.loge(new StringBuilder().append("Device not reachable. Check if the device with address ").append(v10).append(" is in range, is advertising and is connectable").toString());
                                                            this.sendLogBroadcast(20, "Error 133: Connection timeout");
                                                        }
                                                        this.terminateConnection(v6, 4096);
                                                        if (v19) {
                                                            this.stopForeground(v12);
                                                        }
                                                        return;
                                                    }
                                                } else {
                                                    this.loge("Bluetooth adapter disabled");
                                                    this.sendLogBroadcast(20, "Bluetooth adapter disabled");
                                                    this.report(4106);
                                                    if (!v19) {
                                                        return;
                                                    } else {
                                                        this.stopForeground(v12);
                                                        return;
                                                    }
                                                }
                                            } else {
                                                this.logw("Upload aborted");
                                                this.sendLogBroadcast(15, "Upload aborted");
                                                this.mProgressInfo.setProgress(-7);
                                                if (v19) {
                                                    this.stopForeground(v12);
                                                }
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_5) {
                                            this.loge("Firmware not word-aligned", v13_5);
                                            this.sendLogBroadcast(20, "Opening file failed: Firmware size must be word-aligned");
                                            this.report(4108);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_4) {
                                            this.loge("An exception occurred while calculating file size", v13_4);
                                            this.sendLogBroadcast(20, new StringBuilder().append("Opening file failed: ").append(v13_4.getLocalizedMessage()).toString());
                                            this.report(4098);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_3) {
                                            this.loge("An exception occurred while opening files. Did you set the firmware file?", v13_3);
                                            this.sendLogBroadcast(20, new StringBuilder().append("Opening file failed: ").append(v13_3.getLocalizedMessage()).toString());
                                            this.report(4098);
                                            if (!v19) {
                                                return;
                                            } else {
                                                this.stopForeground(v12);
                                                return;
                                            }
                                        }
                                        if (v18 != 0) {
                                            v8.mark(v8.available());
                                            if (v9_2 != null) {
                                                v9_2.mark(v9_2.available());
                                            }
                                        }
                                    } else {
                                        this.sendLogBroadcast(1, "Opening file...");
                                        if (v17_1 == null) {
                                            if (v15 == null) {
                                                if (v16 > 0) {
                                                    v8 = this.openInputStream(v16, v26, v25, v7);
                                                }
                                            } else {
                                                v8 = this.openInputStream(v15, v26, v25, v7);
                                            }
                                        } else {
                                            v8 = this.openInputStream(v17_1, v26, v25, v7);
                                        }
                                        if (v23_1 == null) {
                                            if (v21 == null) {
                                                if (v22 > 0) {
                                                    v9_0 = this.getResources().openRawResource(v22);
                                                }
                                            } else {
                                                java.io.FileInputStream v24_0 = new java.io.FileInputStream;
                                                v24_0(v21);
                                                v9_0 = v24_0;
                                            }
                                        } else {
                                            v9_0 = this.getContentResolver().openInputStream(v23_1);
                                        }
                                        if ((v8.available() % 4) == 0) {
                                        } else {
                                            throw new no.nordicsemi.android.dfu.internal.exception.SizeValidationException("The new firmware is not word-aligned.");
                                        }
                                    }
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_2) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_6) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_5) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_4) {
                                } catch (no.nordicsemi.android.dfu.internal.exception.DfuException v13_3) {
                                }
                                this.loge("A security exception occurred while opening file", v13_2);
                                this.sendLogBroadcast(20, "Opening file failed: Permission required");
                                this.report(4097);
                                if (!v19) {
                                    return;
                                } else {
                                    this.stopForeground(v12);
                                    return;
                                }
                            } else {
                                v18 = 1;
                            }
                        } catch (int v5_129) {
                        }
                    }
                    if (v25 >= 0) {
                    } else {
                        v25 = 0;
                    }
                } else {
                    throw new NullPointerException("getNotificationTarget() must not return null if notifications are enabled");
                }
            } else {
                this.logw("Unable to determine file type");
                this.sendLogBroadcast(15, "Unable to determine file type");
                this.report(4105);
            }
        } else {
            this.logw("File type or file mime-type not supported");
            this.sendLogBroadcast(15, "File type or file mime-type not supported");
            this.report(4105);
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.report():


    private void report(int p11)
    {
        this.sendErrorBroadcast(p11);
        if (!this.mDisableNotification) {
            String v2;
            String v1 = this.mDeviceAddress;
            if (this.mDeviceName == null) {
                v2 = this.getString(no.nordicsemi.android.dfu.R$string.dfu_unknown_name);
            } else {
                v2 = this.mDeviceName;
            }
            android.support.v4.app.NotificationCompat$Builder v0 = new android.support.v4.app.NotificationCompat$Builder(this, "dfu").setSmallIcon(17301640).setOnlyAlertOnce(1).setColor(-65536).setOngoing(0).setContentTitle(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error)).setSmallIcon(17301641).setContentText(this.getString(no.nordicsemi.android.dfu.R$string.dfu_status_error_msg)).setAutoCancel(1);
            android.content.Intent v3_1 = new android.content.Intent(this, this.getNotificationTarget());
            v3_1.addFlags(268435456);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", v1);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_NAME", v2);
            v3_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_PROGRESS", p11);
            v0.setContentIntent(android.app.PendingIntent.getActivity(this, 0, v3_1, 134217728));
            this.updateErrorNotification(v0);
            ((android.app.NotificationManager) this.getSystemService("notification")).notify(283, v0.build());
        }
        return;
    }

Method no.nordicsemi.android.dfu.DfuBaseService.sendErrorBroadcast():


    private void sendErrorBroadcast(int p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("no.nordicsemi.android.dfu.broadcast.BROADCAST_ERROR");
        if ((p4 & 16384) <= 0) {
            if ((32768 & p4) <= 0) {
                if ((p4 & 8192) <= 0) {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", p4);
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 0);
                } else {
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -8193));
                    v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 3);
                }
            } else {
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (-32769 & p4));
                v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 1);
            }
        } else {
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DATA", (p4 & -16385));
            v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_ERROR_TYPE", 2);
        }
        v0_1.putExtra("no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS", this.mDeviceAddress);
        android.support.v4.content.LocalBroadcastManager.getInstance(this).sendBroadcast(v0_1);
        return;
    }

Method android.content.Intent.putExtra() not found.

[TAINT] String 'no.nordicsemi.android.dfu.extra.EXTRA_DEVICE_ADDRESS' ==>>> Sink '['Landroid/content/Intent;', 'putExtra', '(Ljava/lang/String; Ljava/lang/String;)Landroid/content/Intent;', '0', 'IPC_SINK']' [[('Lno/nordicsemi/android/dfu/DfuBaseService;', 'onHandleIntent', '(Landroid/content/Intent;)V'), ('Lno/nordicsemi/android/dfu/DfuBaseService;', 'sendLogBroadcast', '(I Ljava/lang/String;)V'), ('Landroid/content/Intent;', 'put