summaryrefslogtreecommitdiffstats
path: root/contrib/telnet
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2014-03-02 03:34:06 +0000
committermarcel <marcel@FreeBSD.org>2014-03-02 03:34:06 +0000
commita6ba47be888a1125fb42b8aea1e01ac1ff85fd83 (patch)
treec3dff67fbe49d7fdb28c14105d5a247ef851fb0b /contrib/telnet
parentdc2809ceff07db5510254b09a7155d4f29822a2c (diff)
downloadFreeBSD-src-a6ba47be888a1125fb42b8aea1e01ac1ff85fd83.zip
FreeBSD-src-a6ba47be888a1125fb42b8aea1e01ac1ff85fd83.tar.gz
Improve upon previous commit:
1. Check return of mmap(2) (*) 2. Avoid FD leak when fstat fails. 3. Fix style(9). (*) Pointed out by jmg@
Diffstat (limited to 'contrib/telnet')
-rw-r--r--contrib/telnet/telnetd/telnetd.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/contrib/telnet/telnetd/telnetd.c b/contrib/telnet/telnetd/telnetd.c
index 454a377..2d31903 100644
--- a/contrib/telnet/telnetd/telnetd.c
+++ b/contrib/telnet/telnetd/telnetd.c
@@ -926,14 +926,15 @@ telnet(int f, int p, char *host)
if (hostinfo && *IM)
putf(IM, ptyibuf2);
if (IF && if_fd != -1) {
- if(fstat (if_fd, &statbuf)!=-1) {
- if (statbuf.st_size > 0) {
- if_buf = (char *) mmap (0, statbuf.st_size, PROT_READ, 0, if_fd, 0);
- putf(if_buf, ptyibuf2);
- munmap (if_buf, statbuf.st_size);
+ if (fstat(if_fd, &statbuf) != -1 && statbuf.st_size > 0) {
+ if_buf = (char *) mmap (0, statbuf.st_size,
+ PROT_READ, 0, if_fd, 0);
+ if (if_buf != MAP_FAILED) {
+ putf(if_buf, ptyibuf2);
+ munmap(if_buf, statbuf.st_size);
+ }
}
close (if_fd);
- }
}
if (pcc)
OpenPOWER on IntegriCloud