payload is at least one byte
diff --git a/lib/picotls.c b/lib/picotls.c
index 5017ded..e993562 100644
--- a/lib/picotls.c
+++ b/lib/picotls.c
@@ -3704,6 +3704,10 @@
                     src = end;
                 });
                 ptls_decode_open_block(src, end, 2, {
+                    if (src == end) {
+                        ret = PTLS_ALERT_DECODE_ERROR;
+                        goto Exit;
+                    }
                     ch->ech.payload = ptls_iovec_init(src, end - src);
                     src = end;
                 });