Repository: kudu Updated Branches: refs/heads/master d552c4930 -> 2e462afc8
[security] fixed memory leak in Krb5CallToStatus Change-Id: I5eb86d31819c504cd8fd630c744c6ef775c6a499 Reviewed-on: http://gerrit.cloudera.org:8080/6411 Tested-by: Kudu Jenkins Reviewed-by: Will Berkeley <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/kudu/repo Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/2e462afc Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/2e462afc Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/2e462afc Branch: refs/heads/master Commit: 2e462afc8f974f61e3ece556e44780455807888d Parents: d552c49 Author: Alexey Serbin <[email protected]> Authored: Wed Mar 15 19:59:44 2017 -0700 Committer: Will Berkeley <[email protected]> Committed: Thu Mar 16 05:40:46 2017 +0000 ---------------------------------------------------------------------- src/kudu/security/init.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kudu/blob/2e462afc/src/kudu/security/init.cc ---------------------------------------------------------------------- diff --git a/src/kudu/security/init.cc b/src/kudu/security/init.cc index 294a96b..dfdb5cd 100644 --- a/src/kudu/security/init.cc +++ b/src/kudu/security/init.cc @@ -20,6 +20,8 @@ #include <krb5/krb5.h> #include <algorithm> +#include <functional> +#include <memory> #include <mutex> #include <random> #include <string> @@ -124,7 +126,11 @@ class KinitContext { Status Krb5CallToStatus(krb5_context ctx, krb5_error_code code) { if (code == 0) return Status::OK(); - return Status::RuntimeError(krb5_get_error_message(ctx, code)); + + std::unique_ptr<const char, std::function<void(const char*)>> err_msg( + krb5_get_error_message(ctx, code), + std::bind(krb5_free_error_message, ctx, std::placeholders::_1)); + return Status::RuntimeError(err_msg.get()); } #define KRB5_RETURN_NOT_OK_PREPEND(call, prepend) \ RETURN_NOT_OK_PREPEND(Krb5CallToStatus(g_krb5_ctx, (call)), (prepend))
