svn commit: samba r10023 - in branches/tmp/vl-cluster/source: locking smbd

vlendec at samba.org vlendec at samba.org
Sun Sep 4 09:00:48 GMT 2005


Author: vlendec
Date: 2005-09-04 09:00:47 +0000 (Sun, 04 Sep 2005)
New Revision: 10023

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

Log:
Fix some uninitialized variables, and in validate_my_share_entries the check
for deferred opens is different.

Volker

Modified:
   branches/tmp/vl-cluster/source/locking/locking.c
   branches/tmp/vl-cluster/source/smbd/open.c


Changeset:
Modified: branches/tmp/vl-cluster/source/locking/locking.c
===================================================================
--- branches/tmp/vl-cluster/source/locking/locking.c	2005-09-04 08:17:24 UTC (rev 10022)
+++ branches/tmp/vl-cluster/source/locking/locking.c	2005-09-04 09:00:47 UTC (rev 10023)
@@ -495,6 +495,7 @@
 	}
 
 	data = (struct locking_data *)result.dptr;
+	ZERO_STRUCTP(data);
 	data->u.s.num_share_mode_entries = lck->num_share_modes;
 	data->u.s.delete_on_close = lck->delete_on_close;
 	memcpy(result.dptr + sizeof(*data), lck->share_modes,
@@ -560,7 +561,9 @@
 		return NULL;
 	}
 
+	lck->delete_on_close = False;
 	lck->num_share_modes = 0;
+	lck->share_modes = NULL;
 	lck->modified = False;
 
 	data = tdb_fetch(tdb, key);

Modified: branches/tmp/vl-cluster/source/smbd/open.c
===================================================================
--- branches/tmp/vl-cluster/source/smbd/open.c	2005-09-04 08:17:24 UTC (rev 10022)
+++ branches/tmp/vl-cluster/source/smbd/open.c	2005-09-04 09:00:47 UTC (rev 10023)
@@ -478,12 +478,23 @@
 				      struct share_mode_entry *share_entry)
 {
 	files_struct *fsp;
-	int num_props = 0;
 
 	if (!procid_is_me(&share_entry->pid)) {
 		return;
 	}
 
+	if (is_deferred_open_entry(share_entry) &&
+	    !open_was_deferred(share_entry->op_mid)) {
+		pstring str;
+		DEBUG(0, ("Got a deferred entry without a request: "
+			  "PANIC: %s\n", share_mode_str(num, share_entry)));
+		smb_panic(str);
+	}
+
+	if (!is_valid_share_mode_entry(share_entry)) {
+		return;
+	}
+
 	fsp = file_find_dif(share_entry->dev, share_entry->inode,
 			    share_entry->share_file_id);
 	if (!fsp) {
@@ -493,11 +504,8 @@
 			  "share entry with an open file\n");
 	}
 
-	num_props += is_valid_share_mode_entry(share_entry) ? 1 : 0;
-	num_props += is_deferred_open_entry(share_entry) ? 1 : 0;
-	num_props += is_unused_share_mode_entry(share_entry) ? 1 : 0;
-
-	if (num_props != 1) {
+	if (is_deferred_open_entry(share_entry) ||
+	    is_unused_share_mode_entry(share_entry)) {
 		goto panic;
 	}
 



More information about the samba-cvs mailing list