aboutsummaryrefslogtreecommitdiffstats
path: root/ftp.c
diff options
context:
space:
mode:
authorDavid Crosby <dave@dafyddcrosby.com>2015-07-22 04:49:33 +0000
committerTatsuya Kinoshita <tats@debian.org>2015-08-11 12:59:27 +0000
commit73550486ffc0d7bae2b62ac49c879354aa977eff (patch)
tree704fa628e7f8f6bd3e6d523104219c75a8f0d1fe /ftp.c
parentuse int for c (diff)
downloadw3m-73550486ffc0d7bae2b62ac49c879354aa977eff.tar.gz
w3m-73550486ffc0d7bae2b62ac49c879354aa977eff.zip
dup can give a negative value
Diffstat (limited to 'ftp.c')
-rw-r--r--ftp.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/ftp.c b/ftp.c
index 0002abd..2ad829c 100644
--- a/ftp.c
+++ b/ftp.c
@@ -123,6 +123,7 @@ static int
ftp_login(FTP ftp)
{
int sock, status;
+ int sock_wf;
sock = openSocket(ftp->host, "ftp", 21);
if (sock < 0)
@@ -169,7 +170,10 @@ ftp_login(FTP ftp)
}
}
ftp->rf = newInputStream(sock);
- ftp->wf = fdopen(dup(sock), "wb");
+ if ((sock_wf = dup(sock)) >= 0 )
+ ftp->wf = fdopen(sock_wf, "wb");
+ else
+ goto open_err;
if (!ftp->rf || !ftp->wf)
goto open_err;
IStype(ftp->rf) |= IST_UNCLOSE;