about summary refs log tree commit diff
path: root/src/libnm-glib-aux/nm-secret-utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libnm-glib-aux/nm-secret-utils.h')
-rw-r--r--src/libnm-glib-aux/nm-secret-utils.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/libnm-glib-aux/nm-secret-utils.h b/src/libnm-glib-aux/nm-secret-utils.h
index ac279635..513dbca5 100644
--- a/src/libnm-glib-aux/nm-secret-utils.h
+++ b/src/libnm-glib-aux/nm-secret-utils.h
@@ -20,6 +20,22 @@ char *nm_secret_strchomp(char *secret);
 
 void nm_free_secret(char *secret);
 
+static inline gboolean
+nm_strdup_reset_secret(char **dst, const char *src)
+{
+    char *old;
+
+    nm_assert(dst);
+
+    if (nm_streq0(*dst, src))
+        return FALSE;
+    old  = *dst;
+    *dst = src ? g_strdup(src) : NULL;
+    if (old)
+        nm_free_secret(old);
+    return TRUE;
+}
+
 NM_AUTO_DEFINE_FCN0(char *, _nm_auto_free_secret, nm_free_secret);
 /**
  * nm_auto_free_secret:
@@ -46,8 +62,8 @@ typedef struct {
     /* the data pointer. This pointer must be allocated with malloc (at least
      * when used with nm_secret_ptr_clear()). */
     union {
-        char *  str;
-        void *  ptr;
+        char   *str;
+        void   *ptr;
         guint8 *bin;
     };
 } NMSecretPtr;