r12635: use the new [validate] value() checking to fix the string types for
authorAndrew Tridgell <tridge@samba.org>
Sat, 31 Dec 2005 04:31:02 +0000 (04:31 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:49:10 +0000 (13:49 -0500)
the LSA pipe. Strangely, windows is not consistent for the LookupSids
call. Sometimes the name is terminated and sometimes not?! It might
depend on the type of rid (alias, group etc) ?

source/librpc/idl/lsa.idl

index 8a141bcd541c185c47e29c74058fd34d7b91c930..454f73afebf7f3503c63eb0ea9ba722815d79c24 100644 (file)
@@ -23,7 +23,7 @@
        typedef [public] struct {
                [value(2*strlen_m(string))] uint16 length;
                [value(2*(strlen_m(string)+1))] uint16 size;
-               [flag(STR_SIZE4|STR_LEN4|STR_NOTERM|STR_LARGE_SIZE)] string *string;
+               [charset(UTF16),size_is(size/2),length_is(length/2)] uint16 *string;
        } lsa_StringLarge;
 
        typedef [public] struct {
@@ -59,7 +59,7 @@
        } lsa_LUID;
        
        typedef struct {
-               lsa_String name;
+               lsa_StringLarge name;
                lsa_LUID luid;
        } lsa_PrivEntry;
 
        } lsa_AuditEventsInfo;
 
        typedef struct {
-               lsa_String name;
+               lsa_StringLarge name;
                dom_sid2 *sid;
        } lsa_DomainInfo;
 
        /* Function: 0x0c                                */
 
        typedef struct {
-               lsa_String name;
+               lsa_StringLarge name;
                dom_sid2  *sid;
        } lsa_TrustInformation;
 
        const int LSA_ENUM_TRUST_DOMAIN_MULTIPLIER = 60;
 
        typedef struct {
-               lsa_String name;
+               lsa_StringLarge name;
                dom_sid2 *sid;
        } lsa_DomainInformation;
 
        } lsa_TrustDomInfoEnum;
 
        typedef struct {
-               lsa_String     netbios_name;
+               lsa_StringLarge  netbios_name;
        } lsa_TrustDomainInfoName;
 
        typedef struct {
        } lsa_TrustDomainInfoBasic;
 
        typedef struct {
-               lsa_String     domain_name;
-               lsa_String     netbios_name;
+               lsa_StringLarge     domain_name;
+               lsa_StringLarge     netbios_name;
                dom_sid2      *sid;
                uint32         trust_direction;
                uint32         trust_type;
        NTSTATUS lsa_LookupPrivName (
                [in]     policy_handle *handle,
                [in]     lsa_LUID *luid,
-               [out,unique]        lsa_String *name
+               [out,unique]        lsa_StringLarge *name
                );
 
 
        NTSTATUS lsa_LookupPrivDisplayName (
                [in]     policy_handle *handle,
                [in]     lsa_String *name,
-               [out,unique]        lsa_String *disp_name,
+               [out,unique]        lsa_StringLarge *disp_name,
                /* see http://www.microsoft.com/globaldev/nlsweb/ for
                   language definitions */
                [in,out] uint16 *language_id,
        
        typedef struct {
                uint32 count;
-               [size_is(count)] lsa_String *names;
+               [size_is(count)] lsa_StringLarge *names;
        } lsa_RightSet;
        
        NTSTATUS lsa_EnumAccountRights (