Index: trunk/src/com/drew/metadata/iptc/IptcReader.java
===================================================================
--- trunk/src/com/drew/metadata/iptc/IptcReader.java	(revision 13061)
+++ trunk/src/com/drew/metadata/iptc/IptcReader.java	(revision 15217)
@@ -1,4 +1,4 @@
 /*
- * Copyright 2002-2017 Drew Noakes
+ * Copyright 2002-2019 Drew Noakes and contributors
  *
  *    Licensed under the Apache License, Version 2.0 (the "License");
@@ -118,6 +118,6 @@
             }
 
-            // we need at least five bytes left to read a tag
-            if (offset + 5 > length) {
+            // we need at least four bytes left to read a tag
+            if (offset + 4 > length) {
                 directory.addError("Too few bytes remain for a valid IPTC tag");
                 return;
@@ -130,6 +130,10 @@
                 directoryType = reader.getUInt8();
                 tagType = reader.getUInt8();
-                // TODO support Extended DataSet Tag (see 1.5(c), p14, IPTC-IIMV4.2.pdf)
                 tagByteCount = reader.getUInt16();
+                if (tagByteCount > 32767) {
+                    // Extended DataSet Tag (see 1.5(c), p14, IPTC-IIMV4.2.pdf)
+                    tagByteCount = ((tagByteCount & 0x7FFF) << 16) | reader.getUInt16();
+                    offset += 2;
+                }
                 offset += 4;
             } catch (IOException e) {
