Skip to content
Snippets Groups Projects
Commit bdaea022 authored by Yang Gao's avatar Yang Gao
Browse files

Merge pull request #4927 from ctiller/fix-undefined-behavior

Fix undefined behavior
parents d991735c b9c5505c
No related branches found
No related tags found
No related merge requests found
...@@ -284,9 +284,13 @@ grpc_subchannel *grpc_subchannel_create(grpc_connector *connector, ...@@ -284,9 +284,13 @@ grpc_subchannel *grpc_subchannel_create(grpc_connector *connector,
c->connector = connector; c->connector = connector;
grpc_connector_ref(c->connector); grpc_connector_ref(c->connector);
c->num_filters = args->filter_count; c->num_filters = args->filter_count;
c->filters = gpr_malloc(sizeof(grpc_channel_filter *) * c->num_filters); if (c->num_filters > 0) {
memcpy((void *)c->filters, args->filters, c->filters = gpr_malloc(sizeof(grpc_channel_filter *) * c->num_filters);
sizeof(grpc_channel_filter *) * c->num_filters); memcpy((void *)c->filters, args->filters,
sizeof(grpc_channel_filter *) * c->num_filters);
} else {
c->filters = NULL;
}
c->addr = gpr_malloc(args->addr_len); c->addr = gpr_malloc(args->addr_len);
memcpy(c->addr, args->addr, args->addr_len); memcpy(c->addr, args->addr, args->addr_len);
grpc_pollset_set_init(&c->pollset_set); grpc_pollset_set_init(&c->pollset_set);
...@@ -483,7 +487,9 @@ static void publish_transport(grpc_exec_ctx *exec_ctx, grpc_subchannel *c) { ...@@ -483,7 +487,9 @@ static void publish_transport(grpc_exec_ctx *exec_ctx, grpc_subchannel *c) {
/* build final filter list */ /* build final filter list */
num_filters = c->num_filters + c->connecting_result.num_filters + 1; num_filters = c->num_filters + c->connecting_result.num_filters + 1;
filters = gpr_malloc(sizeof(*filters) * num_filters); filters = gpr_malloc(sizeof(*filters) * num_filters);
memcpy((void *)filters, c->filters, sizeof(*filters) * c->num_filters); if (c->num_filters > 0) {
memcpy((void *)filters, c->filters, sizeof(*filters) * c->num_filters);
}
memcpy((void *)(filters + c->num_filters), c->connecting_result.filters, memcpy((void *)(filters + c->num_filters), c->connecting_result.filters,
sizeof(*filters) * c->connecting_result.num_filters); sizeof(*filters) * c->connecting_result.num_filters);
filters[num_filters - 1] = &grpc_connected_channel_filter; filters[num_filters - 1] = &grpc_connected_channel_filter;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment