From 27950465b1a3c5f85dfc0ef3dba9e0124c65a6c0 Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Wed, 24 Feb 2016 10:57:28 -0500 Subject: [PATCH] secret: Introduce listUnlinkSecret Add a temporary helper to search for a specific secret by address on the list and remove it if it's found. The following patch will introduce a common allocation and listInsert helper. That means error paths of the routines calling would need a way to remove the secret off the list. Signed-off-by: John Ferlan --- src/secret/secret_driver.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/secret/secret_driver.c b/src/secret/secret_driver.c index 2026e19531..dd8062f6e3 100644 --- a/src/secret/secret_driver.c +++ b/src/secret/secret_driver.c @@ -353,6 +353,26 @@ secretLoadValue(virSecretObjPtr secret) return ret; } + +static void +listUnlinkSecret(virSecretObjPtr *pptr, + virSecretObjPtr secret) +{ + if (!secret) + return; + + if (*pptr == secret) { + *pptr = secret->next; + } else { + virSecretObjPtr tmp = *pptr; + while (tmp && tmp->next != secret) + tmp = tmp->next; + if (tmp) + tmp->next = secret->next; + } +} + + static virSecretObjPtr secretLoad(const char *file, const char *path, @@ -980,15 +1000,7 @@ secretUndefine(virSecretPtr obj) secretDeleteSaved(secret) < 0) goto cleanup; - if (driver->secrets == secret) { - driver->secrets = secret->next; - } else { - virSecretObjPtr tmp = driver->secrets; - while (tmp && tmp->next != secret) - tmp = tmp->next; - if (tmp) - tmp->next = secret->next; - } + listUnlinkSecret(&driver->secrets, secret); secretFree(secret); ret = 0; -- GitLab