- dtucker@cvs.openbsd.org 2009/12/06 23:53:54
[sftp.c] fix potential divide-by-zero in sftp's "df" output when talking to a server that reports zero files on the filesystem (Unix filesystems always have at least the root inode). From Steve McClellan at radisys, ok djm@
This commit is contained in:
parent
75694dbe77
commit
b5082e90a1
|
@ -99,6 +99,11 @@
|
||||||
[roaming_common.c]
|
[roaming_common.c]
|
||||||
use socklen_t for getsockopt optlen parameter; reported by
|
use socklen_t for getsockopt optlen parameter; reported by
|
||||||
Steve.McClellan AT radisys.com, ok dtucker@
|
Steve.McClellan AT radisys.com, ok dtucker@
|
||||||
|
- dtucker@cvs.openbsd.org 2009/12/06 23:53:54
|
||||||
|
[sftp.c]
|
||||||
|
fix potential divide-by-zero in sftp's "df" output when talking to a server
|
||||||
|
that reports zero files on the filesystem (Unix filesystems always have at
|
||||||
|
least the root inode). From Steve McClellan at radisys, ok djm@
|
||||||
|
|
||||||
20091226
|
20091226
|
||||||
- (tim) [contrib/cygwin/Makefile] Install ssh-copy-id and ssh-copy-id.1
|
- (tim) [contrib/cygwin/Makefile] Install ssh-copy-id and ssh-copy-id.1
|
||||||
|
|
8
sftp.c
8
sftp.c
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: sftp.c,v 1.113 2009/11/22 13:18:00 halex Exp $ */
|
/* $OpenBSD: sftp.c,v 1.114 2009/12/06 23:53:54 dtucker Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
|
* Copyright (c) 2001-2004 Damien Miller <djm@openbsd.org>
|
||||||
*
|
*
|
||||||
|
@ -846,19 +846,19 @@ do_df(struct sftp_conn *conn, char *path, int hflag, int iflag)
|
||||||
char s_avail[FMT_SCALED_STRSIZE];
|
char s_avail[FMT_SCALED_STRSIZE];
|
||||||
char s_root[FMT_SCALED_STRSIZE];
|
char s_root[FMT_SCALED_STRSIZE];
|
||||||
char s_total[FMT_SCALED_STRSIZE];
|
char s_total[FMT_SCALED_STRSIZE];
|
||||||
|
unsigned long long ffree;
|
||||||
|
|
||||||
if (do_statvfs(conn, path, &st, 1) == -1)
|
if (do_statvfs(conn, path, &st, 1) == -1)
|
||||||
return -1;
|
return -1;
|
||||||
if (iflag) {
|
if (iflag) {
|
||||||
|
ffree = st.f_files ? (100 * (st.f_files - st.f_ffree) / st.f_files) : 0;
|
||||||
printf(" Inodes Used Avail "
|
printf(" Inodes Used Avail "
|
||||||
"(root) %%Capacity\n");
|
"(root) %%Capacity\n");
|
||||||
printf("%11llu %11llu %11llu %11llu %3llu%%\n",
|
printf("%11llu %11llu %11llu %11llu %3llu%%\n",
|
||||||
(unsigned long long)st.f_files,
|
(unsigned long long)st.f_files,
|
||||||
(unsigned long long)(st.f_files - st.f_ffree),
|
(unsigned long long)(st.f_files - st.f_ffree),
|
||||||
(unsigned long long)st.f_favail,
|
(unsigned long long)st.f_favail,
|
||||||
(unsigned long long)st.f_ffree,
|
(unsigned long long)st.f_ffree, ffree);
|
||||||
(unsigned long long)(100 * (st.f_files - st.f_ffree) /
|
|
||||||
st.f_files));
|
|
||||||
} else if (hflag) {
|
} else if (hflag) {
|
||||||
strlcpy(s_used, "error", sizeof(s_used));
|
strlcpy(s_used, "error", sizeof(s_used));
|
||||||
strlcpy(s_avail, "error", sizeof(s_avail));
|
strlcpy(s_avail, "error", sizeof(s_avail));
|
||||||
|
|
Loading…
Reference in New Issue