netapi: fix NetGroupGetInfo() against NT4.
authorGünther Deschner <gd@samba.org>
Thu, 17 Jul 2008 23:11:32 +0000 (01:11 +0200)
committerGünther Deschner <gd@samba.org>
Fri, 18 Jul 2008 14:47:05 +0000 (16:47 +0200)
Guenther
(This used to be commit c0fea9c4d0d3d297972c052c17b9be6d0530e098)

source3/lib/netapi/group.c

index 6d9ed18b6891acad14521c510b96c99327635072..f856ec0a1330d79c4142ef925b247aa5c67077d2 100644 (file)
@@ -659,6 +659,7 @@ WERROR NetGroupGetInfo_r(struct libnetapi_ctx *ctx,
        struct samr_Ids rids;
        struct samr_Ids types;
        union samr_GroupInfo *info = NULL;
+       bool group_info_all = false;
 
        ZERO_STRUCT(connect_handle);
        ZERO_STRUCT(domain_handle);
@@ -721,13 +722,22 @@ WERROR NetGroupGetInfo_r(struct libnetapi_ctx *ctx,
                                            &group_handle,
                                            GROUPINFOALL2,
                                            &info);
+       if (NT_STATUS_EQUAL(status, NT_STATUS_INVALID_INFO_CLASS)) {
+               status = rpccli_samr_QueryGroupInfo(pipe_cli, ctx,
+                                                   &group_handle,
+                                                   GROUPINFOALL,
+                                                   &info);
+               group_info_all = true;
+       }
+
        if (!NT_STATUS_IS_OK(status)) {
                werr = ntstatus_to_werror(status);
                goto done;
        }
 
        werr = map_group_info_to_buffer(ctx, r->in.level,
-                                       &info->all2, domain_sid, rids.ids[0],
+                                       group_info_all ? &info->all : &info->all2,
+                                       domain_sid, rids.ids[0],
                                        r->out.buf);
        if (!W_ERROR_IS_OK(werr)) {
                goto done;