diff options
Diffstat (limited to 'agent/findkey.c')
-rw-r--r-- | agent/findkey.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/agent/findkey.c b/agent/findkey.c index a359c7e1b..b0f15fb3a 100644 --- a/agent/findkey.c +++ b/agent/findkey.c @@ -117,6 +117,8 @@ agent_write_private_key (const unsigned char *grip, } } + nvc_modified (pk, 1); /* Clear that flag after a read. */ + if (!pk) { /* Key is still in the old format or does not exist - create a @@ -212,7 +214,7 @@ agent_write_private_key (const unsigned char *grip, ; /* No need to update Token entry. */ else { - err = nve_set (item, token); + err = nve_set (pk, item, token); if (err) goto leave; } @@ -232,6 +234,13 @@ agent_write_private_key (const unsigned char *grip, goto leave; } + /* Check whether we need to write the file at all. */ + if (!nvc_modified (pk, 0)) + { + err = 0; + goto leave; + } + /* Create a temporary file for writing. */ fname = fname_from_keygrip (grip, 1); fp = fname ? es_fopen (fname, "wbx,mode=-rw") : NULL; |