NetUserModalsGet call to samba 2.2.2 fails
Tyler, Ross E
retyler at raytheon.com
Mon Nov 19 08:57:21 GMT 2001
sorry, that attachment should be named sam_unk_info_5.patch (not sam_unk_info_2.patch).
"Tyler, Ross E" wrote:
> i have patched samba 2.2.2 so that it responds successfully to a windows
> (2000) client requesting domain identification information (name and SID):
>
> USER_MODALS_INFO_2 * domainIdInfo = 0;
> NetUserModalsGet(L"theNameOfMySambaServerGoesHere", 2, (BYTE **)
> &domainIdInfo);
>
> using SAM_UNK_INFO_2 as a model, i implemented SAM_UNK_INFO_5 with the
> following fields:
>
> UNIHDR hdr_server; /* server name unicode header */
> UNISTR2 uni_server; /* server name unicode string */
>
> i changed the following files:
>
> source/include/rpc_samr.h
> source/rpc_parse/parse_samr.c
> source/rpc_server/srv_samr_nt.c
>
> the diff(-c)erences from (.)orig(inal) samba 2.2.2 files is attached -
> suitable for patch(-bp)ing
>
> i would appreciate your inspection/blessing of this code and
> the inclusion of it (or equivalent) in future samba releases.
>
> thanks for your support!
>
> "Gerald (Jerry) Carter" wrote:
>
> > On Thu, 15 Nov 2001, Tyler, Ross E wrote:
> >
> > > yes, i guess i understood that.
> >
> > I figured :)
> >
> > > my implied questions were "why not", "when" and "how can i help".
> >
> > We just haven't needed it yet is the most likely answer.
> >
> > > this type of call is something that i commonly do in my windows
> > > networking code for various reasons. some of which are:
> > >
> > > programmatically joining an NT domain
> > >
> > > programmatically purging locally cached profiles from NT domain
> > > accounts that have been removed.
> > >
> > > thanks for you quick response and your support!
> >
> > It should be pretty easy to implement. Run you win32 client
> > against smbd (set "log level = 10" and "debug timestamp = no")
> > Then figure out the structure. Probably best grab a Netmon
> > capture of this as well.
> >
> > Implemented support will probably be cut-n-paste stuff for
> > the most part.
> >
> > If you need help, let me know.
> >
> > ---------------------------------------------------------------------
> > www.samba.org SAMBA Team jerry_at_samba.org
> > www.plainjoe.org jerry_at_plainjoe.org
> > http://www.hp.com Hewlett-Packard
> > --"I never saved anything for the swim back." Ethan Hawk in Gattaca--
>
> ------------------------------------------------------------------------
> *** ./source/include/rpc_samr.h.orig Mon Nov 19 07:49:49 2001
> --- ./source/include/rpc_samr.h Mon Nov 19 07:50:14 2001
> ***************
> *** 476,481 ****
> --- 476,488 ----
>
> } SAM_UNK_INFO_3;
>
> + typedef struct sam_unknown_info_5_info
> + {
> + UNIHDR hdr_server; /* server name unicode header */
> + UNISTR2 uni_server; /* server name unicode string */
> +
> + } SAM_UNK_INFO_5;
> +
> typedef struct sam_unknown_info_6_info
> {
> uint32 unknown_0; /* 0x0000 0000 */
> ***************
> *** 549,554 ****
> --- 556,562 ----
> SAM_UNK_INFO_1 inf1;
> SAM_UNK_INFO_2 inf2;
> SAM_UNK_INFO_3 inf3;
> + SAM_UNK_INFO_5 inf5;
> SAM_UNK_INFO_6 inf6;
> SAM_UNK_INFO_7 inf7;
> SAM_UNK_INFO_12 inf12;
> *** ./source/rpc_parse/parse_samr.c.orig Sat Oct 13 14:09:34 2001
> --- ./source/rpc_parse/parse_samr.c Mon Nov 19 07:25:02 2001
> ***************
> *** 494,499 ****
> --- 494,532 ----
> inits a structure.
> ********************************************************************/
>
> + void init_unk_info5(SAM_UNK_INFO_5 * u_5,
> + char *server)
> + {
> + int len_server = strlen(server);
> + init_uni_hdr(&u_5->hdr_server, len_server);
> + init_unistr2(&u_5->uni_server, server, len_server);
> + }
> +
> + /*******************************************************************
> + reads or writes a structure.
> + ********************************************************************/
> +
> + static BOOL sam_io_unk_info5(char *desc, SAM_UNK_INFO_5 * u_5,
> + prs_struct *ps, int depth)
> + {
> + if (u_5 == NULL)
> + return False;
> +
> + prs_debug(ps, depth, desc, "sam_io_unk_info5");
> + depth++;
> +
> + if(!smb_io_unihdr("hdr_server", &u_5->hdr_server, ps, depth))
> + return False;
> + if(!smb_io_unistr2("uni_server", &u_5->uni_server, u_5->hdr_server.buffer, ps, depth))
> + return False;
> +
> + return True;
> + }
> +
> + /*******************************************************************
> + inits a structure.
> + ********************************************************************/
> +
> void init_unk_info6(SAM_UNK_INFO_6 * u_6)
> {
> u_6->unknown_0 = 0x00000000;
> ***************
> *** 781,786 ****
> --- 814,823 ----
> if(!sam_io_unk_info6("unk_inf6",&r_u->ctr->info.inf6, ps,depth))
> return False;
> break;
> + case 0x05:
> + if(!sam_io_unk_info5("unk_inf5",&r_u->ctr->info.inf5, ps,depth))
> + return False;
> + break;
> case 0x03:
> if(!sam_io_unk_info3("unk_inf3",&r_u->ctr->info.inf3, ps,depth))
> return False;
> *** ./source/rpc_server/srv_samr_nt.c.orig Sat Oct 13 14:09:36 2001
> --- ./source/rpc_server/srv_samr_nt.c Mon Nov 19 07:09:31 2001
> ***************
> *** 1831,1836 ****
> --- 1831,1839 ----
> case 0x03:
> init_unk_info3(&ctr->info.inf3);
> break;
> + case 0x05:
> + init_unk_info5(&ctr->info.inf5, global_myname);
> + break;
> case 0x06:
> init_unk_info6(&ctr->info.inf6);
> break;
More information about the samba-technical
mailing list