aboutsummaryrefslogtreecommitdiffstats
path: root/common/name-value.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2023-11-21 07:55:56 +0000
committerWerner Koch <[email protected]>2023-11-21 07:56:24 +0000
commit813bb65d952d7d02039f8c04c18cc74a512eacf7 (patch)
tree03a7007c4c1e6a5a56a9c7d5b9f43fe823d59727 /common/name-value.c
parentagent: Update the key file only if not changed. (diff)
downloadgnupg-813bb65d952d7d02039f8c04c18cc74a512eacf7.tar.gz
gnupg-813bb65d952d7d02039f8c04c18cc74a512eacf7.zip
common: Check wether to set the modified flag in nve_set.
* common/name-value.c (nvc_set): Factor code out to ... (nve_set): here.
Diffstat (limited to 'common/name-value.c')
-rw-r--r--common/name-value.c30
1 files changed, 8 insertions, 22 deletions
diff --git a/common/name-value.c b/common/name-value.c
index b7bc32844..ea6a84f56 100644
--- a/common/name-value.c
+++ b/common/name-value.c
@@ -495,34 +495,13 @@ gpg_error_t
nvc_set (nvc_t pk, const char *name, const char *value)
{
nve_t e;
- char *v;
if (! valid_name (name))
return GPG_ERR_INV_NAME;
e = nvc_lookup (pk, name);
if (e)
- {
- if (e->value && value && !strcmp (e->value, value))
- {
- /* Setting same value - ignore this call and don't set the
- * modified flag. */
- return 0;
- }
-
- v = xtrystrdup (value);
- if (v == NULL)
- 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;
- pk->modified = 1;
- return 0;
- }
+ return nve_set (pk, e, value);
else
return nvc_add (pk, name, value);
}
@@ -538,6 +517,13 @@ nve_set (nvc_t pk, nve_t e, const char *value)
if (!e)
return GPG_ERR_INV_ARG;
+ if (e->value && value && !strcmp (e->value, value))
+ {
+ /* Setting same value - ignore this call and don't set the
+ * modified flag (if PK is given). */
+ return 0;
+ }
+
v = xtrystrdup (value? value:"");
if (!v)
return my_error_from_syserror ();