Loading gallerycommon/src/com/android/gallery3d/exif/ExifTag.java +23 −10 Original line number Diff line number Diff line Loading @@ -314,10 +314,14 @@ public class ExifTag { * Sets a string value into this tag. This method should be used for tags of * type {@link #TYPE_ASCII}. The string is converted to an ASCII string. * Characters that cannot be converted are replaced with '?'. The length of * the string must be equal to either (component count -1) or (component * count). The final byte will be set to the string null terminator '\0', * overwriting the last character in the string if the value.length is equal * to the component count. This method will fail if: * the string must be equal to either * <ul> * <li>component count - 1 when the terminating '\0' is not present</li> * <li>component count when the terminating '\0' is present</li> * <li>to comply with some non-conformant implementations, the terminating * '\0' will be appended if it's not present and component count equals * the string length; the component count will be updated in that case</li> * This method will fail if: * <ul> * <li>The data type is not {@link #TYPE_ASCII} or {@link #TYPE_UNDEFINED}.</li> * <li>The length of the string is not equal to (component count - 1) or Loading @@ -331,12 +335,21 @@ public class ExifTag { byte[] buf = value.getBytes(US_ASCII); byte[] finalBuf = buf; if (mDataType == TYPE_ASCII) { if (buf.length > 0) { finalBuf = (buf[buf.length - 1] == 0 || mDataType == TYPE_UNDEFINED) ? buf : Arrays .copyOf(buf, buf.length + 1); } else if (mDataType == TYPE_ASCII && mComponentCountActual == 1) { if (buf[buf.length - 1] != 0) { finalBuf = Arrays.copyOf(buf, buf.length + 1); // Apply the workaround for non conformant implementations // (e.g. Samsung Wave 2): Accept a string with missing // termination character if (mComponentCountActual == buf.length) { mComponentCountActual++; } } } else if (mComponentCountActual == 1) { finalBuf = new byte[] { 0 }; } } int count = finalBuf.length; if (checkBadComponentCount(count)) { return false; Loading Loading
gallerycommon/src/com/android/gallery3d/exif/ExifTag.java +23 −10 Original line number Diff line number Diff line Loading @@ -314,10 +314,14 @@ public class ExifTag { * Sets a string value into this tag. This method should be used for tags of * type {@link #TYPE_ASCII}. The string is converted to an ASCII string. * Characters that cannot be converted are replaced with '?'. The length of * the string must be equal to either (component count -1) or (component * count). The final byte will be set to the string null terminator '\0', * overwriting the last character in the string if the value.length is equal * to the component count. This method will fail if: * the string must be equal to either * <ul> * <li>component count - 1 when the terminating '\0' is not present</li> * <li>component count when the terminating '\0' is present</li> * <li>to comply with some non-conformant implementations, the terminating * '\0' will be appended if it's not present and component count equals * the string length; the component count will be updated in that case</li> * This method will fail if: * <ul> * <li>The data type is not {@link #TYPE_ASCII} or {@link #TYPE_UNDEFINED}.</li> * <li>The length of the string is not equal to (component count - 1) or Loading @@ -331,12 +335,21 @@ public class ExifTag { byte[] buf = value.getBytes(US_ASCII); byte[] finalBuf = buf; if (mDataType == TYPE_ASCII) { if (buf.length > 0) { finalBuf = (buf[buf.length - 1] == 0 || mDataType == TYPE_UNDEFINED) ? buf : Arrays .copyOf(buf, buf.length + 1); } else if (mDataType == TYPE_ASCII && mComponentCountActual == 1) { if (buf[buf.length - 1] != 0) { finalBuf = Arrays.copyOf(buf, buf.length + 1); // Apply the workaround for non conformant implementations // (e.g. Samsung Wave 2): Accept a string with missing // termination character if (mComponentCountActual == buf.length) { mComponentCountActual++; } } } else if (mComponentCountActual == 1) { finalBuf = new byte[] { 0 }; } } int count = finalBuf.length; if (checkBadComponentCount(count)) { return false; Loading