svn commit: samba r5821 - in trunk/source/smbd: .

jra at samba.org jra at samba.org
Wed Mar 16 01:41:19 GMT 2005


Author: jra
Date: 2005-03-16 01:41:18 +0000 (Wed, 16 Mar 2005)
New Revision: 5821

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=5821

Log:
Actually return an error message if disk_free fails ! Pointed out by Ying Li <ying.li2 at hp.com>.
Jeremy.

Modified:
   trunk/source/smbd/dfree.c
   trunk/source/smbd/reply.c
   trunk/source/smbd/trans2.c


Changeset:
Modified: trunk/source/smbd/dfree.c
===================================================================
--- trunk/source/smbd/dfree.c	2005-03-16 00:40:28 UTC (rev 5820)
+++ trunk/source/smbd/dfree.c	2005-03-16 01:41:18 UTC (rev 5821)
@@ -115,10 +115,19 @@
 		} else {
 			DEBUG (0, ("disk_free: sys_popen() failed for command %s. Error was : %s\n",
 				syscmd, strerror(errno) ));
-			sys_fsusage(path, dfree, dsize);
+			if (sys_fsusage(path, dfree, dsize) != 0) {
+				DEBUG (0, ("disk_free: sys_fsusage() failed. Error was : %s\n",
+					strerror(errno) ));
+				return (SMB_BIG_UINT)-1;
+			}
 		}
-	} else
-		sys_fsusage(path, dfree, dsize);
+	} else {
+		if (sys_fsusage(path, dfree, dsize) != 0) {
+			DEBUG (0, ("disk_free: sys_fsusage() failed. Error was : %s\n",
+				strerror(errno) ));
+			return (SMB_BIG_UINT)-1;
+		}
+	}
 
 	if (disk_quotas(path, &bsize_q, &dfree_q, &dsize_q)) {
 		(*bsize) = bsize_q;

Modified: trunk/source/smbd/reply.c
===================================================================
--- trunk/source/smbd/reply.c	2005-03-16 00:40:28 UTC (rev 5820)
+++ trunk/source/smbd/reply.c	2005-03-16 01:41:18 UTC (rev 5821)
@@ -751,7 +751,10 @@
 	SMB_BIG_UINT dfree,dsize,bsize;
 	START_PROFILE(SMBdskattr);
 
-	SMB_VFS_DISK_FREE(conn,".",True,&bsize,&dfree,&dsize);
+	if (SMB_VFS_DISK_FREE(conn,".",True,&bsize,&dfree,&dsize) == (SMB_IG_UINT)-1) {
+		END_PROFILE(SMBdskattr);
+		return(UNIXERROR(ERRHRD,ERRgeneral));
+	}
   
 	outsize = set_message(outbuf,5,0,True);
 	

Modified: trunk/source/smbd/trans2.c
===================================================================
--- trunk/source/smbd/trans2.c	2005-03-16 00:40:28 UTC (rev 5820)
+++ trunk/source/smbd/trans2.c	2005-03-16 01:41:18 UTC (rev 5821)
@@ -1785,7 +1785,10 @@
 		{
 			SMB_BIG_UINT dfree,dsize,bsize,block_size,sectors_per_unit,bytes_per_sector;
 			data_len = 18;
-			SMB_VFS_DISK_FREE(conn,".",False,&bsize,&dfree,&dsize);	
+			if (SMB_VFS_DISK_FREE(conn,".",False,&bsize,&dfree,&dsize) == (SMB_BIG_UINT)-1) {
+				return(UNIXERROR(ERRHRD,ERRgeneral));
+			}
+
 			block_size = lp_block_size(snum);
 			if (bsize < block_size) {
 				SMB_BIG_UINT factor = block_size/bsize;
@@ -1877,7 +1880,9 @@
 		{
 			SMB_BIG_UINT dfree,dsize,bsize,block_size,sectors_per_unit,bytes_per_sector;
 			data_len = 24;
-			SMB_VFS_DISK_FREE(conn,".",False,&bsize,&dfree,&dsize);
+			if (SMB_VFS_DISK_FREE(conn,".",False,&bsize,&dfree,&dsize) == (SMB_BIG_UINT)-1) {
+				return(UNIXERROR(ERRHRD,ERRgeneral));
+			}
 			block_size = lp_block_size(snum);
 			if (bsize < block_size) {
 				SMB_BIG_UINT factor = block_size/bsize;
@@ -1907,7 +1912,9 @@
 		{
 			SMB_BIG_UINT dfree,dsize,bsize,block_size,sectors_per_unit,bytes_per_sector;
 			data_len = 32;
-			SMB_VFS_DISK_FREE(conn,".",False,&bsize,&dfree,&dsize);
+			if (SMB_VFS_DISK_FREE(conn,".",False,&bsize,&dfree,&dsize) == (SMB_BIG_UINT)-1) {
+				return(UNIXERROR(ERRHRD,ERRgeneral));
+			}
 			block_size = lp_block_size(snum);
 			if (bsize < block_size) {
 				SMB_BIG_UINT factor = block_size/bsize;



More information about the samba-cvs mailing list