Index: ui/file_manager/file_manager/foreground/js/metadata/exif_parser.js |
diff --git a/ui/file_manager/file_manager/foreground/js/metadata/exif_parser.js b/ui/file_manager/file_manager/foreground/js/metadata/exif_parser.js |
index e70fe3b5f1d7354cf848872761f61fc3b6dc58bf..5fb2e015b6a9e425f5c84c03bea63089766e249c 100644 |
--- a/ui/file_manager/file_manager/foreground/js/metadata/exif_parser.js |
+++ b/ui/file_manager/file_manager/foreground/js/metadata/exif_parser.js |
@@ -362,6 +362,7 @@ ExifParser.prototype.readTagValue = function(br, tag) { |
} else { |
tag.value = String.fromCharCode.apply(null, tag.value); |
} |
+ this.validateAndFixStringTag_(tag); |
break; |
case 3: // Short |
@@ -400,6 +401,23 @@ ExifParser.prototype.readTagValue = function(br, tag) { |
}; |
/** |
+ * Validates string tag value, and fix it if necessary. |
+ * @param {!ExifEntry} tag A tag to be validated and fixed. |
+ * @private |
+ */ |
+ExifParser.prototype.validateAndFixStringTag_ = function(tag) { |
+ if (tag.format === 2) { // string |
+ // String should end with null character. |
+ if (tag.value.charAt(tag.value.length - 1) !== '\0') { |
+ tag.value += '\0'; |
+ tag.componentCount = tag.value.length; |
+ this.vlog('Invalid format: 0x' + tag.id.toString(16) + '/' + tag.format + |
+ ': Did not end with null character. Null character is appended.'); |
+ } |
+ } |
+}; |
+ |
+/** |
* Map from the exif orientation value to the horizontal scale value. |
* @const |
* @type {Array.<number>} |