From 1bbefc1c46ecc511d25d41e1788ab2e9549d8f50 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 22 May 2017 12:21:37 +0200 Subject: [PATCH] s3:secrets: re-add secrets_delete() helper to simplify deleting optional keys BUG: https://bugzilla.samba.org/show_bug.cgi?id=12782 Signed-off-by: Stefan Metzmacher Reviewed-by: Andreas Schneider (cherry picked from commit fde4af1c329655d7ef3f55727632b3f026a3ea73) --- source3/include/secrets.h | 1 + source3/passdb/secrets.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/source3/include/secrets.h b/source3/include/secrets.h index e7f87a9f673..548003fc4fd 100644 --- a/source3/include/secrets.h +++ b/source3/include/secrets.h @@ -89,6 +89,7 @@ void secrets_shutdown(void); void *secrets_fetch(const char *key, size_t *size); bool secrets_store(const char *key, const void *data, size_t size); bool secrets_delete_entry(const char *key); +bool secrets_delete(const char *key); /* The following definitions come from passdb/machine_account_secrets.c */ bool secrets_mark_domain_protected(const char *domain); diff --git a/source3/passdb/secrets.c b/source3/passdb/secrets.c index ae00936948a..d843b604f0b 100644 --- a/source3/passdb/secrets.c +++ b/source3/passdb/secrets.c @@ -158,6 +158,25 @@ bool secrets_delete_entry(const char *key) return NT_STATUS_IS_OK(status); } +/* + * Deletes the key if it exists. + */ +bool secrets_delete(const char *key) +{ + bool exists; + + if (!secrets_init()) { + return false; + } + + exists = dbwrap_exists(db_ctx, string_tdb_data(key)); + if (!exists) { + return true; + } + + return secrets_delete_entry(key); +} + /** * Form a key for fetching a trusted domain password * -- 2.47.2