func:  PIDL_dissect_policy_hnd(tvbuff_t *tvb, gint offset, packet_info proto_tree *tree, dcerpc_info* di, guint8 *drep, int guint32 param) e_ctx_hnd policy_hnd ; if ( ( param & PIDL_POLHND_OPEN ) && ! pinfo -> fd -> flags . visited && ! di -> conformant_run )  dcerpc_call_value * dcv ; dcv = ( dcerpc_call_value * ) di -> call_data; pol_name = ( const char * ) dcv -> private_data; if ( ! pol_name )  pol_name = "<...>"; pol_string = wmem_strdup_printf ( wmem_packet_scope ( ) , "%s(%s)" , di -> dcerpc_procedure_name , pol_name ); dcerpc_store_polhnd_name ( & policy_hnd , pinfo , pol_string ); void dcerpc_store_polhnd_name(e_ctx_hnd *policy_hnd, packet_info const char *name) pol_value * pol ; if ( pinfo -> fd -> flags . visited )  if ( is_null_pol ( policy_hnd ) )  static gboolean is_null_pol(e_ctx_hnd *policy_hnd) static guint8 null_policy_hnd [ 20 ] ; return memcmp ( policy_hnd , null_policy_hnd , 20 ) == 0 ; pol = find_pol_handle ( policy_hnd , pinfo -> fd -> num , & value ); static pol_value *find_pol_handle(e_ctx_hnd *policy_hnd, guint32 pol_hash_value **valuep) pol_hash_key key ; memcpy ( & key . policy_hnd , policy_hnd , sizeof ( key . policy_hnd ) ); if ( * valuep = ( pol_hash_value * ) g_hash_table_lookup ( pol_hash , & key ) )  for (pol = (*valuep)->list; pol != NULL; pol = pol->next) if ( pol -> first_frame <= frame && ( pol -> last_frame == 0 || pol -> last_frame >= frame ) )  return pol ; 