r16126: Janitor for Volker..... This looks correct to me.
authorJeremy Allison <jra@samba.org>
Fri, 9 Jun 2006 17:19:59 +0000 (17:19 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 16:17:22 +0000 (11:17 -0500)
Jeremy.

Fix a parsing error that became apparent in 'make test': If we have no
group
rids in the info3 we set the array buffer pointer to "1" but fail to
actually
ship the array.

Volker.
(This used to be commit ee1b9207d3119c2b3e7c1c4e59250dbd323eae6a)

source3/rpc_parse/parse_net.c

index e168f5abbd3a565fa7ae9052ff8929c1d58bdf51..cecec314101a1b35578ff2bccf06576336bb5210 100644 (file)
@@ -4,7 +4,7 @@
  *  Copyright (C) Andrew Tridgell              1992-1997,
  *  Copyright (C) Luke Kenneth Casson Leighton 1996-1997,
  *  Copyright (C) Paul Ashton                       1997.
- *  Copyright (C) Jean Franรงois Micouleau           2002.
+ *  Copyright (C) Jean Francois Micouleau           2002.
  *
  *  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
@@ -1711,29 +1711,24 @@ BOOL net_io_user_info3(const char *desc, NET_USER_INFO_3 *usr, prs_struct *ps,
        if(!prs_align(ps))
                return False;
 
-       if (usr->num_groups > 0) {
+       if(!prs_uint32("num_groups2   ", ps, depth, &usr->num_groups2))        /* num groups2 */
+               return False;
 
-               if(!prs_uint32("num_groups2   ", ps, depth, &usr->num_groups2))        /* num groups2 */
-                       return False;
+       if (usr->num_groups != usr->num_groups2) {
+               DEBUG(3,("net_io_user_info3: num_groups mismatch! (%d != %d)\n", 
+                        usr->num_groups, usr->num_groups2));
+               return False;
+       }
 
-               if (usr->num_groups != usr->num_groups2) {
-                       DEBUG(3,("net_io_user_info3: num_groups mismatch! (%d != %d)\n", 
-                       usr->num_groups, usr->num_groups2));
+       if (UNMARSHALLING(ps)) {
+               usr->gids = PRS_ALLOC_MEM(ps, DOM_GID, usr->num_groups);
+               if (usr->gids == NULL)
                        return False;
-               }
-
-
-               if (UNMARSHALLING(ps)) {
-                       usr->gids = PRS_ALLOC_MEM(ps, DOM_GID, usr->num_groups);
-                       if (usr->gids == NULL)
-                               return False;
-               }
+       }
 
-               for (i = 0; i < usr->num_groups; i++) {
-                       if(!smb_io_gid("", &usr->gids[i], ps, depth)) /* group info */
-                               return False;
-               }
-               
+       for (i = 0; i < usr->num_groups; i++) {
+               if(!smb_io_gid("", &usr->gids[i], ps, depth)) /* group info */
+                       return False;
        }
 
        if(!smb_io_unistr2("uni_logon_srv", &usr->uni_logon_srv, usr->hdr_logon_srv.buffer, ps, depth)) /* logon server unicode string */