[openssh-commits] [openssh] 06/15: upstream: support loading big sshd_config files w/o realloc; ok
git+noreply at mindrot.org
git+noreply at mindrot.org
Fri Jun 26 15:26:09 AEST 2020
This is an automated email from the git hooks/post-receive script.
djm pushed a commit to branch master
in repository openssh.
commit 250246fef22b87a54a63211c60a2def9be431fbd
Author: markus at openbsd.org <markus at openbsd.org>
Date: Wed Jun 24 15:09:53 2020 +0000
upstream: support loading big sshd_config files w/o realloc; ok
djm
OpenBSD-Commit-ID: ba9238e810074ac907f0cf8cee1737ac04983171
---
servconf.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/servconf.c b/servconf.c
index bd8df7fc..22cb9583 100644
--- a/servconf.c
+++ b/servconf.c
@@ -1,5 +1,5 @@
-/* $OpenBSD: servconf.c,v 1.365 2020/05/27 22:37:53 djm Exp $ */
+/* $OpenBSD: servconf.c,v 1.366 2020/06/24 15:09:53 markus Exp $ */
/*
* Copyright (c) 1995 Tatu Ylonen <ylo at cs.hut.fi>, Espoo, Finland
* All rights reserved
@@ -15,6 +15,7 @@
#include <sys/types.h>
#include <sys/socket.h>
+#include <sys/stat.h>
#ifdef __OpenBSD__
#include <sys/sysctl.h>
#endif
@@ -2395,6 +2396,7 @@ process_server_config_line(ServerOptions *options, char *line,
void
load_server_config(const char *filename, struct sshbuf *conf)
{
+ struct stat st;
char *line = NULL, *cp;
size_t linesize = 0;
FILE *f;
@@ -2406,6 +2408,10 @@ load_server_config(const char *filename, struct sshbuf *conf)
exit(1);
}
sshbuf_reset(conf);
+ /* grow buffer, so realloc is avoided for large config files */
+ if (fstat(fileno(f), &st) == 0 && st.st_size > 0 &&
+ (r = sshbuf_allocate(conf, st.st_size)) != 0)
+ fatal("%s: allocate failed: %s", __func__, ssh_err(r));
while (getline(&line, &linesize, f) != -1) {
lineno++;
/*
--
To stop receiving notification emails like this one, please contact
djm at mindrot.org.
More information about the openssh-commits
mailing list