]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s4-winreg: fix dcesrv_winreg_EnumValue behavior
authorGünther Deschner <gd@samba.org>
Thu, 16 Nov 2023 20:05:12 +0000 (21:05 +0100)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 20 Nov 2023 04:50:00 +0000 (04:50 +0000)
When returning WERR_MORE_DATA the winreg server needs to indicate the
required buffer size.

Guenther

Signed-off-by: Guenther Deschner <gd@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Mon Nov 20 04:50:00 UTC 2023 on atb-devel-224

selftest/knownfail.d/winreg [deleted file]
source4/rpc_server/winreg/rpc_winreg.c

diff --git a/selftest/knownfail.d/winreg b/selftest/knownfail.d/winreg
deleted file mode 100644 (file)
index 4d88d8a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-^samba4.rpc.winreg.*
index 3adaafead7c71f72fa3b168a2f5bfad7d047546c..f8bd8c1926b0536273827cc3172a7c0f749d25e1 100644 (file)
@@ -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;
        }