diff options
author | Jeremy Allison <jra@samba.org> | 2006-06-09 17:19:59 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 11:17:22 -0500 |
commit | 3b469083befa7159b700d5465db04b1be2d4ac5f (patch) | |
tree | 1de890f5c5add0f9c8ea29fe16afcf42d0607e60 | |
parent | 38060f70a561ee9b71038bf5909b6fdf4872c4c4 (diff) | |
download | samba-3b469083befa7159b700d5465db04b1be2d4ac5f.tar.gz samba-3b469083befa7159b700d5465db04b1be2d4ac5f.tar.bz2 samba-3b469083befa7159b700d5465db04b1be2d4ac5f.zip |
r16126: Janitor for Volker..... This looks correct to me.
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)
-rw-r--r-- | source3/rpc_parse/parse_net.c | 35 |
1 files changed, 15 insertions, 20 deletions
diff --git a/source3/rpc_parse/parse_net.c b/source3/rpc_parse/parse_net.c index e168f5abbd..cecec31410 100644 --- a/source3/rpc_parse/parse_net.c +++ b/source3/rpc_parse/parse_net.c @@ -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 */ |