@@ -69,13 +69,16 @@ public ItemInfoEntry(SequentialReader reader, Box box) throws IOException
69
69
{
70
70
super (reader , box );
71
71
72
+ // 4 Bytes for length, 4 Bytes for type. Reader is indexed from AFTER type but box.size INCLUDES the aforementioned 8 bytes
73
+ int headerLength = 8 ;
74
+
72
75
if ((version == 0 ) || (version == 1 )) {
73
76
itemID = reader .getUInt16 ();
74
77
itemProtectionIndex = reader .getUInt16 ();
75
- itemName = reader .getNullTerminatedString ((int )(box .size - reader .getPosition ()), Charsets .UTF_8 );
76
- contentType = reader .getNullTerminatedString ((int )(box .size - reader .getPosition ()), Charsets .UTF_8 );
77
- if (box .size - reader .getPosition () > 0 ) {
78
- extensionType = reader .getNullTerminatedString ((int ) (box .size - reader .getPosition ()), Charsets .UTF_8 );
78
+ itemName = reader .getNullTerminatedString ((int )(box .size - reader .getPosition () - headerLength ), Charsets .UTF_8 );
79
+ contentType = reader .getNullTerminatedString ((int )(box .size - reader .getPosition () - headerLength ), Charsets .UTF_8 );
80
+ if (box .size - reader .getPosition () - headerLength > 0 ) {
81
+ extensionType = reader .getNullTerminatedString ((int ) (box .size - reader .getPosition () - headerLength ), Charsets .UTF_8 );
79
82
}
80
83
}
81
84
if (version == 1 ) {
@@ -92,14 +95,14 @@ public ItemInfoEntry(SequentialReader reader, Box box) throws IOException
92
95
itemProtectionIndex = reader .getUInt16 ();
93
96
itemType = reader .getString (4 );
94
97
95
- itemName = reader .getNullTerminatedString ((int )(box .size - reader .getPosition ()), Charsets .UTF_8 );
98
+ itemName = reader .getNullTerminatedString ((int )(box .size - reader .getPosition () - headerLength ), Charsets .UTF_8 );
96
99
if (itemType .equals ("mime" )) {
97
- contentType = reader .getNullTerminatedString ((int )(box .size - reader .getPosition ()), Charsets .UTF_8 );
98
- if (box .size - reader .getPosition () > 0 ) {
99
- contentEncoding = reader .getNullTerminatedString ((int )(box .size - reader .getPosition ()), Charsets .UTF_8 );
100
+ contentType = reader .getNullTerminatedString ((int )(box .size - reader .getPosition () - headerLength ), Charsets .UTF_8 );
101
+ if (box .size - reader .getPosition () - headerLength > 0 ) {
102
+ contentEncoding = reader .getNullTerminatedString ((int )(box .size - reader .getPosition () - headerLength ), Charsets .UTF_8 );
100
103
}
101
104
} else if (itemType .equals ("uri " )) {
102
- itemUriType = reader .getString ((int )(box .size - reader .getPosition ()));
105
+ itemUriType = reader .getString ((int )(box .size - reader .getPosition () - headerLength ));
103
106
}
104
107
}
105
108
}
0 commit comments