From f1889d55ad373e90deb563a0b271a52bb13fc836 Mon Sep 17 00:00:00 2001 From: vb Date: Wed, 20 Aug 2014 20:20:07 +0200 Subject: [PATCH] bugfix: update_identity --- src/keymanagement.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/keymanagement.c b/src/keymanagement.c index dd5a227c..9a082f41 100644 --- a/src/keymanagement.c +++ b/src/keymanagement.c @@ -44,6 +44,22 @@ DYNAMIC_API PEP_STATUS update_identity( if (status == PEP_OUT_OF_MEMORY) return PEP_OUT_OF_MEMORY; + if (EMPTY(identity->user_id)) { + free(identity->user_id); + identity->user_id = strdup(stored_identity->user_id); + if (identity->user_id == NULL) + return PEP_OUT_OF_MEMORY; + identity->user_id_size = stored_identity->user_id_size; + } + + if (EMPTY(identity->username)) { + free(identity->username); + identity->username = strdup(stored_identity->username); + if (identity->username == NULL) + return PEP_OUT_OF_MEMORY; + identity->username_size = stored_identity->username_size; + } + if (EMPTY(identity->fpr)) { identity->fpr = strdup(stored_identity->fpr); assert(identity->fpr); @@ -150,13 +166,14 @@ DYNAMIC_API PEP_STATUS update_identity( status = PEP_STATUS_OK; if (identity->comm_type != PEP_ct_unknown && !EMPTY(identity->user_id)) { - if (EMPTY(identity->username)) { + assert(!EMPTY(identity->username)); // this should not happen + + if (EMPTY(identity->username)) { // mitigate free(identity->username); - identity->username = strdup(stored_identity->username); - assert(identity->username); + identity->username = strdup("anonymous"); if (identity->username == NULL) return PEP_OUT_OF_MEMORY; - identity->username_size = stored_identity->username_size; + identity->username_size = 9; } status = set_identity(session, identity);