[SCM] Samba Shared Repository - branch v4-2-stable updated

Karolin Seeger kseeger at samba.org
Wed Oct 15 01:55:29 MDT 2014


The branch, v4-2-stable has been updated
       via  e05a432 VERSION: Set version to 4.2.0rc2...
       via  8309ab7 WHATSNEW: Add release notes for Samba 4.2.0rc2.
       via  9164e5f build: do not install texpect binary anymore.
       via  2cd5450 libcli/smb: fix smb2cli_validate_negotiate_info with min=PROTOCOL_NT1 max=PROTOCOL_SMB2_02
       via  066fb45 [PATCH] WHATSNEW: Added information about the VFS WORM module that is
       via  4cc2dda WHATSNEW: Fix typo.
       via  721033d WHATSNEW: Fix typos.
       via  63017ac [PATCH] WHATSNEW: Add more features for Samba 4.2
       via  25d26f4 WHATSNEW: Add samba-regedit.
       via  3430afa idmap_rfc2307: Fix a crash after connection problem to DC
       via  02e1c6b SO_PROTOCOL is platform-dependent
       via  13c7b80 regedit: remove an old comment
       via  a38ad98 regedit: print error msg if opening registry fails
       via  96a5321 regedit: handle pgup/pgdn/home/end keys on lists
       via  0b70ddd regedit: handle del and backspace in hexeditor
       via  fb01459 regedit: grow hexedit buffer as the user types
       via  0f548f9 regedit: add a button to resize hexedit buffer
       via  6c736e2 regedit: add a number input box
       via  cf71665 regedit: don't expand single line text field buffer with cursor movement
       via  7720184 regedit: handle DEL key in text fields
       via  27e99f6 regedit: adjust some variable names to make them more distinct
       via  d9b67e6 regedit: find previous items
       via  05be096 regedit: search values and repeat search from cursor positions
       via  45afe22 regedit: flesh out search dialog and simplify search opts
       via  60b6297 regedit: don't use subwindows in hexedit
       via  afafda2 regedit: use pad as a canvas for dialogs
       via  77d9d4c regedit: clear value list after creating new key
       via  00ff031 regedit: use the right function to reopen a hive
       via  a226a52 regedit: move cursor to edited value in list and report edit errors
       via  47caf0b regedit: Introduce a new API to build the dialogs.
       via  ceafd11 regedit: improvements for hexedit
       via  7e11ecb regedit: add padding to fit REG_MULTI_SZ to the text field
       via  bff6822 regedit: simplify cleanup after loading children
       via  1fb0690 regedit: add a panic handler to restore terminal
       via  5e3df48 regedit: make all hives descend from a root node
       via  8bc4a73 regedit: add a refresh command to clear cache and reload current path
       via  ee89de1 regedit: reopen key after editing or removing values
       via  894f516 regedit: reopen parent keys when adding or removing subkeys
       via  6d61540 regedit: set cursor after creating a new key
       via  36cd9af regedit: set cursor to the parent node when ascending
       via  92d302f regedit: don't fail loading keys if just a few are unavailable
       via  d4c1b36 regedit: include error description in popups
       via  544c4ec regedit: notify user if there's a failure loading subkeys
       via  4867e76 regedit: handle awkward window sizes better
       via  2b74ee0 regedit: use talloc typesafety features
       via  fe5b9cd regedit: restore list cursor when window is resized
       via  db7aef6 regedit: make value list display data in multiple columns
       via  1ca1c74 regedit: add multicolumn list widget
       via  ca81665 regedit: add search feature.
       via  f5ac8ec regedit: add a color scheme for path and context help sections
       via  1ab3b87 regedit: sort keys
       via  196055d regedit: free value list subwindow
       via  93aa394 regedit: add borders around key and value lists, and change headings
       via  bb1b0ab regedit: add padding for key labels when there's not a prefix.
       via  c7802fc regedit: add white on blue color scheme
       via  0288af3 regedit: silence some warnings
       via  c7ebcd6 s3: smb2cli: query info return length check was reversed.
       via  ce0c5f6 registry: Don't leave dangling transactions
       via  ff9dd62 WHATSNEW: Fix typo.
       via  137c096 VERSION: Re-enable git snapshots.
      from  3011777 VERSION: Bump version up to 4.2.0rc1...

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-2-stable


- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 VERSION                             |    2 +-
 WHATSNEW.txt                        |  123 ++-
 lib/socket_wrapper/socket_wrapper.c |    3 +
 lib/texpect/wscript                 |    6 +-
 libcli/smb/smb2cli_query_info.c     |    2 +-
 libcli/smb/smbXcli_base.c           |    6 +-
 source3/registry/reg_api.c          |    2 +-
 source3/utils/regedit.c             |  483 +++++--
 source3/utils/regedit.h             |   18 +-
 source3/utils/regedit_dialog.c      | 2738 ++++++++++++++++++++++++-----------
 source3/utils/regedit_dialog.h      |  204 +++-
 source3/utils/regedit_hexedit.c     |  243 +++-
 source3/utils/regedit_hexedit.h     |   38 +-
 source3/utils/regedit_list.c        |  591 ++++++++
 source3/utils/regedit_list.h        |   82 ++
 source3/utils/regedit_samba3.c      |    4 +-
 source3/utils/regedit_treeview.c    |  552 ++++++--
 source3/utils/regedit_treeview.h    |   29 +-
 source3/utils/regedit_valuelist.c   |  401 ++++--
 source3/utils/regedit_valuelist.h   |   35 +-
 source3/winbindd/idmap_rfc2307.c    |    1 +
 source3/wscript_build               |    2 +-
 22 files changed, 4258 insertions(+), 1307 deletions(-)
 create mode 100644 source3/utils/regedit_list.c
 create mode 100644 source3/utils/regedit_list.h


Changeset truncated at 500 lines:

diff --git a/VERSION b/VERSION
index 5a5e8b8..3d28354 100644
--- a/VERSION
+++ b/VERSION
@@ -87,7 +87,7 @@ SAMBA_VERSION_PRE_RELEASE=
 # e.g. SAMBA_VERSION_RC_RELEASE=1                      #
 #  ->  "3.0.0rc1"                                      #
 ########################################################
-SAMBA_VERSION_RC_RELEASE=1
+SAMBA_VERSION_RC_RELEASE=2
 
 ########################################################
 # To mark SVN snapshots this should be set to 'yes'    #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 78fc777..47f3697 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,7 +1,7 @@
 Release Announcements
 =====================
 
-This is the first release candidate of Samba 4.2.  This is *not*
+This is the second release candidate of Samba 4.2.  This is *not*
 intended for production environments and is designed for testing
 purposes only.  Please report any defects via the Samba bug reporting
 system at https://bugzilla.samba.org/.
@@ -44,6 +44,10 @@ to (other) domain controllers was rewritten in order to maintain
 global state in a netlogon_creds_cli.tdb. This is the proper fix
 for a large number of bugs:
 
+
+
+o   Volker Lendecke <vl at samba.org>
+    * BUG 10860: registry: Don't leave dangling transactions.
   https://bugzilla.samba.org/show_bug.cgi?id=6563
   https://bugzilla.samba.org/show_bug.cgi?id=7944
   https://bugzilla.samba.org/show_bug.cgi?id=7945
@@ -93,7 +97,7 @@ is no need to start the winbindd binary manually.
 Winbind now requires secured connections
 ========================================
 
-To improve protection against rouge domain controllers we now require
+To improve protection against rogue domain controllers we now require
 that when we connect to an AD DC in our forest, that the connection be
 signed using SMB Signing.  Set 'client signing = off' in the smb.conf
 to disable.
@@ -170,6 +174,88 @@ use the following steps:
   $ make
   # make install
 
+Samba Registry Editor
+=====================
+
+The utitlity to browse the samba registry has been overhauled by our Google
+Summer of Code student Chris Davis. Now samba-regedit has a
+Midnight-Commander-like theme and UI experience. You can browse keys and edit
+the diffent value types. For a data value type a hexeditor has been
+implemented.
+
+Bad Password Lockout in the AD DC
+=================================
+
+Samba's AD DC now implements bad password lockout (on a per-DC basis).
+
+That is, incorrect password attempts are tracked, and accounts locked
+out if too many bad passwords are submitted.  There is also a grace
+period of 60 minutes on the previous password when used for NTLM
+authentication (matching Windows 2003 SP1: https://support2.microsoft.com/kb/906305).
+
+The relevant settings can be seen using 'samba-tool domain
+passwordsettings show' (the new settings being highlighted):
+
+Password informations for domain 'DC=samba,DC=example,DC=com'
+
+Password complexity: on
+Store plaintext passwords: off
+Password history length: 24
+Minimum password length: 7
+Minimum password age (days): 1
+Maximum password age (days): 42
+* Account lockout duration (mins): 30     *
+* Account lockout threshold (attempts): 0 *
+* Reset account lockout after (mins): 30  *
+
+These values can be set using 'samba-tool domain passwordsettings set'.
+
+Correct defaults in the smb.conf manpages
+=========================================
+
+The default values for smb.conf parameters are now correctly specified
+in the smb.conf manpage, even when they refer to build-time specified
+paths.  Provided Samba is built on a system with the right tools
+(xsltproc in particular) required to generate our man pages, then
+these will be built with the exact same embedded paths as used by the
+configuration parser at runtime.  Additionally, the default values
+read from the smb.conf manpage are checked by our test suite to match
+the values seen in testparm and used by the running binaries.
+
+Consistent behaviour between samba-tool testparm and testparm
+=============================================================
+
+With the exception of the registry backend, which remains only
+available in the file server, the behaviour of the smb.conf parser and
+the tools 'samba-tool testparm' and 'testparm' is now consistent,
+particularly with regard to default values.  Except with regard to
+registry shares, it is no longer needed to use one tool on the AD
+DC, and another on the file server.
+
+VFS WORM module
+===============
+
+A VFS module for basic WORM (Write once read many) support has been
+added. It allows an additional layer on top of a Samba share, that provides
+a basic set of WORM functionality on the client side, to control the
+writeability of files and folders.
+
+As the module is simply an additional layer, share access and permissions
+work like expected - only WORM functionality is added on top. Removing the
+module from the share configuration, removes this layer again. The
+filesystem ACLs are not affected in any way from the module and treated
+as usual.
+
+The module does not provide complete WORM functions, like some archiving
+products do! It is not audit-proof, because the WORM function is only
+available on the client side, when accessing a share through SMB! If
+the same folder is shared by other services like NFS, the access only
+depents on the underlaying filesystem ACLs. Equally if you access the
+content directly on the server.
+
+For additional information, see
+https://wiki.samba.org/index.php/VFS/vfs_worm
+
 
 ######################################################################
 Changes
@@ -191,8 +277,37 @@ smb.conf changes
    smb2 max trans                       Changed default 8388608
    winbind expand groups                Changed default 0
 
-KNOWN ISSUES
-============
+
+CHANGES SINCE 4.2.0rc1
+======================
+
+o   Jeremy Allison <jra at samba.org>
+    * BUG 10848: s3: smb2cli: query info return length check was reversed.
+
+
+o   Björn Baumbach <bb at sernet.de>
+    * BUG 10862: build: Do not install 'texpect' binary anymore.
+
+
+o   Chris Davis <cd.rattan at gmail.com>
+    * BUG 10859: Improve samba-regedit.
+
+
+o   Jakub Hrozek <jakub.hrozek at gmail.com>
+    * BUG 10861: Fix build of socket_wrapper on systems without SO_PROTOCOL.
+
+
+o   Volker Lendecke <vl at samba.org>
+    * BUG 10860: registry: Don't leave dangling transactions.
+
+
+o   Stefan Metzmacher <metze at samba.org>
+    * BUG 10866: libcli/smb: Fix smb2cli_validate_negotiate_info with
+      min=PROTOCOL_NT1 max=PROTOCOL_SMB2_02.
+
+
+o   Christof Schmitt <cs at samba.org>
+    * BUG 10837: idmap_rfc2307: Fix a crash after connection problem to DC.
 
 
 #######################################
diff --git a/lib/socket_wrapper/socket_wrapper.c b/lib/socket_wrapper/socket_wrapper.c
index afd9343..67303eb 100644
--- a/lib/socket_wrapper/socket_wrapper.c
+++ b/lib/socket_wrapper/socket_wrapper.c
@@ -3169,6 +3169,8 @@ static int swrap_getsockopt(int s, int level, int optname,
 			*(int *)optval = si->family;
 			return 0;
 #endif /* SO_DOMAIN */
+
+#ifdef SO_PROTOCOL
 		case SO_PROTOCOL:
 			if (optval == NULL || optlen == NULL ||
 			    *optlen < (socklen_t)sizeof(int)) {
@@ -3179,6 +3181,7 @@ static int swrap_getsockopt(int s, int level, int optname,
 			*optlen = sizeof(int);
 			*(int *)optval = si->protocol;
 			return 0;
+#endif /* SO_PROTOCOL */
 		case SO_TYPE:
 			if (optval == NULL || optlen == NULL ||
 			    *optlen < (socklen_t)sizeof(int)) {
diff --git a/lib/texpect/wscript b/lib/texpect/wscript
index 51602f1..4163ca1 100644
--- a/lib/texpect/wscript
+++ b/lib/texpect/wscript
@@ -1,9 +1,7 @@
 #!/usr/bin/env python
 
 def configure(conf):
-	conf.CHECK_FUNCS_IN('openpty', 'util', checklibc=True, headers='pty.h util.h libutil.h')
+    conf.CHECK_FUNCS_IN('openpty', 'util', checklibc=True, headers='pty.h util.h libutil.h')
 
 def build(bld):
-	bld.SAMBA_BINARY('texpect',
-                         'texpect.c',
-                          deps='popt util')
+    bld.SAMBA_BINARY('texpect', 'texpect.c', deps='popt util', install=False)
diff --git a/libcli/smb/smb2cli_query_info.c b/libcli/smb/smb2cli_query_info.c
index 454f25a..a24844b 100644
--- a/libcli/smb/smb2cli_query_info.c
+++ b/libcli/smb/smb2cli_query_info.c
@@ -154,7 +154,7 @@ static void smb2cli_query_info_done(struct tevent_req *subreq)
 			return;
 		}
 
-		if (output_buffer_length < dyn_len) {
+		if (output_buffer_length > dyn_len) {
 			tevent_req_nterror(
 				req, NT_STATUS_INVALID_NETWORK_RESPONSE);
 			return;
diff --git a/libcli/smb/smbXcli_base.c b/libcli/smb/smbXcli_base.c
index ac81f7a..8a8bbd0 100644
--- a/libcli/smb/smbXcli_base.c
+++ b/libcli/smb/smbXcli_base.c
@@ -4649,7 +4649,11 @@ struct tevent_req *smb2cli_validate_negotiate_info_send(TALLOC_CTX *mem_ctx,
 	} else {
 		memset(buf+4, 0, 16);	/* ClientGuid */
 	}
-	SCVAL(buf, 20, conn->smb2.client.security_mode);
+	if (state->conn->min_protocol >= PROTOCOL_SMB2_02) {
+		SCVAL(buf, 20, conn->smb2.client.security_mode);
+	} else {
+		SCVAL(buf, 20, 0);
+	}
 	SCVAL(buf, 21, 0); /* reserved */
 
 	for (i=0; i < ARRAY_SIZE(smb2cli_prots); i++) {
diff --git a/source3/registry/reg_api.c b/source3/registry/reg_api.c
index 47a717b..d1c70ec 100644
--- a/source3/registry/reg_api.c
+++ b/source3/registry/reg_api.c
@@ -634,7 +634,7 @@ WERROR reg_createkey(TALLOC_CTX *ctx, struct registry_key *parent,
 				 key->token))
 	{
 		err = WERR_ACCESS_DENIED;
-		goto done;
+		goto trans_done;
 	}
 
 	/*
diff --git a/source3/utils/regedit.c b/source3/utils/regedit.c
index 21fd257..bff23ec 100644
--- a/source3/utils/regedit.c
+++ b/source3/utils/regedit.c
@@ -25,19 +25,20 @@
 #include "regedit_treeview.h"
 #include "regedit_valuelist.h"
 #include "regedit_dialog.h"
+#include "regedit_list.h"
 #include <ncurses.h>
 #include <menu.h>
 #include <panel.h>
 
 #define KEY_START_X 	0
-#define KEY_START_Y 	3
+#define KEY_START_Y 	1
 #define KEY_WIDTH 	(COLS / 4)
 #define KEY_HEIGHT	(LINES - KEY_START_Y - 2)
 #define VAL_START_X 	KEY_WIDTH
-#define VAL_START_Y 	3
+#define VAL_START_Y 	1
 #define VAL_WIDTH 	(COLS - KEY_WIDTH)
 #define VAL_HEIGHT	(LINES - VAL_START_Y - 2)
-#define HEADING_START_Y	(KEY_START_Y - 1)
+
 #define HELP1_START_Y	(LINES - 2)
 #define HELP1_START_X	0
 #define HELP1_WIDTH	(LINES)
@@ -51,12 +52,14 @@
 #define PATH_WIDTH_MAX	1024
 
 struct regedit {
+	struct registry_context *registry_context;
 	WINDOW *main_window;
 	WINDOW *path_label;
 	size_t path_len;
 	struct value_list *vl;
 	struct tree_view *keys;
 	bool tree_input;
+	struct regedit_search_opts active_search;
 };
 
 static struct regedit *regedit_main = NULL;
@@ -73,6 +76,8 @@ static void show_path(struct regedit *regedit)
 	}
 	copywin(regedit->path_label, regedit->main_window, 0, start_pad,
 		PATH_START_Y, start_win, PATH_START_Y, PATH_MAX_Y, false);
+
+	mvchgat(0, 0, COLS, A_BOLD, PAIR_YELLOW_CYAN, NULL);
 }
 
 static void print_path(struct regedit *regedit, struct tree_node *node)
@@ -81,53 +86,6 @@ static void print_path(struct regedit *regedit, struct tree_node *node)
 	show_path(regedit);
 }
 
-/* load all available hives */
-static struct tree_node *load_hives(TALLOC_CTX *mem_ctx,
-				    struct registry_context *ctx)
-{
-	const char *hives[] = {
-		"HKEY_CLASSES_ROOT",
-		"HKEY_CURRENT_USER",
-		"HKEY_LOCAL_MACHINE",
-		"HKEY_PERFORMANCE_DATA",
-		"HKEY_USERS",
-		"HKEY_CURRENT_CONFIG",
-		"HKEY_DYN_DATA",
-		"HKEY_PERFORMANCE_TEXT",
-		"HKEY_PERFORMANCE_NLSTEXT",
-		NULL
-	};
-	struct tree_node *root, *prev, *node;
-	struct registry_key *key;
-	WERROR rv;
-	size_t i;
-
-	root = NULL;
-	prev = NULL;
-
-	for (i = 0; hives[i] != NULL; ++i) {
-		rv = reg_get_predefined_key_by_name(ctx, hives[i], &key);
-		if (!W_ERROR_IS_OK(rv)) {
-			continue;
-		}
-
-		node = tree_node_new(mem_ctx, NULL, hives[i], key);
-		if (node == NULL) {
-			return NULL;
-		}
-
-		if (root == NULL) {
-			root = node;
-		}
-		if (prev) {
-			tree_node_append(prev, node);
-		}
-		prev = node;
-	}
-
-	return root;
-}
-
 static void print_help(struct regedit *regedit)
 {
 	const char *khelp = "[n] New Key [s] New Subkey [d] Del Key "
@@ -136,8 +94,9 @@ static void print_help(struct regedit *regedit)
 			    "[b] Edit binary";
 	const char *msg = "KEYS";
 	const char *help = khelp;
-	const char *genhelp = "[TAB] Switch sections [q] Quit regedit "
-			      "[UP] List up [DOWN] List down";
+	const char *genhelp = "[TAB] Switch sections [q] Quit "
+			      "[UP] List up [DOWN] List down "
+			      "[/] Search [x] Next";
 	int i, pad;
 
 	if (!regedit->tree_input) {
@@ -147,15 +106,16 @@ static void print_help(struct regedit *regedit)
 
 	move(HELP1_START_Y, HELP1_START_X);
 	clrtoeol();
-	attron(A_REVERSE);
+	attron(COLOR_PAIR(PAIR_BLACK_CYAN));
 	mvaddstr(HELP1_START_Y, HELP1_START_X, help);
 	pad = COLS - strlen(msg) - strlen(help);
 	for (i = 0; i < pad; ++i) {
 		addch(' ');
 	}
-	attron(A_BOLD);
+	attroff(COLOR_PAIR(PAIR_BLACK_CYAN));
+	attron(COLOR_PAIR(PAIR_YELLOW_CYAN) | A_BOLD);
 	addstr(msg);
-	attroff(A_REVERSE | A_BOLD);
+	attroff(COLOR_PAIR(PAIR_YELLOW_CYAN) | A_BOLD);
 
 	move(HELP2_START_Y, HELP2_START_X);
 	clrtoeol();
@@ -164,24 +124,13 @@ static void print_help(struct regedit *regedit)
 
 static void print_heading(struct regedit *regedit)
 {
-	move(HEADING_START_Y, 0);
-	clrtoeol();
-
 	if (regedit->tree_input) {
-		attron(A_REVERSE);
-	} else {
-		attroff(A_REVERSE);
-	}
-	mvprintw(HEADING_START_Y, KEY_START_X, "Key");
-	attroff(A_REVERSE);
-
-	if (!regedit->tree_input) {
-		attron(A_REVERSE);
+		tree_view_set_selected(regedit->keys, true);
+		value_list_set_selected(regedit->vl, false);
 	} else {
-		attroff(A_REVERSE);
+		tree_view_set_selected(regedit->keys, false);
+		value_list_set_selected(regedit->vl, true);
 	}
-	mvprintw(HEADING_START_Y, VAL_START_X, "Value");
-	attroff(A_REVERSE);
 
 	print_help(regedit);
 }
@@ -190,17 +139,17 @@ static void load_values(struct regedit *regedit)
 {
 	struct tree_node *node;
 
-	node = item_userptr(current_item(regedit->keys->menu));
+	node = tree_view_get_current_node(regedit->keys);
 	value_list_load(regedit->vl, node->key);
 }
 
 static void add_reg_key(struct regedit *regedit, struct tree_node *node,
 			bool subkey)
 {
-	char *name;
+	const char *name;
 	const char *msg;
 
-	if (!subkey && !node->parent) {
+	if (!subkey && tree_node_is_top_level(node)) {
 		return;
 	}
 
@@ -234,69 +183,262 @@ static void add_reg_key(struct regedit *regedit, struct tree_node *node,
 				new_node = tree_node_new(parent, parent,
 							 name, new_key);
 				SMB_ASSERT(new_node);
-				tree_node_append_last(list, new_node);
+				tree_node_insert_sorted(list, new_node);
+			} else {
+				/* Reopen the parent key to make sure the
+				   new subkey will be noticed. */
+				tree_node_reopen_key(regedit->registry_context,
+						     parent);
 			}
 
 			list = tree_node_first(node);
 			tree_view_clear(regedit->keys);
 			tree_view_update(regedit->keys, list);
+			if (!subkey) {
+				node = new_node;
+			}
+			tree_view_set_current_node(regedit->keys, node);
+			load_values(regedit);
 		} else {
+			msg = get_friendly_werror_msg(rv);
 			dialog_notice(regedit, DIA_ALERT, "New Key",
-				      "Failed to create key.");
+				      "Failed to create key: %s", msg);
 		}
-		talloc_free(name);
+		talloc_free(discard_const(name));
 	}
 }
 
+enum search_flags {
+	SEARCH_NEXT = (1<<0),
+	SEARCH_PREV = (1<<1),
+	SEARCH_REPEAT = (1<<2)
+};
+static WERROR regedit_search(struct regedit *regedit, struct tree_node *node,
+			     struct value_item *vitem, unsigned flags)
+{
+	struct regedit_search_opts *opts;
+	struct tree_node *found;
+	struct value_item *found_value;
+	bool search_key, need_sync;
+	char *save_value_name;
+	WERROR rv;
+	bool (*iterate)(struct tree_node **, bool, WERROR *);
+	struct value_item *(*find_item)(struct value_list *,
+				        struct value_item *,
+				        const char *,
+				        regedit_search_match_fn_t);
+
+	opts = &regedit->active_search;
+
+	if (!opts->query || !opts->match) {
+		return WERR_OK;
+	}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list