]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: fix leaks of config objects in
authordjm@openbsd.org <djm@openbsd.org>
Thu, 25 Sep 2025 06:31:42 +0000 (06:31 +0000)
committerDamien Miller <djm@mindrot.org>
Thu, 25 Sep 2025 07:01:42 +0000 (17:01 +1000)
mm_decode_activate_server_options ok dtucker@ tb@

OpenBSD-Commit-ID: 211f4d7d02e847bd1bcb460f6beb11658809a742

monitor_wrap.c
servconf.c

index 7a5ac6a9d1643a7dddda0f5698b5c32ac1bc75a2..33494b73fa9487a2979abd4ce74fac80c01c0077 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: monitor_wrap.c,v 1.141 2025/09/05 10:17:21 dtucker Exp $ */
+/* $OpenBSD: monitor_wrap.c,v 1.142 2025/09/25 06:31:42 djm Exp $ */
 /*
  * Copyright 2002 Niels Provos <provos@citi.umich.edu>
  * Copyright 2002 Markus Friedl <markus@openbsd.org>
@@ -319,6 +319,17 @@ mm_decode_activate_server_options(struct ssh *ssh, struct sshbuf *m)
        log_verbose_reset();
        for (i = 0; i < options.num_log_verbose; i++)
                log_verbose_add(options.log_verbose[i]);
+
+       /* use the macro hell to clean up too */
+#define M_CP_STROPT(x) free(newopts->x)
+#define M_CP_STRARRAYOPT(x, nx) do { \
+               for (i = 0; i < newopts->nx; i++) \
+                       free(newopts->x[i]); \
+               free(newopts->x); \
+       } while (0)
+       COPY_MATCH_STRING_OPTS();
+#undef M_CP_STROPT
+#undef M_CP_STRARRAYOPT
        free(newopts);
 }
 
index 532c095536b5275ff7099b8ff3e3f5788148d1e3..48ec8c4ecd43ec3c757f10adb715c4250f16bf45 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: servconf.c,v 1.434 2025/09/02 09:40:19 djm Exp $ */
+/* $OpenBSD: servconf.c,v 1.435 2025/09/25 06:31:42 djm Exp $ */
 /*
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
@@ -2966,7 +2966,7 @@ copy_set_server_options(ServerOptions *dst, ServerOptions *src, int preauth)
 #define M_CP_STROPT(n) do {\
        if (src->n != NULL && dst->n != src->n) { \
                free(dst->n); \
-               dst->n = src->n; \
+               dst->n = xstrdup(src->n); \
        } \
 } while(0)
 #define M_CP_STRARRAYOPT(s, num_s) do {\