aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2014-12-22 11:16:46 +0000
committerWerner Koch <[email protected]>2014-12-22 11:39:14 +0000
commitabd5f6752d693b7f313c19604f0723ecec4d39a6 (patch)
treefb2795cad36a6e6d052d9c9da411db926086552a
parentscd: ECDH Support. (diff)
downloadgnupg-abd5f6752d693b7f313c19604f0723ecec4d39a6.tar.gz
gnupg-abd5f6752d693b7f313c19604f0723ecec4d39a6.zip
dirmngr,gpgsm: Return NULL on fail
* dirmngr/ldapserver.c (ldapserver_parse_one): Set SERVER to NULL. * sm/gpgsm.c (parse_keyserver_line): Ditto. -- Reported-by: Joshua Rogers <[email protected]> "If something inside the ldapserver_parse_one function failed, 'server' would be freed, then returned, leading to a use-after-free. This code is likely copied from sm/gpgsm.c, which was also susceptible to this bug." Signed-off-by: Werner Koch <[email protected]>
-rw-r--r--dirmngr/ldapserver.c1
-rw-r--r--sm/gpgsm.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/dirmngr/ldapserver.c b/dirmngr/ldapserver.c
index 20a574cb6..5808c5b02 100644
--- a/dirmngr/ldapserver.c
+++ b/dirmngr/ldapserver.c
@@ -125,6 +125,7 @@ ldapserver_parse_one (char *line,
{
log_info (_("%s:%u: skipping this line\n"), filename, lineno);
ldapserver_list_free (server);
+ server = NULL;
}
return server;
diff --git a/sm/gpgsm.c b/sm/gpgsm.c
index 3398d173f..72bceb433 100644
--- a/sm/gpgsm.c
+++ b/sm/gpgsm.c
@@ -862,6 +862,7 @@ parse_keyserver_line (char *line,
{
log_info (_("%s:%u: skipping this line\n"), filename, lineno);
keyserver_list_free (server);
+ server = NULL;
}
return server;