[api_fuzzer] Cap the number of comma-delimited strings in the target URI to 1K.

PiperOrigin-RevId: 596739224
pull/35468/head
Mark D. Roth 1 year ago committed by Copybara-Service
parent 9a7c0b5f57
commit 0df505d9db
  1. 22
      test/core/end2end/fuzzers/api_fuzzer.cc

@ -29,6 +29,8 @@
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/strings/str_join.h"
#include "absl/strings/str_split.h"
#include "absl/strings/string_view.h"
#include "absl/types/optional.h"
@ -407,6 +409,21 @@ void ApiFuzzer::Tick() {
}
}
namespace {
// If there are more than 1K comma-delimited strings in target, remove
// the extra ones.
std::string SanitizeTargetUri(absl::string_view target) {
constexpr size_t kMaxCommaDelimitedStrings = 1000;
std::vector<absl::string_view> parts = absl::StrSplit(target, ',');
if (parts.size() > kMaxCommaDelimitedStrings) {
parts.resize(kMaxCommaDelimitedStrings);
}
return absl::StrJoin(parts, ",");
}
} // namespace
ApiFuzzer::Result ApiFuzzer::CreateChannel(
const api_fuzzer::CreateChannel& create_channel) {
if (channel_ != nullptr) return Result::kComplete;
@ -423,8 +440,9 @@ ApiFuzzer::Result ApiFuzzer::CreateChannel(
create_channel.has_channel_creds()
? ReadChannelCreds(create_channel.channel_creds())
: grpc_insecure_credentials_create();
channel_ = grpc_channel_create(create_channel.target().c_str(), creds,
args.ToC().get());
channel_ =
grpc_channel_create(SanitizeTargetUri(create_channel.target()).c_str(),
creds, args.ToC().get());
grpc_channel_credentials_release(creds);
}
GPR_ASSERT(channel_ != nullptr);

Loading…
Cancel
Save