diff --git a/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/AppleUtil.java b/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/AppleUtil.java index 5a2aa8c..64d4dd6 100644 --- a/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/AppleUtil.java +++ b/lib/ac-api/src/main/java/com/webcodepro/applecommander/util/AppleUtil.java @@ -60,7 +60,7 @@ public class AppleUtil { * A word is two bytes, in standard Apple LO/HI format. */ public static int getWordValue(byte[] buffer, int offset) { - if (offset+1 > buffer.length) { + if (offset+1 >= buffer.length) { return 0; } return getWordValue(buffer[offset], buffer[offset+1]); diff --git a/lib/ac-api/src/test/java/com/webcodepro/applecommander/util/AppleUtilTest.java b/lib/ac-api/src/test/java/com/webcodepro/applecommander/util/AppleUtilTest.java index 8046501..3b8e0fc 100644 --- a/lib/ac-api/src/test/java/com/webcodepro/applecommander/util/AppleUtilTest.java +++ b/lib/ac-api/src/test/java/com/webcodepro/applecommander/util/AppleUtilTest.java @@ -142,4 +142,15 @@ public class AppleUtilTest { } } } + + @Test + public void testGetWordValue_beyondEdge() { + byte[] data = new byte[] { 0x01, 0x02, 0x03, 0x04 }; + + assertEquals(0x0201, AppleUtil.getWordValue(data, 0)); + assertEquals(0x0302, AppleUtil.getWordValue(data, 1)); + assertEquals(0x0403, AppleUtil.getWordValue(data, 2)); + assertEquals(0x0000, AppleUtil.getWordValue(data, 3)); + assertEquals(0x0000, AppleUtil.getWordValue(data, 4)); + } }