s3:secrets: re-add secrets_delete() helper to simplify deleting optional keys
authorStefan Metzmacher <metze@samba.org>
Mon, 22 May 2017 10:21:37 +0000 (12:21 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 27 Jun 2017 14:57:45 +0000 (16:57 +0200)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12782

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
source3/include/secrets.h
source3/passdb/secrets.c

index e7f87a9f67329f693d79f6e7f35b83bb8c1c4066..548003fc4fd61f4357f1e98e1bebe7bbb330797b 100644 (file)
@@ -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);
index 3c3b6b9e27ba8e94df5e265249996b8b1f5a275f..7533d6b842f2189cf1fd7b6936140ec45cc1f9bb 100644 (file)
@@ -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
  *