summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStef Walter <stef@thewalter.net>2014-08-08 17:19:50 +0200
committerStef Walter <stef@thewalter.net>2014-08-08 18:44:20 +0200
commitcdf540cefd7e106bc4607584dfa153d847f1a2a9 (patch)
treece3085b2dd71119f10f1a24bbe2ff2a21a03dff2
parent29325102bb93239313f4b2928f18a589731bd125 (diff)
trust: Fix use after free and double free in extract command
-rw-r--r--trust/extract.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/trust/extract.c b/trust/extract.c
index b93571b..1bc406c 100644
--- a/trust/extract.c
+++ b/trust/extract.c
@@ -289,7 +289,6 @@ p11_trust_extract_compat (int argc,
char *argv[])
{
char *path = NULL;
- char *path2 = NULL;
int error;
argv[argc] = NULL;
@@ -298,24 +297,22 @@ p11_trust_extract_compat (int argc,
* For compatibility with people who deployed p11-kit 0.18.x
* before trust stuff was put into its own branch.
*/
- path2 = p11_path_build (PRIVATEDIR, "p11-kit-extract-trust", NULL);
- return_val_if_fail (path2 != NULL, 1);
- execv (path2, argv);
+ path = p11_path_build (PRIVATEDIR, "p11-kit-extract-trust", NULL);
+ return_val_if_fail (path != NULL, 1);
+ execv (path, argv);
error = errno;
- free (path2);
if (error == ENOENT) {
+ free (path);
path = p11_path_build (PRIVATEDIR, "trust-extract-compat", NULL);
return_val_if_fail (path != NULL, 1);
execv (path, argv);
error = errno;
- free (path);
}
/* At this point we have no command */
p11_message_err (error, "could not run %s command", path);
free (path);
- free (path2);
return 2;
}