=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/session.c,v retrieving revision 1.297 retrieving revision 1.298 diff -u -r1.297 -r1.298 --- src/usr.bin/ssh/session.c 2018/06/06 18:23:32 1.297 +++ src/usr.bin/ssh/session.c 2018/06/06 18:29:18 1.298 @@ -1,4 +1,4 @@ -/* $OpenBSD: session.c,v 1.297 2018/06/06 18:23:32 djm Exp $ */ +/* $OpenBSD: session.c,v 1.298 2018/06/06 18:29:18 markus Exp $ */ /* * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland * All rights reserved @@ -784,18 +784,18 @@ const char *filename) { FILE *f; - char buf[4096]; - char *cp, *value; + char *line = NULL, *cp, *value; + size_t linesize = 0; u_int lineno = 0; f = fopen(filename, "r"); if (!f) return; - while (fgets(buf, sizeof(buf), f)) { + while (getline(&line, &linesize, f) != -1) { if (++lineno > 1000) fatal("Too many lines in environment file %s", filename); - for (cp = buf; *cp == ' ' || *cp == '\t'; cp++) + for (cp = line; *cp == ' ' || *cp == '\t'; cp++) ; if (!*cp || *cp == '#' || *cp == '\n') continue; @@ -816,6 +816,7 @@ value++; child_set_env(env, envsize, cp, value); } + free(line); fclose(f); }