diff --git a/src/core/surface/validate_metadata.c b/src/core/surface/validate_metadata.c
index 94fb3963b2dc474a2a2fb3dfe8cc2f1f710f04a3..7e88cc24d2d774404466b3caa670ea242a13f56d 100644
--- a/src/core/surface/validate_metadata.c
+++ b/src/core/surface/validate_metadata.c
@@ -53,6 +53,9 @@ int grpc_header_key_is_legal(const char *key, size_t length) {
       0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0x03, 0x00, 0x00, 0x00,
       0x80, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+  if (length == 0) {
+    return 0;
+  }
   return conforms_to(key, length, legal_header_bits);
 }