[SCM] Samba Shared Repository - branch master updated

Volker Lendecke vlendec at samba.org
Wed Sep 26 10:09:02 MDT 2012


The branch, master has been updated
       via  36ec313 s3: Slightly simplify open_file()
       via  be300b0 Coding: Add comment disproving control-flow changing macros
       via  1fa730d s3: Slightly simplify calculate_open_access_flags
       via  cc58a19 s3: Slightly simplify calculate_open_access_flags
      from  50d324b s3-smbd: Don't segfault if user specified ports out for range.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 36ec31336f4547b311148f27075cdb4fc8c37609
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Sep 4 10:36:47 2012 +0200

    s3: Slightly simplify open_file()
    
    The "else" is not necessary. In the if-branch we just returned.
    
    Autobuild-User(master): Volker Lendecke <vl at samba.org>
    Autobuild-Date(master): Wed Sep 26 18:08:03 CEST 2012 on sn-devel-104

commit be300b0588729c3c87f765e2737ebaccc0af02ff
Author: Volker Lendecke <vl at samba.org>
Date:   Wed May 30 10:14:51 2012 +0200

    Coding: Add comment disproving control-flow changing macros

commit 1fa730deba0f36947775fe490b9be98a92560b3f
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Sep 4 09:28:26 2012 +0200

    s3: Slightly simplify calculate_open_access_flags

commit cc58a19565870d62b3d3476b4b718fcd1ff94a46
Author: Volker Lendecke <vl at samba.org>
Date:   Tue Sep 4 09:26:28 2012 +0200

    s3: Slightly simplify calculate_open_access_flags

-----------------------------------------------------------------------

Summary of changes:
 README.Coding       |   10 ++++++++++
 source3/smbd/open.c |   40 +++++++++++++++++++++++-----------------
 2 files changed, 33 insertions(+), 17 deletions(-)


Changeset truncated at 500 lines:

diff --git a/README.Coding b/README.Coding
index 8416290..956a733 100644
--- a/README.Coding
+++ b/README.Coding
@@ -367,3 +367,13 @@ Bad Example:
 	ret = some_function_my_name(get_some_name());
 	...
 
+Control-Flow changing macros
+----------------------------
+
+Macros like NT_STATUS_NOT_OK_RETURN that change control flow
+(return/goto/etc) from within the macro are considered bad, because
+they look like function calls that never change control flow. Please
+do not use them in new code.
+
+The only exception is the test code that depends repeated use of calls
+like CHECK_STATUS, CHECK_VAL and others.
diff --git a/source3/smbd/open.c b/source3/smbd/open.c
index 2785d6f..10c855c 100644
--- a/source3/smbd/open.c
+++ b/source3/smbd/open.c
@@ -678,7 +678,8 @@ static NTSTATUS open_file(files_struct *fsp,
 			DEBUG(3,("Permission denied opening %s\n",
 				 smb_fname_str_dbg(smb_fname)));
 			return NT_STATUS_ACCESS_DENIED;
-		} else if(flags & O_CREAT) {
+		}
+		if (flags & O_CREAT) {
 			/* We don't want to write - but we must make sure that
 			   O_CREAT doesn't create the file if we have write
 			   access into the directory.
@@ -1873,29 +1874,34 @@ static int calculate_open_access_flags(uint32_t access_mask,
 				       int oplock_request,
 				       uint32_t private_flags)
 {
-	int flags;
+	bool need_write, need_read;
 
 	/*
 	 * Note that we ignore the append flag as append does not
 	 * mean the same thing under DOS and Unix.
 	 */
 
-	if ((access_mask & (FILE_WRITE_DATA | FILE_APPEND_DATA)) ||
-	    (oplock_request & FORCE_OPLOCK_BREAK_TO_NONE)) {
-		/* DENY_DOS opens are always underlying read-write on the
-		   file handle, no matter what the requested access mask
-		    says. */
-		if ((private_flags & NTCREATEX_OPTIONS_PRIVATE_DENY_DOS) ||
-		    access_mask & (FILE_READ_ATTRIBUTES|FILE_READ_DATA|
-				   FILE_READ_EA|FILE_EXECUTE)) {
-			flags = O_RDWR;
-		} else {
-			flags = O_WRONLY;
-		}
-	} else {
-		flags = O_RDONLY;
+	need_write =
+		((access_mask & (FILE_WRITE_DATA | FILE_APPEND_DATA)) ||
+		 (oplock_request & FORCE_OPLOCK_BREAK_TO_NONE));
+
+	if (!need_write) {
+		return O_RDONLY;
+	}
+
+	/* DENY_DOS opens are always underlying read-write on the
+	   file handle, no matter what the requested access mask
+	   says. */
+
+	need_read =
+		((private_flags & NTCREATEX_OPTIONS_PRIVATE_DENY_DOS) ||
+		 access_mask & (FILE_READ_ATTRIBUTES|FILE_READ_DATA|
+				FILE_READ_EA|FILE_EXECUTE));
+
+	if (!need_read) {
+		return O_WRONLY;
 	}
-	return flags;
+	return O_RDWR;
 }
 
 /****************************************************************************


-- 
Samba Shared Repository


More information about the samba-cvs mailing list