Invalidate the right stack[] member
authortb <tb@openbsd.org>
Mon, 17 Jun 2024 18:54:36 +0000 (18:54 +0000)
committertb <tb@openbsd.org>
Mon, 17 Jun 2024 18:54:36 +0000 (18:54 +0000)
There was a shift of the index in the for loop, and invalidating the wrong
member could result in a double free in auth_tree_free() on process exit.

ok claudio job

usr.sbin/rpki-client/filemode.c

index 70c6cf1..573063f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: filemode.c,v 1.46 2024/06/12 10:03:09 tb Exp $ */
+/*     $OpenBSD: filemode.c,v 1.47 2024/06/17 18:54:36 tb Exp $ */
 /*
  * Copyright (c) 2019 Claudio Jeker <claudio@openbsd.org>
  * Copyright (c) 2019 Kristaps Dzonsons <kristaps@bsd.lv>
@@ -227,7 +227,7 @@ parse_load_certchain(char *uri)
                cert->talid = a->cert->talid;
                a = auth_insert(uri, &auths, cert, a);
                uripath_add(uri, cert);
-               stack[i] = NULL;
+               stack[i - 1] = NULL;
        }
 
        return a;