From c1f8603272ec4083fbe3f4fb267d1bd7654c7b36 Mon Sep 17 00:00:00 2001 From: Lukasz Wojciechowski Date: Tue, 22 Jul 2014 08:48:55 +0200 Subject: [PATCH] Fix parameter checking when setting bucket-pointing policy Field result_extra in cynara_admin_policy structure should contain another bucket's name in case of insertion or update of a policy pointing to another bucket. There was no check for that. In case a nullptr was passed, it was converted to an empty string "". Now cynara_admin_set_policies returns CYNARA_ADMIN_API_INVALID_PARAM when result is set to CYNARA_ADMIN_BUCKET and result_extra is nullptr. Change-Id: I24ff5ab662e88b7bc538368385e13d78f48f9e9a --- src/admin/api/admin-api.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/admin/api/admin-api.cpp b/src/admin/api/admin-api.cpp index 70c5283..4087e40 100644 --- a/src/admin/api/admin-api.cpp +++ b/src/admin/api/admin-api.cpp @@ -110,11 +110,12 @@ int cynara_admin_set_policies(struct cynara_admin *p_cynara_admin, Cynara::PredefinedPolicyType::ALLOW)); break; case CYNARA_ADMIN_BUCKET: + if (!(*i)->result_extra) + return CYNARA_ADMIN_API_INVALID_PARAM; insertOrUpdate[(*i)->bucket].push_back(Cynara::Policy(key(*i), Cynara::PolicyResult( Cynara::PredefinedPolicyType::BUCKET, - (*i)->result_extra ? (*i)->result_extra - : ""))); + (*i)->result_extra))); break; default: return CYNARA_ADMIN_API_INVALID_PARAM; -- 2.7.4