diff --git a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/StringUtils.java b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/StringUtils.java index dbebb9f..557e53f 100644 --- a/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/StringUtils.java +++ b/oak-commons/src/main/java/org/apache/jackrabbit/oak/commons/StringUtils.java @@ -35,6 +35,9 @@ public class StringUtils { * @return the hex encoded string */ public static String convertBytesToHex(byte[] value) { + if (null == value) { + throw new IllegalArgumentException(); + } int len = value.length; char[] buff = new char[len + len]; char[] hex = HEX; @@ -53,6 +56,9 @@ public class StringUtils { * @return the byte array */ public static byte[] convertHexToBytes(String s) { + if (null == s) { + throw new IllegalArgumentException(); + } int len = s.length(); if (len % 2 != 0) { throw new IllegalArgumentException(s); diff --git a/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/StringUtilsTest.java b/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/StringUtilsTest.java index 5075045..3ce340d 100644 --- a/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/StringUtilsTest.java +++ b/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/StringUtilsTest.java @@ -30,11 +30,20 @@ public class StringUtilsTest extends TestCase { assertEquals("0123", StringUtils.convertBytesToHex(new byte[]{(byte) 0x01, (byte) 0x23})); assertEquals("89bd", StringUtils.convertBytesToHex(new byte[]{(byte) 0x89, (byte) 0xbd})); assertEquals("face", StringUtils.convertBytesToHex(new byte[]{(byte) 0xfa, (byte) 0xce})); + assertEquals("", StringUtils.convertBytesToHex(new byte[]{})); + try { + StringUtils.convertBytesToHex(null); + fail(); + } catch (IllegalArgumentException e) { + // expected + } + IOUtilsTest.assertEquals(new byte[]{(byte) 0xfa, (byte) 0xce}, StringUtils.convertHexToBytes("face")); IOUtilsTest.assertEquals(new byte[]{(byte) 0xfa, (byte) 0xce}, StringUtils.convertHexToBytes("fAcE")); IOUtilsTest.assertEquals(new byte[]{(byte) 0xfa, (byte) 0xce}, StringUtils.convertHexToBytes("FaCe")); IOUtilsTest.assertEquals(new byte[]{(byte) 0x09, (byte) 0xaf}, StringUtils.convertHexToBytes("09af")); - for (String s : new String[]{"120", "1/", "9:", "fast", "a`", "ag", "0@", "aG"}) { + IOUtilsTest.assertEquals(new byte[]{}, StringUtils.convertHexToBytes("")); + for (String s : new String[]{"120", "1/", "9:", "fast", "a`", "ag", "0@", "aG", null}) { try { StringUtils.convertHexToBytes(s); fail();