The rids argument to samr_GetGroupsForUser() is *not* a single RID, it's
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Thu, 30 Dec 2010 02:56:51 +0000 (02:56 +0000)
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Thu, 30 Dec 2010 02:56:51 +0000 (02:56 +0000)
an array of samr_RidWithAttributeArray structures.  Don't equate it to
hf_samr_rid; that causes hf_samr_rid to be added as an item with a
length of -1, but, as hf_samr_rid is an FT_UINT32 field, that causes a
dissector bug error.

The version of Yapp I was using, at least, didn't like C++-style
comments in the IDL file; replace them with C-style comments.

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@35304 f5534014-38df-0310-8fa8-9805f1628bb7

epan/dissectors/packet-dcerpc-samr.c
epan/dissectors/pidl/samr.cnf
epan/dissectors/pidl/samr.idl

index 5c22f451fed5fe92158b25e9b4bebbe1264ef037..4f46497fe45c83eec574705071b0d58f8a75c7c7 100644 (file)
@@ -480,6 +480,7 @@ static gint hf_samr_samr_UserInfo5_home_drive = -1;
 static gint hf_samr_samr_RemoveMemberFromForeignDomain_sid = -1;
 static gint hf_samr_samr_FieldsPresent_SAMR_FIELD_FORCE_PWD_CHANGE = -1;
 static gint hf_samr_samr_FieldsPresent_SAMR_FIELD_LAST_LOGOFF = -1;
+static gint hf_samr_samr_RidWithAttributeArray_rids = -1;
 static gint hf_samr_samr_Password_hash = -1;
 static gint hf_samr_samr_FieldsPresent_SAMR_FIELD_OWF_PWD = -1;
 static gint hf_samr_samr_UserInfo_info25 = -1;
@@ -7378,7 +7379,7 @@ samr_dissect_element_RidWithAttributeArray_count(tvbuff_t *tvb _U_, int offset _
 static int
 samr_dissect_element_RidWithAttributeArray_rids(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
 {
-       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_RidWithAttributeArray_rids_, NDR_POINTER_UNIQUE, "Pointer to Rids (samr_RidWithAttribute)",hf_samr_rid);
+       offset = dissect_ndr_embedded_pointer(tvb, offset, pinfo, tree, drep, samr_dissect_element_RidWithAttributeArray_rids_, NDR_POINTER_UNIQUE, "Pointer to Rids (samr_RidWithAttribute)",hf_samr_samr_RidWithAttributeArray_rids);
 
        return offset;
 }
@@ -7394,7 +7395,7 @@ samr_dissect_element_RidWithAttributeArray_rids_(tvbuff_t *tvb _U_, int offset _
 static int
 samr_dissect_element_RidWithAttributeArray_rids__(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, guint8 *drep _U_)
 {
-       offset = samr_dissect_struct_RidWithAttribute(tvb,offset,pinfo,tree,drep,hf_samr_rid,0);
+       offset = samr_dissect_struct_RidWithAttribute(tvb,offset,pinfo,tree,drep,hf_samr_samr_RidWithAttributeArray_rids,0);
 
        return offset;
 }
@@ -16048,6 +16049,8 @@ void proto_register_dcerpc_samr(void)
          { "Samr Field Force Pwd Change", "samr.samr_FieldsPresent.SAMR_FIELD_FORCE_PWD_CHANGE", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_FORCE_PWD_CHANGE_tfs), ( 0x00020000 ), NULL, HFILL }},
        { &hf_samr_samr_FieldsPresent_SAMR_FIELD_LAST_LOGOFF, 
          { "Samr Field Last Logoff", "samr.samr_FieldsPresent.SAMR_FIELD_LAST_LOGOFF", FT_BOOLEAN, 32, TFS(&samr_FieldsPresent_SAMR_FIELD_LAST_LOGOFF_tfs), ( 0x00001000 ), NULL, HFILL }},
+       { &hf_samr_samr_RidWithAttributeArray_rids, 
+         { "Rids", "samr.samr_RidWithAttributeArray.rids", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }},
        { &hf_samr_samr_Password_hash, 
          { "Hash", "samr.samr_Password.hash", FT_UINT8, BASE_DEC, NULL, 0, NULL, HFILL }},
        { &hf_samr_samr_FieldsPresent_SAMR_FIELD_OWF_PWD, 
index 883b7aaf5146f38772cda6c95461dd2f31eb6da7..bdcd28ae4f40a5f1088c524933333880646cb047 100644 (file)
@@ -133,7 +133,6 @@ HF_RENAME hf_samr_samr_UserInfo3_rid hf_samr_rid
 HF_RENAME hf_samr_samr_UserInfo5_rid hf_samr_rid
 HF_RENAME hf_samr_samr_UserInfo21_rid hf_samr_rid
 HF_RENAME hf_samr_samr_RidWithAttribute_rid hf_samr_rid
-HF_RENAME hf_samr_samr_RidWithAttributeArray_rids hf_samr_rid
 HF_RENAME hf_samr_samr_DispEntryGeneral_rid hf_samr_rid
 HF_RENAME hf_samr_samr_DispEntryFull_rid hf_samr_rid
 HF_RENAME hf_samr_samr_DispEntryFullGroup_rid hf_samr_rid
index ca15e60e76d316fa4b1da3feb2143fa19f6916f0..9488c65e22f3500ddb47bb78d24c04a1e95bae44 100644 (file)
                SAMR_GROUP_ACCESS_REMOVE_MEMBER   = 0x00000008,
                SAMR_GROUP_ACCESS_GET_MEMBERS     = 0x00000010
        } samr_GroupAccessMask;
-       // these bits are invalid and return ACCESS_DENIED
+       /* these bits are invalid and return ACCESS_DENIED */
        const int SAMR_GROUP_ACCESS_MASK_INVALID  = 0x0000ffe0; 
-       // generic access
+       /* generic access */
        const int SAMR_GROUP_ACCESS_ALL_ACCESS    = 0x000f001f;
        const int SAMR_GROUP_ACCESS_ALL_READ      = 0x00020010;
        const int SAMR_GROUP_ACCESS_ALL_WRITE     = 0x0002000e;