Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dee4e0bd authored by Bernie Innocenti's avatar Bernie Innocenti
Browse files

Make dumpHexString() tolerate null arrays.

Rationale: hexdumps are mainly used when verbose logging is enabled,
which means that callers are rarely exercised (let alone tested).
Crashing on unchecked null pointers doesn't make debugging any easier,
nor production code any more robust.

Moreover, this is the behavior of system.out.println() and other
logging APIs.

Test: runtest -x core/tests/coretests/src/com/android/internal/util/HexDumpTest.java
Bug: 110177912
Change-Id: Idccd81a5654ed0f7fee6b27177941bf8c311973e
parent 9f2362bb
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -16,18 +16,21 @@

package com.android.internal.util;

import android.annotation.Nullable;

public class HexDump
{
    private final static char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
    private final static char[] HEX_LOWER_CASE_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

    public static String dumpHexString(byte[] array)
    {
    public static String dumpHexString(@Nullable byte[] array) {
        if (array == null) return "(null)";
        return dumpHexString(array, 0, array.length);
    }

    public static String dumpHexString(byte[] array, int offset, int length)
    public static String dumpHexString(@Nullable byte[] array, int offset, int length)
    {
        if (array == null) return "(null)";
        StringBuilder result = new StringBuilder();

        byte[] line = new byte[16];
+3 −0
Original line number Diff line number Diff line
@@ -25,4 +25,7 @@ public final class HexDumpTest extends TestCase {
        assertEquals("ABCDEF", HexDump.toHexString(
                new byte[] { (byte) 0xab, (byte) 0xcd, (byte) 0xef }, true));
    }
    public void testNullArray() {
        assertEquals("(null)", HexDump.toHexString(null));
    }
}