diff --git a/ml b/ml deleted file mode 100644 index 678284ae797..00000000000 --- a/ml +++ /dev/null @@ -1,7 +0,0 @@ - -Note: Google Test filter = CredentialsTest.TlsServerAuthorizationCheckCppToC -[==========] Running 1 test from 1 test case. -[----------] Global test environment set-up. -[----------] 1 test from CredentialsTest -[ RUN ] CredentialsTest.TlsServerAuthorizationCheckCppToC - \ No newline at end of file diff --git a/test/cpp/client/credentials_test.cc b/test/cpp/client/credentials_test.cc index 5257bc83051..6b58e18e8da 100644 --- a/test/cpp/client/credentials_test.cc +++ b/test/cpp/client/credentials_test.cc @@ -415,11 +415,16 @@ TEST_F(CredentialsTest, TlsCredentialReloadConfigCppToC) { EXPECT_STREQ(pair_list[1].cert_chain(), "cert_chain3"); EXPECT_EQ(c_arg.status, GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW); EXPECT_STREQ(c_arg.error_details, test_error_details.c_str()); + const char* error_details_after_schedule = c_arg.error_details; c_config->Cancel(&c_arg); EXPECT_EQ(c_arg.status, GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL); EXPECT_STREQ(c_arg.error_details, "cancelled"); + // Must free the fields of the C arg afterwards, regardless + // of whether or not they were changed. + gpr_free(const_cast(c_arg.error_details)); + gpr_free(const_cast(error_details_after_schedule)); gpr_free(c_config); } @@ -495,9 +500,22 @@ TEST_F(CredentialsTest, TlsServerAuthorizationCheckConfigCppToC) { EXPECT_EQ(c_arg.status, GRPC_STATUS_OK); EXPECT_STREQ(c_arg.error_details, "sync_error_details"); + const char* target_name_after_schedule = c_arg.target_name; + const char* peer_cert_after_schedule = c_arg.peer_cert; + const char* error_details_after_schedule = c_arg.error_details; + c_config->Cancel(&c_arg); EXPECT_EQ(c_arg.status, GRPC_STATUS_PERMISSION_DENIED); EXPECT_STREQ(c_arg.error_details, "cancelled"); + + // Must free the fields of the C arg afterwards, regardless + // of whether or not they were changed. + gpr_free(const_cast(c_arg.target_name)); + gpr_free(const_cast(c_arg.peer_cert)); + gpr_free(const_cast(c_arg.error_details)); + gpr_free(const_cast(target_name_after_schedule)); + gpr_free(const_cast(peer_cert_after_schedule)); + gpr_free(const_cast(error_details_after_schedule)); } typedef class ::grpc_impl::experimental::TlsCredentialsOptions @@ -580,6 +598,7 @@ TEST_F(CredentialsTest, TlsCredentialsOptionsCppToC) { GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_NEW); EXPECT_STREQ(c_credential_reload_arg.error_details, test_error_details.c_str()); + gpr_free(const_cast(c_credential_reload_arg.error_details)); int c_server_authorization_check_schedule_output = c_server_authorization_check_config->Schedule( @@ -596,6 +615,10 @@ TEST_F(CredentialsTest, TlsCredentialsOptionsCppToC) { EXPECT_EQ(c_server_authorization_check_arg.status, GRPC_STATUS_OK); EXPECT_STREQ(c_server_authorization_check_arg.error_details, "sync_error_details"); + gpr_free(const_cast(c_server_authorization_check_arg.target_name)); + gpr_free(const_cast(c_server_authorization_check_arg.peer_cert)); + gpr_free(const_cast(c_server_authorization_check_arg.error_details)); + gpr_free(c_options); }