From 1fed92da2f5255cd8d07ccdf528c98eb0daa087c Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 30 Jul 2004 00:19:41 +0000 Subject: r1608: Fix from Nick THOMPSON to protect smbd against broken filesystems which return zero blocksize. Jeremy. (This used to be commit 23d157a0bea16366f0361ab68193b479ed844291) --- source3/lib/fsusage.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/source3/lib/fsusage.c b/source3/lib/fsusage.c index bb7cff0645..036f276319 100644 --- a/source3/lib/fsusage.c +++ b/source3/lib/fsusage.c @@ -26,12 +26,17 @@ */ static SMB_BIG_UINT adjust_blocks(SMB_BIG_UINT blocks, SMB_BIG_UINT fromsize, SMB_BIG_UINT tosize) { - if (fromsize == tosize) /* e.g., from 512 to 512 */ + if (fromsize == tosize) { /* e.g., from 512 to 512 */ return blocks; - else if (fromsize > tosize) /* e.g., from 2048 to 512 */ + } else if (fromsize > tosize) { /* e.g., from 2048 to 512 */ return blocks * (fromsize / tosize); - else /* e.g., from 256 to 512 */ + } else { /* e.g., from 256 to 512 */ + /* Protect against broken filesystems... */ + if (fromsize == 0) { + fromsize = tosize; + } return (blocks + 1) / (tosize / fromsize); + } } /* this does all of the system specific guff to get the free disk space. -- cgit