diff options
author | Damien Miller <djm@mindrot.org> | 2002-06-26 23:51:06 +1000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2002-06-26 23:51:06 +1000 |
commit | 990070a8c5dead1fcfc270ec797af1f05dba058a (patch) | |
tree | 89ebdb79b0382ece76e6e6fac0fea4926ec15dfc /session.c | |
parent | 530a754d389723a5617dc5ce103a9057e6293708 (diff) |
- deraadt@cvs.openbsd.org 2002/06/26 13:49:26
[session.c]
disclose less information from environment files; based on input
from djm, and dschultz@uclink.Berkeley.EDU
Diffstat (limited to 'session.c')
-rw-r--r-- | session.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -33,7 +33,7 @@ | |||
33 | */ | 33 | */ |
34 | 34 | ||
35 | #include "includes.h" | 35 | #include "includes.h" |
36 | RCSID("$OpenBSD: session.c,v 1.141 2002/06/26 08:58:26 markus Exp $"); | 36 | RCSID("$OpenBSD: session.c,v 1.142 2002/06/26 13:49:26 deraadt Exp $"); |
37 | 37 | ||
38 | #include "ssh.h" | 38 | #include "ssh.h" |
39 | #include "ssh1.h" | 39 | #include "ssh1.h" |
@@ -877,12 +877,15 @@ read_environment_file(char ***env, u_int *envsize, | |||
877 | FILE *f; | 877 | FILE *f; |
878 | char buf[4096]; | 878 | char buf[4096]; |
879 | char *cp, *value; | 879 | char *cp, *value; |
880 | u_int lineno = 0; | ||
880 | 881 | ||
881 | f = fopen(filename, "r"); | 882 | f = fopen(filename, "r"); |
882 | if (!f) | 883 | if (!f) |
883 | return; | 884 | return; |
884 | 885 | ||
885 | while (fgets(buf, sizeof(buf), f)) { | 886 | while (fgets(buf, sizeof(buf), f)) { |
887 | if (++lineno > 1000) | ||
888 | fatal("Too many lines in environment file %s", filename); | ||
886 | for (cp = buf; *cp == ' ' || *cp == '\t'; cp++) | 889 | for (cp = buf; *cp == ' ' || *cp == '\t'; cp++) |
887 | ; | 890 | ; |
888 | if (!*cp || *cp == '#' || *cp == '\n') | 891 | if (!*cp || *cp == '#' || *cp == '\n') |
@@ -891,7 +894,8 @@ read_environment_file(char ***env, u_int *envsize, | |||
891 | *strchr(cp, '\n') = '\0'; | 894 | *strchr(cp, '\n') = '\0'; |
892 | value = strchr(cp, '='); | 895 | value = strchr(cp, '='); |
893 | if (value == NULL) { | 896 | if (value == NULL) { |
894 | fprintf(stderr, "Bad line in %.100s: %.200s\n", filename, buf); | 897 | fprintf(stderr, "Bad line %u in %.100s\n", lineno, |
898 | filename); | ||
895 | continue; | 899 | continue; |
896 | } | 900 | } |
897 | /* | 901 | /* |