dirmngr,gpgsm: Return NULL on fail
authorWerner Koch <wk@gnupg.org>
Mon, 22 Dec 2014 11:16:46 +0000 (12:16 +0100)
committerWerner Koch <wk@gnupg.org>
Mon, 22 Dec 2014 11:39:14 +0000 (12:39 +0100)
* dirmngr/ldapserver.c (ldapserver_parse_one): Set SERVER to NULL.
* sm/gpgsm.c (parse_keyserver_line): Ditto.
--

Reported-by: Joshua Rogers <git@internot.info>
  "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 <wk@gnupg.org>
dirmngr/ldapserver.c
sm/gpgsm.c

index 20a574c..5808c5b 100644 (file)
@@ -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;
index 3398d17..72bceb4 100644 (file)
@@ -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;