summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Kirk <askirk@umich.edu>2017-05-16 16:20:53 -0400
committerAustin Kirk <askirk@umich.edu>2017-05-16 16:20:53 -0400
commit16e520357c66207cfc375b116ec7c5f1c45b4492 (patch)
tree68b2a9e0aca68a138688e60e3e62c9d775e22f9c
parentd5e41294c8156f1f7a5a17c96d2ef602169a8108 (diff)
downloadsdl_android-16e520357c66207cfc375b116ec7c5f1c45b4492.tar.gz
Adding Javadocs and Checking for ArrayIndexOutOfBounds
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java64
1 files changed, 51 insertions, 13 deletions
diff --git a/sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java b/sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java
index b72201df5..fedf1af90 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/trace/Mime.java
@@ -5,7 +5,11 @@ package com.smartdevicelink.trace;
public class Mime {
private static String m_base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
+
+ /**
+ * @param str A String to encode into base64 String.
+ * @return Base64 encoded String or a null String if input is null.
+ */
public static String base64Encode(String str) {
if(str == null){
return null;
@@ -21,6 +25,10 @@ public class Mime {
return b64String;
}
+ /**
+ * @param bytesToEncode A byte array to encode into base64 String.
+ * @return Base64 encoded String or a null String if input array is null.
+ */
public static String base64Encode(byte bytesToEncode[]) {
if(bytesToEncode != null){
return base64Encode(bytesToEncode, 0, bytesToEncode.length);
@@ -28,6 +36,12 @@ public class Mime {
return null;
}
+ /**
+ * @param bytesToEncode A byte array to encode into base64 String.
+ * @param offset Offset to begin at
+ * @param length Length to read
+ * @return Base64 encoded String or a null String if input array is null.
+ */
public static String base64Encode(byte bytesToEncode[], int offset, int length) {
if(bytesToEncode == null){
return null;
@@ -43,33 +57,57 @@ public class Mime {
for (idxin = offset; idxin < offset + length; idxin++) {
switch ((idxin - offset) % 3) {
case 0:
- b64idx = (bytesToEncode[idxin] >> 2) & 0x3f;
+ if(idxin >= 0 && idxin < bytesToEncode.length){
+ b64idx = (bytesToEncode[idxin] >> 2) & 0x3f;
+ }
break;
case 1:
- b64idx = (bytesToEncode[idxin] >> 4) & 0x0f;
- b64idx |= ((bytesToEncode[idxin - 1] << 4) & 0x30);
+ if(idxin >= 0 && idxin < bytesToEncode.length) {
+ b64idx = (bytesToEncode[idxin] >> 4) & 0x0f;
+ }
+ if(idxin - 1 >= 0 && idxin - 1 < bytesToEncode.length) {
+ b64idx |= ((bytesToEncode[idxin - 1] << 4) & 0x30);
+ }
break;
case 2:
- b64idx = (bytesToEncode[idxin] >> 6) & 0x03;
- b64idx |= ((bytesToEncode[idxin - 1] << 2) & 0x3c);
- sb.append(m_base64Chars.charAt(b64idx));
- b64idx = bytesToEncode[idxin] & 0x3f;
+ if(idxin >= 0 && idxin < bytesToEncode.length) {
+ b64idx = (bytesToEncode[idxin] >> 6) & 0x03;
+ }
+ if(idxin - 1 >= 0 && idxin - 1 < bytesToEncode.length) {
+ b64idx |= ((bytesToEncode[idxin - 1] << 2) & 0x3c);
+ }
+ if(b64idx >= 0 && b64idx < m_base64Chars.length()) {
+ sb.append(m_base64Chars.charAt(b64idx));
+ }
+ if(idxin >= 0 && idxin < bytesToEncode.length) {
+ b64idx = bytesToEncode[idxin] & 0x3f;
+ }
break;
}
- sb.append(m_base64Chars.charAt(b64idx));
+ if(b64idx >= 0 && b64idx < m_base64Chars.length()) {
+ sb.append(m_base64Chars.charAt(b64idx));
+ }
}
switch ((idxin - offset) % 3) {
case 0:
break;
case 1:
- b64idx = (bytesToEncode[idxin - 1] << 4) & 0x30;
- sb.append(m_base64Chars.charAt(b64idx));
+ if(idxin - 1 >= 0 && idxin - 1 < m_base64Chars.length()) {
+ b64idx = (bytesToEncode[idxin - 1] << 4) & 0x30;
+ }
+ if(b64idx >= 0 && b64idx < m_base64Chars.length()) {
+ sb.append(m_base64Chars.charAt(b64idx));
+ }
sb.append("==");
break;
case 2:
- b64idx = ((bytesToEncode[idxin - 1] << 2) & 0x3c);
- sb.append(m_base64Chars.charAt(b64idx));
+ if(idxin - 1 >= 0 && idxin - 1 < m_base64Chars.length()) {
+ b64idx = ((bytesToEncode[idxin - 1] << 2) & 0x3c);
+ }
+ if(b64idx >= 0 && b64idx < m_base64Chars.length()) {
+ sb.append(m_base64Chars.charAt(b64idx));
+ }
sb.append('=');
break;
}