aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/lib
diff options
context:
space:
mode:
authorGravatar Mark D. Roth <roth@google.com>2018-04-18 13:05:40 -0700
committerGravatar Mark D. Roth <roth@google.com>2018-04-18 14:18:29 -0700
commit344634c198ce71940f9b1682d675d1ededc05772 (patch)
tree86bec4f316845f5446d82b3c99e31ead9b9df5be /src/core/lib
parentdc4d01f6efa8ffc94d8c0223ca9fab44822ca691 (diff)
Don't crash on null channel args or read buffer.
Diffstat (limited to 'src/core/lib')
-rw-r--r--src/core/lib/channel/channel_args.cc1
-rw-r--r--src/core/lib/channel/handshaker.cc7
2 files changed, 6 insertions, 2 deletions
diff --git a/src/core/lib/channel/channel_args.cc b/src/core/lib/channel/channel_args.cc
index 2c93117dfc..e49d532e11 100644
--- a/src/core/lib/channel/channel_args.cc
+++ b/src/core/lib/channel/channel_args.cc
@@ -413,6 +413,7 @@ grpc_arg grpc_channel_arg_pointer_create(
}
char* grpc_channel_args_string(const grpc_channel_args* args) {
+ if (args == nullptr) return nullptr;
gpr_strvec v;
gpr_strvec_init(&v);
for (size_t i = 0; i < args->num_args; ++i) {
diff --git a/src/core/lib/channel/handshaker.cc b/src/core/lib/channel/handshaker.cc
index 00cca9a518..9cd97823d4 100644
--- a/src/core/lib/channel/handshaker.cc
+++ b/src/core/lib/channel/handshaker.cc
@@ -188,12 +188,15 @@ void grpc_handshake_manager_shutdown(grpc_handshake_manager* mgr,
static char* handshaker_args_string(grpc_handshaker_args* args) {
char* args_str = grpc_channel_args_string(args->args);
+ size_t num_args = args->args != nullptr ? args->args->num_args : 0;
+ size_t read_buffer_length =
+ args->read_buffer != nullptr ? args->read_buffer->length : 0;
char* str;
gpr_asprintf(&str,
"{endpoint=%p, args=%p {size=%" PRIuPTR
": %s}, read_buffer=%p (length=%" PRIuPTR "), exit_early=%d}",
- args->endpoint, args->args, args->args->num_args, args_str,
- args->read_buffer, args->read_buffer->length, args->exit_early);
+ args->endpoint, args->args, num_args, args_str,
+ args->read_buffer, read_buffer_length, args->exit_early);
gpr_free(args_str);
return str;
}