diff --git a/os_ken/ofproto/ofproto_v1_3_parser.py b/os_ken/ofproto/ofproto_v1_3_parser.py
index 6e42847a..1d02a5a5 100644
--- a/os_ken/ofproto/ofproto_v1_3_parser.py
+++ b/os_ken/ofproto/ofproto_v1_3_parser.py
@@ -1617,6 +1617,8 @@ class OFPPropBase(StringifyMixin):
     @classmethod
     def parse(cls, buf):
         (type_, length) = struct.unpack_from(cls._PACK_STR, buf, 0)
+        if not length:
+            raise ValueError
         rest = buf[utils.round_up(length, 8):]
         try:
             subcls = cls._TYPES[type_]
diff --git a/os_ken/ofproto/ofproto_v1_4_parser.py b/os_ken/ofproto/ofproto_v1_4_parser.py
index 10c5a70c..5f4c37a2 100644
--- a/os_ken/ofproto/ofproto_v1_4_parser.py
+++ b/os_ken/ofproto/ofproto_v1_4_parser.py
@@ -884,6 +884,8 @@ class OFPPropBase(StringifyMixin):
     @classmethod
     def parse(cls, buf):
         (type_, length) = struct.unpack_from(cls._PACK_STR, buf, 0)
+        if not length:
+            raise ValueError
         rest = buf[utils.round_up(length, 8):]
         try:
             subcls = cls._TYPES[type_]
diff --git a/os_ken/ofproto/ofproto_v1_5_parser.py b/os_ken/ofproto/ofproto_v1_5_parser.py
index ce462e58..94249a40 100644
--- a/os_ken/ofproto/ofproto_v1_5_parser.py
+++ b/os_ken/ofproto/ofproto_v1_5_parser.py
@@ -1027,6 +1027,8 @@ class OFPPropBase(StringifyMixin):
     @classmethod
     def parse(cls, buf):
         (type_, length) = struct.unpack_from(cls._PACK_STR, buf, 0)
+        if not length:
+            raise ValueError
         rest = buf[utils.round_up(length, 8):]
         try:
             subcls = cls._TYPES[type_]