aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2023-05-26 09:56:36 +0000
committerWerner Koch <[email protected]>2023-05-26 12:27:15 +0000
commitec0c35d1b8be02e4d6c43b77e25c354741b27231 (patch)
tree27ee9cc765e484f621111c05682b6ba643979d49
parentagent,dirmngr: Shutdown fix for supervised mode. (diff)
downloadgnupg-ec0c35d1b8be02e4d6c43b77e25c354741b27231.tar.gz
gnupg-ec0c35d1b8be02e4d6c43b77e25c354741b27231.zip
common: New function nve_set
* common/name-value.c (nve_set): New. -- Taken from 2.2 commit 706adf669173ec604158e4a2f4337e3da6cb1e45
-rw-r--r--common/name-value.c24
-rw-r--r--common/name-value.h3
2 files changed, 27 insertions, 0 deletions
diff --git a/common/name-value.c b/common/name-value.c
index 67429e47f..6f3df5a8d 100644
--- a/common/name-value.c
+++ b/common/name-value.c
@@ -497,6 +497,30 @@ nvc_set (nvc_t pk, const char *name, const char *value)
}
+/* Update entry E to VALUE. */
+gpg_error_t
+nve_set (nve_t e, const char *value)
+{
+ char *v;
+
+ if (!e)
+ return GPG_ERR_INV_ARG;
+
+ v = xtrystrdup (value? value:"");
+ if (!v)
+ return my_error_from_syserror ();
+
+ free_strlist_wipe (e->raw_value);
+ e->raw_value = NULL;
+ if (e->value)
+ wipememory (e->value, strlen (e->value));
+ xfree (e->value);
+ e->value = v;
+
+ return 0;
+}
+
+
/* Delete the given entry from PK. */
void
nvc_delete (nvc_t pk, nve_t entry)
diff --git a/common/name-value.h b/common/name-value.h
index 504b5d0f0..b3fc2f63c 100644
--- a/common/name-value.h
+++ b/common/name-value.h
@@ -92,6 +92,9 @@ gpg_error_t nvc_add (nvc_t pk, const char *name, const char *value);
first entry is updated. */
gpg_error_t nvc_set (nvc_t pk, const char *name, const char *value);
+/* Update entry E to VALUE. */
+gpg_error_t nve_set (nve_t e, const char *value);
+
/* Delete the given entry from PK. */
void nvc_delete (nvc_t pk, nve_t pke);