diff options
author | 2018-04-18 13:05:40 -0700 | |
---|---|---|
committer | 2018-04-18 14:18:29 -0700 | |
commit | 344634c198ce71940f9b1682d675d1ededc05772 (patch) | |
tree | 86bec4f316845f5446d82b3c99e31ead9b9df5be /src/core/lib | |
parent | dc4d01f6efa8ffc94d8c0223ca9fab44822ca691 (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.cc | 1 | ||||
-rw-r--r-- | src/core/lib/channel/handshaker.cc | 7 |
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; } |