From cc5378453fcdb8d4fdc18a1a369184210ce9ece0 Mon Sep 17 00:00:00 2001 From: Eric Anderson Date: Thu, 5 Jan 2023 17:36:24 -0800 Subject: [PATCH] api: Early-detect null bytes from Metadata.Marshaller See #9706 --- api/src/main/java/io/grpc/Metadata.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/api/src/main/java/io/grpc/Metadata.java b/api/src/main/java/io/grpc/Metadata.java index 8ea16ccb4e..58fcefe137 100644 --- a/api/src/main/java/io/grpc/Metadata.java +++ b/api/src/main/java/io/grpc/Metadata.java @@ -873,7 +873,7 @@ public final class Metadata { @Override byte[] toBytes(T value) { - return marshaller.toBytes(value); + return Preconditions.checkNotNull(marshaller.toBytes(value), "null marshaller.toBytes()"); } @Override @@ -901,7 +901,7 @@ public final class Metadata { @Override byte[] toBytes(T value) { - return streamToBytes(marshaller.toStream(value)); + return streamToBytes(checkNotNull(marshaller.toStream(value), "null marshaller.toStream()")); } @Override @@ -932,7 +932,7 @@ public final class Metadata { } InputStream toStream() { - return marshaller.toStream(value); + return checkNotNull(marshaller.toStream(value), "null marshaller.toStream()"); } byte[] toBytes() { @@ -979,7 +979,9 @@ public final class Metadata { @Override byte[] toBytes(T value) { - return marshaller.toAsciiString(value).getBytes(US_ASCII); + String encoded = Preconditions.checkNotNull( + marshaller.toAsciiString(value), "null marshaller.toAsciiString()"); + return encoded.getBytes(US_ASCII); } @Override @@ -1004,7 +1006,8 @@ public final class Metadata { @Override byte[] toBytes(T value) { - return marshaller.toAsciiString(value); + return Preconditions.checkNotNull( + marshaller.toAsciiString(value), "null marshaller.toAsciiString()"); } @Override