fix GrpcServer out-of-bounds bug (#7995)

Co-authored-by: 灵洵 <fengbin.ffb@antfin.com>
This commit is contained in:
fangfengbin 2020-04-14 10:34:29 +08:00 committed by GitHub
parent d985d7537e
commit 026abb119c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -24,7 +24,7 @@ namespace rpc {
GrpcServer::GrpcServer(std::string name, const uint32_t port, int num_threads) GrpcServer::GrpcServer(std::string name, const uint32_t port, int num_threads)
: name_(std::move(name)), port_(port), is_closed_(true), num_threads_(num_threads) { : name_(std::move(name)), port_(port), is_closed_(true), num_threads_(num_threads) {
cqs_.reserve(num_threads_); cqs_.resize(num_threads_);
} }
void GrpcServer::Run() { void GrpcServer::Run() {
@ -52,7 +52,7 @@ void GrpcServer::Run() {
// Get hold of the completion queue used for the asynchronous communication // Get hold of the completion queue used for the asynchronous communication
// with the gRPC runtime. // with the gRPC runtime.
for (int i = 0; i < num_threads_; i++) { for (int i = 0; i < num_threads_; i++) {
cqs_.push_back(builder.AddCompletionQueue()); cqs_[i] = builder.AddCompletionQueue();
} }
// Build and start server. // Build and start server.
server_ = builder.BuildAndStart(); server_ = builder.BuildAndStart();