#include "idl_types.h" import "lsa.idl", "netlogon.idl", "misc.idl", "security.idl", "idmap.idl"; [ uuid("bf09192c-ed60-4928-9dff-d0d7bcb03ed8"), endpoint("ncalrpc:"), pointer_default(unique), version(1.0), helpstring("winbind parent-child protocol"), no_srv_register ] interface wbint { void wbint_Ping( [in] uint32 in_data, [out] uint32 *out_data ); NTSTATUS wbint_LookupSid( [in] dom_sid *sid, [out] lsa_SidType *type, [out,string,charset(UTF8)] char **domain, [out,string,charset(UTF8)] char **name ); NTSTATUS wbint_LookupSids( [in] lsa_SidArray *sids, [out,ref] lsa_RefDomainList *domains, [out,ref] lsa_TransNameArray *names ); NTSTATUS wbint_LookupName( [in,string,charset(UTF8)] char *domain, [in,string,charset(UTF8)] char *name, [in] uint32 flags, [out] lsa_SidType *type, [out] dom_sid *sid ); typedef struct { id_type type; uint32 domain_index; uint32 rid; unixid xid; } wbint_TransID; typedef struct { uint32 num_ids; [size_is(num_ids)] wbint_TransID ids[]; } wbint_TransIDArray; NTSTATUS wbint_Sids2UnixIDs( [in] lsa_RefDomainList *domains, [in,out] wbint_TransIDArray *ids ); NTSTATUS wbint_Uid2Sid( [in,unique,string,charset(UTF8)] char *dom_name, [in] hyper uid, [out] dom_sid *sid ); NTSTATUS wbint_Gid2Sid( [in,unique,string,charset(UTF8)] char *dom_name, [in] hyper gid, [out] dom_sid *sid ); NTSTATUS wbint_AllocateUid( [out] hyper *uid ); NTSTATUS wbint_AllocateGid( [out] hyper *gid ); typedef [public] struct { [string,charset(UTF8)] char *acct_name; [string,charset(UTF8)] char *full_name; [string,charset(UTF8)] char *homedir; [string,charset(UTF8)] char *shell; hyper primary_gid; dom_sid user_sid; dom_sid group_sid; } wbint_userinfo; NTSTATUS wbint_QueryUser( [in] dom_sid *sid, [out] wbint_userinfo *info ); typedef [public] struct { uint32 num_sids; [size_is(num_sids)] dom_sid sids[]; } wbint_SidArray; typedef [public] struct { uint32 num_rids; [size_is(num_rids)] uint32 rids[]; } wbint_RidArray; NTSTATUS wbint_LookupUserAliases( [in] wbint_SidArray *sids, [out] wbint_RidArray *rids ); NTSTATUS wbint_LookupUserGroups( [in] dom_sid *sid, [out] wbint_SidArray *sids ); NTSTATUS wbint_QuerySequenceNumber( [out] uint32 *sequence ); typedef [public] struct { dom_sid sid; lsa_SidType type; [string,charset(UTF8)] char *name; } wbint_Principal; typedef [public] struct { int num_principals; [size_is(num_principals)] wbint_Principal principals[]; } wbint_Principals; NTSTATUS wbint_LookupGroupMembers( [in] dom_sid *sid, [in] lsa_SidType type, [out] wbint_Principals *members ); typedef [public] struct { uint32 num_userinfos; [size_is(num_userinfos)] wbint_userinfo userinfos[]; } wbint_userinfos; NTSTATUS wbint_QueryUserList( [out] wbint_userinfos *users ); NTSTATUS wbint_QueryGroupList( [out] wbint_Principals *groups ); NTSTATUS wbint_DsGetDcName( [in,string,charset(UTF8)] char *domain_name, [in,unique] GUID *domain_guid, [in,string,unique,charset(UTF8)] char *site_name, [in] uint32 flags, [out] netr_DsRGetDCNameInfo **dc_info ); NTSTATUS wbint_LookupRids( [in] dom_sid *domain_sid, [in] wbint_RidArray *rids, [out,string,charset(UTF8)] char **domain_name, [out] wbint_Principals *names ); NTSTATUS wbint_CheckMachineAccount( ); NTSTATUS wbint_ChangeMachineAccount( ); NTSTATUS wbint_PingDc( [out,string,charset(UTF8)] char **dcname ); } 3718903a77e2c1ecc12a55'>linux/backtrace
blob: 2ea6a4d00a1d3f587f240a026981a7c80c1bb0ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#! /bin/sh
#
# Author: Andrew Tridgell <tridge at samba dot org>

# we want everything on stderr, so the program is not disturbed
exec 1>&2

BASENAME=$( basename $0)

test -z ${GDB_BIN} && GDB_BIN=$( type -p gdb)
if [ -z ${GDB_BIN} ]; then
	echo "ERROR: ${BASENAME} needs an installed gdb. "
	exit 1
fi

if [ -z $1 ]; then
	echo "ERROR: ${BASENAME} needs a PID. "
	exit 1
fi
PID=$1

# use /dev/shm as default temp directory
test -d /dev/shm && \
	TMP_BASE_DIR=/dev/shm || \
	TMP_BASE_DIR=/var/tmp
TMPFILE=$( mktemp -p ${TMP_BASE_DIR} backtrace.XXXXXX)
if [ $? -ne 0 ]; then
	echo "ERROR: ${basename} can't create temp file in ${TMP_BASE_DIR}. "
	exit 1
fi

cat << EOF  > "${TMPFILE}"
set height 0
up 8
bt full
quit
EOF

${GDB_BIN} -x "${TMPFILE}" "/proc/${PID}/exe" "${PID}"

/bin/rm -f "${TMPFILE}"