The branch, master has been updated
       via  5119d5540de s4-winreg: fix dcesrv_winreg_EnumValue behavior
       via  1fd0689f0ef s3-winreg: fix _winreg_EnumValue behavior
       via  43a8a03767a s4-torture: add test to check for Windows behavior of 
EnumValue call
       via  36745d63d68 s4-torture: add torture_assert_werr_equal_goto and 
torture_assert_werr_ok_goto macros
       via  9501dbeeb1e s3-rpcclient: add winreg_enumval command
       via  baa67024bca s4/server.c: move some log messages from ERR to NOTICE
       via  55d895dc422 profile: issues info message with lower log level
       via  72f20311acc source3/nmbd/nmbd.c: use DBG_STARTUP_NOTICE
       via  50337acaa56 lib/util/become_daemon.c: use DBG_STARTUP_NOTICE
       via  bb370b9381e README.Coding.md: add DBG_STARTUP_NOTICE macro
       via  159cfde446c logging: use DBG_STARTUP_NOTICE for startup message
       via  ccfe345fece debug.h: introduce DEBUG_STARTUP_NOTICE
       via  b7631bf603f lib/util: move copyright define to copyright.h
      from  19105f51d03 vfs_ceph: Fix some uninitialized structs and pointers

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


- Log -----------------------------------------------------------------
commit 5119d5540de6fa56cb92c82a2bf719c6656a2988
Author: Günther Deschner <g...@samba.org>
Date:   Thu Nov 16 21:05:12 2023 +0100

    s4-winreg: fix dcesrv_winreg_EnumValue behavior
    
    When returning WERR_MORE_DATA the winreg server needs to indicate the
    required buffer size.
    
    Guenther
    
    Signed-off-by: Guenther Deschner <g...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>
    
    Autobuild-User(master): Andrew Bartlett <abart...@samba.org>
    Autobuild-Date(master): Mon Nov 20 04:50:00 UTC 2023 on atb-devel-224

commit 1fd0689f0ef3e833ffd23683d89fa39077a7ce63
Author: Günther Deschner <g...@samba.org>
Date:   Wed Nov 15 17:13:20 2023 +0100

    s3-winreg: fix _winreg_EnumValue behavior
    
    When returning WERR_MORE_DATA the winreg server needs to indicate the
    required buffer size.
    
    Guenther
    
    Signed-off-by: Guenther Deschner <g...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>

commit 43a8a03767a0758e9dbe7a4d3473bfba4aa784c3
Author: Günther Deschner <g...@samba.org>
Date:   Wed Nov 15 17:36:46 2023 +0100

    s4-torture: add test to check for Windows behavior of EnumValue call
    
    Guenther
    
    Signed-off-by: Guenther Deschner <g...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>

commit 36745d63d687bdd310be0415c1a871a65a5ee724
Author: Günther Deschner <g...@samba.org>
Date:   Wed Nov 15 19:07:32 2023 +0100

    s4-torture: add torture_assert_werr_equal_goto and 
torture_assert_werr_ok_goto macros
    
    Guenther
    
    Signed-off-by: Guenther Deschner <g...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>

commit 9501dbeeb1e98ce0dfe2f6a6df63605734bd4ae4
Author: Günther Deschner <g...@samba.org>
Date:   Mon Nov 13 16:49:32 2023 +0100

    s3-rpcclient: add winreg_enumval command
    
    Guenther
    
    Signed-off-by: Guenther Deschner <g...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>

commit baa67024bca391f2e212b91131f544cc911c6895
Author: Björn Jacke <b...@sernet.de>
Date:   Mon Sep 18 13:45:54 2023 +0200

    s4/server.c: move some log messages from ERR to NOTICE
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15377
    
    Signed-off-by: Bjoern Jacke <bja...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>

commit 55d895dc42248ad524a10812b9975ac05a722fdc
Author: Björn Jacke <b...@sernet.de>
Date:   Mon Sep 18 23:42:31 2023 +0200

    profile: issues info message with lower log level
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15377
    
    Signed-off-by: Bjoern Jacke <bja...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>

commit 72f20311acc4ab8851f18ac2b87f7ecc7803afad
Author: Björn Jacke <b...@sernet.de>
Date:   Mon Sep 18 14:35:55 2023 +0200

    source3/nmbd/nmbd.c: use DBG_STARTUP_NOTICE
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15377
    
    Signed-off-by: Bjoern Jacke <bja...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>

commit 50337acaa566b6696e035e38f6408f65805182a0
Author: Björn Jacke <b...@sernet.de>
Date:   Mon Sep 18 14:34:29 2023 +0200

    lib/util/become_daemon.c: use DBG_STARTUP_NOTICE
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15377
    
    Signed-off-by: Bjoern Jacke <bja...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>

commit bb370b9381e5d223ff4ac62f612888f90a63fcc5
Author: Björn Jacke <b...@sernet.de>
Date:   Wed Nov 15 19:44:38 2023 +0100

    README.Coding.md: add DBG_STARTUP_NOTICE macro
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15377
    
    Signed-off-by: Bjoern Jacke <bja...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>

commit 159cfde446c95c387ef212be103b109ea0dca93d
Author: Björn Jacke <b...@sernet.de>
Date:   Mon Jun 5 18:10:07 2023 +0200

    logging: use DBG_STARTUP_NOTICE for startup message
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15377
    
    Signed-off-by: Bjoern Jacke <bja...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>

commit ccfe345fece0a5a44d766fb9426d43c2e046d040
Author: Björn Jacke <b...@sernet.de>
Date:   Mon Sep 18 13:48:06 2023 +0200

    debug.h: introduce DEBUG_STARTUP_NOTICE
    
    this is log level -1 and lowest syslog priority. This is used for start up
    messages and copyright notices, which should always be printed but which 
are no
    errors or warnings.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15377
    
    Signed-off-by: Bjoern Jacke <bja...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>

commit b7631bf603fbce9b80b19410f0680ce8c4170a1b
Author: Björn Jacke <b...@sernet.de>
Date:   Tue Jun 6 17:25:35 2023 +0200

    lib/util: move copyright define to copyright.h
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15377
    
    Signed-off-by: Bjoern Jacke <bja...@samba.org>
    Reviewed-by: Andrew Bartlett <abart...@samba.org>

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

Summary of changes:
 README.Coding.md                                   |  11 +-
 lib/torture/torture.h                              |  12 ++
 lib/util/become_daemon.c                           |   2 +-
 .../echo_server.h => lib/util/copyright.h          |  17 +--
 lib/util/debug.h                                   |   2 +
 source3/include/includes.h                         |   3 +
 source3/include/smb.h                              |   3 -
 source3/nmbd/nmbd.c                                |   4 +-
 source3/profile/profile_dummy.c                    |   2 +-
 source3/rpc_server/rpc_host.c                      |   6 +-
 source3/rpc_server/rpc_worker.c                    |   8 +-
 source3/rpc_server/winreg/srv_winreg_nt.c          |   1 +
 source3/rpcclient/cmd_winreg.c                     | 144 ++++++++++++++++++++-
 source3/smbd/server.c                              |   5 +-
 source3/winbindd/winbindd.c                        |   5 +-
 source4/include/includes.h                         |   3 +
 source4/rpc_server/winreg/rpc_winreg.c             |   8 +-
 source4/samba/server.c                             |  11 +-
 source4/torture/rpc/winreg.c                       |  90 +++++++++++++
 19 files changed, 290 insertions(+), 47 deletions(-)
 copy source4/echo_server/echo_server.h => lib/util/copyright.h (70%)


Changeset truncated at 500 lines:

diff --git a/README.Coding.md b/README.Coding.md
index 76f2c70e95a..132f3f4fa58 100644
--- a/README.Coding.md
+++ b/README.Coding.md
@@ -539,11 +539,12 @@ It should be:
 Use these following macros instead of DEBUG:
 
 ```
-DBG_ERR         log level 0            error conditions
-DBG_WARNING     log level 1            warning conditions
-DBG_NOTICE      log level 3            normal, but significant, condition
-DBG_INFO        log level 5            informational message
-DBG_DEBUG       log level 10           debug-level message
+DBG_STARTUP_NOTICE  log level -1       startup like notice
+DBG_ERR             log level 0                error conditions
+DBG_WARNING         log level 1                warning conditions
+DBG_NOTICE          log level 3                normal, but significant, 
condition
+DBG_INFO            log level 5                informational message
+DBG_DEBUG           log level 10       debug-level message
 ```
 
 Example usage:
diff --git a/lib/torture/torture.h b/lib/torture/torture.h
index ad343cb030b..2d4376a3eb3 100644
--- a/lib/torture/torture.h
+++ b/lib/torture/torture.h
@@ -307,6 +307,15 @@ void torture_result(struct torture_context *test,
        } \
        } while (0)
 
+#define torture_assert_werr_equal_goto(torture_ctx, got, expected, ret, label, 
cmt) \
+       do { WERROR __got = got, __expected = expected; \
+       if (!W_ERROR_EQUAL(__got, __expected)) { \
+               torture_result(torture_ctx, TORTURE_FAIL, __location__": "#got" 
was %s, expected %s: %s", win_errstr(__got), win_errstr(__expected), cmt); \
+               ret = false; \
+               goto label; \
+       } \
+       } while (0)
+
 #define torture_assert_ntstatus_equal(torture_ctx,got,expected,cmt) \
        do { NTSTATUS __got = got, __expected = expected; \
        if (!NT_STATUS_EQUAL(__got, __expected)) { \
@@ -802,6 +811,9 @@ static inline void torture_dump_data_str_cb(const char 
*buf, void *private_data)
 #define torture_assert_werr_ok(torture_ctx,expr,cmt) \
                torture_assert_werr_equal(torture_ctx,expr,WERR_OK,cmt)
 
+#define torture_assert_werr_ok_goto(torture_ctx,expr,ret,label,cmt) \
+               
torture_assert_werr_equal_goto(torture_ctx,expr,WERR_OK,ret,label,cmt)
+
 #define torture_assert_ndr_success(torture_ctx,expr,cmt) \
                
torture_assert_ndr_err_equal(torture_ctx,expr,NDR_ERR_SUCCESS,cmt)
 
diff --git a/lib/util/become_daemon.c b/lib/util/become_daemon.c
index 9424656d403..c6795c585c8 100644
--- a/lib/util/become_daemon.c
+++ b/lib/util/become_daemon.c
@@ -147,5 +147,5 @@ void daemon_status(const char *daemon, const char *msg)
                sd_notifyf(0, "STATUS=%s: %s", daemon, msg);
        }
 #endif
-       DBG_ERR("daemon '%s' : %s\n", daemon, msg);
+       DBG_STARTUP_NOTICE("daemon '%s' : %s\n", daemon, msg);
 }
diff --git a/source4/echo_server/echo_server.h b/lib/util/copyright.h
similarity index 70%
copy from source4/echo_server/echo_server.h
copy to lib/util/copyright.h
index 3c3e1ae9349..a29f2285d13 100644
--- a/source4/echo_server/echo_server.h
+++ b/lib/util/copyright.h
@@ -1,9 +1,7 @@
 /*
    Unix SMB/CIFS implementation.
 
-   Echo structures, server service example
-
-   Copyright (C) 2010 Kai Blin  <k...@samba.org>
+   Copyright (C) Björn Jacke 2023
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -19,15 +17,12 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#ifndef __ECHO_SERVER_H__
-#define __ECHO_SERVER_H__
+#ifndef __LIB_UTIL_COPYRIGHT_H__
+#define __LIB_UTIL_COPYRIGHT_H__
 
-struct task_server;
+/* logged when starting the various Samba daemons */
+#define COPYRIGHT_STARTUP_MESSAGE      "Copyright Andrew Tridgell and the 
Samba Team 1992-2023"
 
-struct echo_server {
-        struct task_server *task;
-};
+#endif /* __LIB_UTIL_COPYRIGHT_H__ */
 
-#define ECHO_SERVICE_PORT 7
 
-#endif /*__ECHO_SERVER_H__*/
diff --git a/lib/util/debug.h b/lib/util/debug.h
index dc86fa8acee..90230a2d88f 100644
--- a/lib/util/debug.h
+++ b/lib/util/debug.h
@@ -269,12 +269,14 @@ void debuglevel_set_class(size_t idx, int level);
 /*
  * Debug levels matching RFC 3164
  */
+#define DBGLVL_STARTUP_NOTICE   -1     /* startup notice */
 #define DBGLVL_ERR      0      /* error conditions */
 #define DBGLVL_WARNING  1      /* warning conditions */
 #define DBGLVL_NOTICE   3      /* normal, but significant, condition */
 #define DBGLVL_INFO     5      /* informational message */
 #define DBGLVL_DEBUG   10      /* debug-level message */
 
+#define DBG_STARTUP_NOTICE(...)        DBG_PREFIX(DBGLVL_STARTUP_NOTICE,       
(__VA_ARGS__))
 #define DBG_ERR(...)           DBG_PREFIX(DBGLVL_ERR,          (__VA_ARGS__))
 #define DBG_WARNING(...)       DBG_PREFIX(DBGLVL_WARNING,      (__VA_ARGS__))
 #define DBG_NOTICE(...)                DBG_PREFIX(DBGLVL_NOTICE,       
(__VA_ARGS__))
diff --git a/source3/include/includes.h b/source3/include/includes.h
index 02beb0a0c88..8bb6ee88803 100644
--- a/source3/include/includes.h
+++ b/source3/include/includes.h
@@ -242,6 +242,9 @@ enum timestamp_set_resolution {
 typedef char fstring[FSTRING_LEN];
 #endif
 
+/* copyright define */
+#include "../lib/util/copyright.h"
+
 /* debug.h need to be included before samba_util.h for the macro SMB_ASSERT */
 #include "../lib/util/debug.h"
 
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 487a8b316d8..81d761d2280 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -29,9 +29,6 @@
 #include "libcli/smb/smb_common.h"
 #include "libds/common/roles.h"
 
-/* logged when starting the various Samba daemons */
-#define COPYRIGHT_STARTUP_MESSAGE      "Copyright Andrew Tridgell and the 
Samba Team 1992-2023"
-
 #define LARGE_WRITEX_HDR_SIZE 65
 #define LARGE_WRITEX_BUFFER_SIZE (128*1024)
 
diff --git a/source3/nmbd/nmbd.c b/source3/nmbd/nmbd.c
index f4ffad66c8b..63a81a17326 100644
--- a/source3/nmbd/nmbd.c
+++ b/source3/nmbd/nmbd.c
@@ -898,7 +898,9 @@ static bool open_sockets(bool isdaemon, int port)
 
        reopen_logs();
 
-       DBG_ERR("nmbd version %s started.\n%s\n", samba_version_string(), 
COPYRIGHT_STARTUP_MESSAGE);
+       DBG_STARTUP_NOTICE("nmbd version %s started.\n"
+                       COPYRIGHT_STARTUP_MESSAGE "\n",
+               samba_version_string());
 
        if (lp_server_role() == ROLE_ACTIVE_DIRECTORY_DC
            && !lp_parm_bool(-1, "server role check", "inhibit", false)) {
diff --git a/source3/profile/profile_dummy.c b/source3/profile/profile_dummy.c
index 7d34d209fce..5d3213eec1a 100644
--- a/source3/profile/profile_dummy.c
+++ b/source3/profile/profile_dummy.c
@@ -27,5 +27,5 @@ bool profile_setup(struct messaging_context *msg_ctx, bool 
rdonly)
 
 void set_profile_level(int level, const struct server_id *src)
 {
-       DEBUG(1,("INFO: Profiling support unavailable in this build.\n"));
+       DBG_NOTICE("INFO: Profiling support unavailable in this build.\n");
 }
diff --git a/source3/rpc_server/rpc_host.c b/source3/rpc_server/rpc_host.c
index 337076b5063..c3c4cb97e21 100644
--- a/source3/rpc_server/rpc_host.c
+++ b/source3/rpc_server/rpc_host.c
@@ -2902,10 +2902,10 @@ int main(int argc, const char *argv[])
 
        reopen_logs();
 
-       DEBUG(0, ("%s version %s started.\n",
+       DBG_STARTUP_NOTICE("%s version %s started.\n"
+                       COPYRIGHT_STARTUP_MESSAGE "\n",
                  progname,
-                 samba_version_string()));
-       DEBUGADD(0,("%s\n", COPYRIGHT_STARTUP_MESSAGE));
+                 samba_version_string());
 
        (void)winbind_off();
        ok = init_guest_session_info(frame);
diff --git a/source3/rpc_server/rpc_worker.c b/source3/rpc_server/rpc_worker.c
index 8ed7444e003..691e0ec57f0 100644
--- a/source3/rpc_server/rpc_worker.c
+++ b/source3/rpc_server/rpc_worker.c
@@ -1152,10 +1152,10 @@ int rpc_worker_main(
 
        reopen_logs();
 
-       DEBUG(0, ("%s version %s started.\n",
-                 progname,
-                 samba_version_string()));
-       DEBUGADD(0,("%s\n", COPYRIGHT_STARTUP_MESSAGE));
+       DBG_STARTUP_NOTICE("%s version %s started.\n"
+                       COPYRIGHT_STARTUP_MESSAGE "\n",
+               progname,
+               samba_version_string());
 
        msg_ctx = global_messaging_context();
        if (msg_ctx == NULL) {
diff --git a/source3/rpc_server/winreg/srv_winreg_nt.c 
b/source3/rpc_server/winreg/srv_winreg_nt.c
index 67e81422e4c..132213a6e86 100644
--- a/source3/rpc_server/winreg/srv_winreg_nt.c
+++ b/source3/rpc_server/winreg/srv_winreg_nt.c
@@ -502,6 +502,7 @@ WERROR _winreg_EnumValue(struct pipes_struct *p,
                }
 
                if (val->data.length > *r->out.size) {
+                       *r->out.size = val->data.length;
                        return WERR_MORE_DATA;
                }
 
diff --git a/source3/rpcclient/cmd_winreg.c b/source3/rpcclient/cmd_winreg.c
index 5821ec9d734..26fa146cedd 100644
--- a/source3/rpcclient/cmd_winreg.c
+++ b/source3/rpcclient/cmd_winreg.c
@@ -111,16 +111,16 @@ static void display_winreg_data(const char *v,
 
        switch (type) {
        case REG_DWORD:
-               printf("%s: REG_DWORD: 0x%08x\n", v, r.value);
+               printf("%-20s: REG_DWORD: 0x%08x\n", v, r.value);
                break;
        case REG_SZ:
-               printf("%s: REG_SZ: %s\n", v, r.string);
+               printf("%-20s: REG_SZ: %s\n", v, r.string);
                break;
        case REG_BINARY: {
                char *hex = hex_encode_talloc(NULL,
                        r.binary.data, r.binary.length);
                size_t len;
-               printf("%s: REG_BINARY:", v);
+               printf("%-20s: REG_BINARY:", v);
                len = strlen(hex);
                for (i=0; i<len; i++) {
                        if (hex[i] == '\0') {
@@ -136,14 +136,14 @@ static void display_winreg_data(const char *v,
                break;
        }
        case REG_MULTI_SZ:
-               printf("%s: REG_MULTI_SZ: ", v);
+               printf("%-20s: REG_MULTI_SZ: ", v);
                for (i=0; r.string_array[i] != NULL; i++) {
                        printf("%s ", r.string_array[i]);
                }
                printf("\n");
                break;
        default:
-               printf("%s: unknown type 0x%02x:\n", v, type);
+               printf("%-20ss: unknown type 0x%02x:\n", v, type);
                break;
        }
 }
@@ -314,6 +314,130 @@ static WERROR cmd_winreg_querymultiplevalues2(struct 
rpc_pipe_client *cli,
        return cmd_winreg_querymultiplevalues_ex(cli, mem_ctx, argc, argv, 
true);
 }
 
+static WERROR cmd_winreg_enumval(struct rpc_pipe_client *cli,
+                                TALLOC_CTX *mem_ctx, int argc,
+                                const char **argv)
+{
+       NTSTATUS status;
+       WERROR werr, ignore;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
+       struct policy_handle parent_handle, handle;
+       uint32_t enum_index = 0;
+
+       if (argc < 1 || argc > 3) {
+               printf("usage: %s [name]\n", argv[0]);
+               return WERR_OK;
+       }
+
+       status = dcerpc_winreg_OpenHKLM(b, mem_ctx,
+                                       NULL,
+                                       SEC_FLAG_MAXIMUM_ALLOWED,
+                                       &parent_handle,
+                                       &werr);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
+       if (!W_ERROR_IS_OK(werr)) {
+               return werr;
+       }
+
+       if (argc >= 2) {
+
+               struct winreg_String keyname;
+
+               ZERO_STRUCT(keyname);
+
+               keyname.name = argv[1];
+
+               status = dcerpc_winreg_OpenKey(b, mem_ctx,
+                                              &parent_handle,
+                                              keyname,
+                                              0,
+                                              SEC_FLAG_MAXIMUM_ALLOWED,
+                                              &handle,
+                                              &werr);
+               if (!NT_STATUS_IS_OK(status)) {
+                       return ntstatus_to_werror(status);
+               }
+               if (!W_ERROR_IS_OK(werr)) {
+                       return werr;
+               }
+       } else {
+               handle = parent_handle;
+       }
+
+       do {
+               struct winreg_ValNameBuf name;
+               enum winreg_Type type = REG_NONE;
+               uint32_t size = 0, length = 0;
+               struct winreg_EnumValue r;
+
+               name.name = "";
+               name.size = 1024;
+
+               r.in.handle = &handle;
+               r.in.enum_index = enum_index;
+               r.in.name = &name;
+               r.in.type = &type;
+               r.in.size = &size;
+               r.in.length = &length;
+               r.in.value = talloc_array(mem_ctx, uint8_t, size);
+               if (r.in.value == NULL) {
+                       werr = WERR_NOT_ENOUGH_MEMORY;
+                       goto done;
+               }
+               r.out.name = &name;
+               r.out.type = &type;
+               r.out.size = &size;
+               r.out.length = &length;
+               r.out.value = r.in.value;
+
+               status = dcerpc_winreg_EnumValue_r(b, mem_ctx, &r);
+               if (!NT_STATUS_IS_OK(status)) {
+                       werr = ntstatus_to_werror(status);
+                       goto done;
+               }
+
+               werr = r.out.result;
+
+               if (W_ERROR_EQUAL(werr, WERR_MORE_DATA)) {
+                       *r.in.size = *r.out.size;
+                       r.in.value = talloc_zero_array(mem_ctx, uint8_t, 
*r.in.size);
+                       if (r.in.value == NULL) {
+                               werr = WERR_NOT_ENOUGH_MEMORY;
+                               goto done;
+                       }
+
+                       status = dcerpc_winreg_EnumValue_r(b, mem_ctx, &r);
+                       if (!NT_STATUS_IS_OK(status)) {
+                               werr = ntstatus_to_werror(status);
+                               goto done;
+                       }
+
+                       werr = r.out.result;
+               }
+               if (!W_ERROR_IS_OK(r.out.result)) {
+                       goto done;
+               }
+
+               printf("%02d: ", enum_index++);
+
+               display_winreg_data(r.out.name->name,
+                                   *r.out.type,
+                                   r.out.value,
+                                   *r.out.size);
+
+       } while (W_ERROR_IS_OK(werr));
+
+ done:
+       if (argc >= 2) {
+               dcerpc_winreg_CloseKey(b, mem_ctx, &handle, &ignore);
+       }
+       dcerpc_winreg_CloseKey(b, mem_ctx, &parent_handle, &ignore);
+
+       return werr;
+}
+
 /* List of commands exported by this module */
 
 struct cmd_set winreg_commands[] = {
@@ -351,6 +475,16 @@ struct cmd_set winreg_commands[] = {
                .description        = "Query multiple values",
                .usage              = "",
        },
+       {
+               .name               = "winreg_enumval",
+               .returntype         = RPC_RTYPE_WERROR,
+               .ntfn               = NULL,
+               .wfn                = cmd_winreg_enumval,
+               .table              = &ndr_table_winreg,
+               .rpc_pipe           = NULL,
+               .description        = "Enumerate Values",
+               .usage              = "",
+       },
        {
                .name = NULL,
        },
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 18c79f9df35..ddef5b6de16 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -1743,8 +1743,9 @@ extern void build_options(bool screen);
 
        reopen_logs();
 
-       DEBUG(0,("smbd version %s started.\n", samba_version_string()));
-       DEBUGADD(0,("%s\n", COPYRIGHT_STARTUP_MESSAGE));
+       DBG_STARTUP_NOTICE("smbd version %s started.\n"
+                       COPYRIGHT_STARTUP_MESSAGE "\n",
+               samba_version_string());
 
        DEBUG(2,("uid=%d gid=%d euid=%d egid=%d\n",
                 (int)getuid(),(int)getgid(),(int)geteuid(),(int)getegid()));
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index 765e5a2561b..cdd6d4319cb 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -1438,8 +1438,9 @@ int main(int argc, const char **argv)
 
        reopen_logs();
 
-       DEBUG(0,("winbindd version %s started.\n", samba_version_string()));
-       DEBUGADD(0,("%s\n", COPYRIGHT_STARTUP_MESSAGE));
+       DBG_STARTUP_NOTICE("winbindd version %s started.\n"
+                       COPYRIGHT_STARTUP_MESSAGE "\n",
+               samba_version_string());
 
        /* After parsing the configuration file we setup the core path one more 
time
         * as the log file might have been set in the configuration and cores's
diff --git a/source4/include/includes.h b/source4/include/includes.h
index e7abf1a2492..8832b97ed02 100644
--- a/source4/include/includes.h
+++ b/source4/include/includes.h
@@ -57,6 +57,9 @@
 #endif
 #include "../lib/util/attr.h"
 
+/* copyright define */
+#include "../lib/util/copyright.h"
+
 /* debug.h need to be included before samba_util.h for the macro SMB_ASSERT */
 #include "../lib/util/debug.h"
 #include "../lib/util/samba_util.h"
diff --git a/source4/rpc_server/winreg/rpc_winreg.c 
b/source4/rpc_server/winreg/rpc_winreg.c
index 3adaafead7c..f8bd8c1926b 100644
--- a/source4/rpc_server/winreg/rpc_winreg.c
+++ b/source4/rpc_server/winreg/rpc_winreg.c
@@ -312,6 +312,10 @@ static WERROR dcesrv_winreg_EnumValue(struct 
dcesrv_call_state *dce_call,
        }
        *r->out.type = (enum winreg_Type) data_type;
 
+       if (r->in.size != NULL) {
+               r->out.size = talloc(mem_ctx, uint32_t);
+               *r->out.size = data.length;
+       }
        /* check the client has enough room for the value */
        if (r->in.value != NULL &&
            r->in.size != NULL &&
@@ -323,9 +327,7 @@ static WERROR dcesrv_winreg_EnumValue(struct 
dcesrv_call_state *dce_call,
                r->out.value = data.data;
        }
 
-       if (r->in.size != NULL) {
-               r->out.size = talloc(mem_ctx, uint32_t);
-               *r->out.size = data.length;
+       if (r->in.length != NULL) {
                r->out.length = r->out.size;
        }
 
diff --git a/source4/samba/server.c b/source4/samba/server.c
index 4698ac0320b..d2bd3a59708 100644
--- a/source4/samba/server.c
+++ b/source4/samba/server.c
@@ -630,11 +630,10 @@ static int binary_smbd_main(TALLOC_CTX *mem_ctx,
           so set our umask to 0 */
        umask(0);
 
-       DEBUG(0,("%s version %s started.\n",
+       DBG_STARTUP_NOTICE("%s version %s started.\n"
+                       COPYRIGHT_STARTUP_MESSAGE "\n",
                binary_name,
-               SAMBA_VERSION_STRING));
-       DEBUGADD(0,("Copyright Andrew Tridgell and the Samba Team"
-               " 1992-2023\n"));


-- 
Samba Shared Repository

Reply via email to