aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/php/ext/grpc
diff options
context:
space:
mode:
authorGravatar Zhouyihai Ding <ddyihai@google.com>2018-01-23 20:43:53 -0800
committerGravatar Zhouyihai Ding <ddyihai@google.com>2018-01-24 11:15:04 -0800
commitec0669c8a27893e582fd498624dbee57f7a2ca49 (patch)
tree73313bb763a4e7b61f58bb7959cf7cd865a41ab9 /src/php/ext/grpc
parentc84c8d44c7e835f1906cdb9f3f33248b593305c7 (diff)
php: call credentials plugin_get_metadata metadata leak
Diffstat (limited to 'src/php/ext/grpc')
-rw-r--r--src/php/ext/grpc/call.c4
-rw-r--r--src/php/ext/grpc/call_credentials.c1
2 files changed, 4 insertions, 1 deletions
diff --git a/src/php/ext/grpc/call.c b/src/php/ext/grpc/call.c
index 115358d600..ff55c3cbfa 100644
--- a/src/php/ext/grpc/call.c
+++ b/src/php/ext/grpc/call.c
@@ -128,10 +128,12 @@ bool create_metadata_array(zval *array, grpc_metadata_array *metadata) {
HashTable *inner_array_hash;
zval *value;
zval *inner_array;
+ grpc_metadata_array_init(metadata);
+ metadata->count = 0;
+ metadata->metadata = NULL;
if (Z_TYPE_P(array) != IS_ARRAY) {
return false;
}
- grpc_metadata_array_init(metadata);
array_hash = Z_ARRVAL_P(array);
char *key;
diff --git a/src/php/ext/grpc/call_credentials.c b/src/php/ext/grpc/call_credentials.c
index a37eb601c4..41c488a79c 100644
--- a/src/php/ext/grpc/call_credentials.c
+++ b/src/php/ext/grpc/call_credentials.c
@@ -195,6 +195,7 @@ int plugin_get_metadata(
if (!create_metadata_array(retval, &metadata)) {
*status = GRPC_STATUS_INVALID_ARGUMENT;
should_return = true; // Synchronous return.
+ grpc_php_metadata_array_destroy_including_entries(&metadata);
}
if (retval != NULL) {