summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-02-11 13:04:11 +0100
committerThomas Haller <thaller@redhat.com>2019-02-13 16:03:23 +0100
commit99ae5322c9363456f8fdb0be7ec9acf683d8939b (patch)
tree25b6eb7828ac388d4a02d0c04f84756a101c0554
parent2fa7a7c20b2d1706e2fe6231d7844f0d25313aa5 (diff)
downloadNetworkManager-99ae5322c9363456f8fdb0be7ec9acf683d8939b.tar.gz
shared: add macros for initializing NMSecretPtr
-rw-r--r--shared/nm-utils/nm-secret-utils.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/shared/nm-utils/nm-secret-utils.h b/shared/nm-utils/nm-secret-utils.h
index 9df31afea1..1bd518704e 100644
--- a/shared/nm-utils/nm-secret-utils.h
+++ b/shared/nm-utils/nm-secret-utils.h
@@ -76,6 +76,19 @@ typedef struct {
} NMSecretPtr;
static inline void
+nm_secret_ptr_bzero (NMSecretPtr *secret)
+{
+ if (secret) {
+ if (secret->len > 0) {
+ if (secret->ptr)
+ nm_explicit_bzero (secret->ptr, secret->len);
+ }
+ }
+}
+
+#define nm_auto_bzero_secret_ptr nm_auto(nm_secret_ptr_bzero)
+
+static inline void
nm_secret_ptr_clear (NMSecretPtr *secret)
{
if (secret) {
@@ -90,12 +103,24 @@ nm_secret_ptr_clear (NMSecretPtr *secret)
#define nm_auto_clear_secret_ptr nm_auto(nm_secret_ptr_clear)
+#define NM_SECRET_PTR_INIT() \
+ ((const NMSecretPtr) { \
+ .len = 0, \
+ .ptr = NULL, \
+ })
+
#define NM_SECRET_PTR_STATIC(_len) \
((const NMSecretPtr) { \
.len = _len, \
.ptr = ((guint8 [_len]) { }), \
})
+#define NM_SECRET_PTR_ARRAY(_arr) \
+ ((const NMSecretPtr) { \
+ .len = G_N_ELEMENTS (_arr) * sizeof ((_arr)[0]), \
+ .ptr = &((_arr)[0]), \
+ })
+
static inline void
nm_secret_ptr_clear_static (const NMSecretPtr *secret)
{