xref: /xnu-8792.41.9/tools/lldbmacros/kauth.py (revision 5c2921b07a2480ab43ec66f5b9e41cb872bc554f)
1*5c2921b0SApple OSS Distributions""" Please make sure you read the README file COMPLETELY BEFORE reading anything below.
2*5c2921b0SApple OSS Distributions    It is very critical that you read coding guidelines in Section E in README file.
3*5c2921b0SApple OSS Distributions"""
4*5c2921b0SApple OSS Distributionsfrom __future__ import absolute_import, print_function
5*5c2921b0SApple OSS Distributions
6*5c2921b0SApple OSS Distributionsfrom builtins import range
7*5c2921b0SApple OSS Distributions
8*5c2921b0SApple OSS Distributionsfrom xnu import *
9*5c2921b0SApple OSS Distributionsfrom utils import *
10*5c2921b0SApple OSS Distributions
11*5c2921b0SApple OSS Distributions# Macro: walkkauthcache
12*5c2921b0SApple OSS Distributions@lldb_command('walkkauthcache')
13*5c2921b0SApple OSS Distributionsdef WalkKauthCache(cmd_args=None):
14*5c2921b0SApple OSS Distributions    """ Walks the bins of the kauth credential hash cache and prints out the
15*5c2921b0SApple OSS Distributions        number of bins and bin usage information.
16*5c2921b0SApple OSS Distributions    """
17*5c2921b0SApple OSS Distributions    PrintKauthCache()
18*5c2921b0SApple OSS Distributions# EndMacro: walkkauthcache
19*5c2921b0SApple OSS Distributions
20*5c2921b0SApple OSS Distributionsdef PrintKauthCache(cmd_args=None):
21*5c2921b0SApple OSS Distributions    """ Routine to determine the size of the kauth cache, walk the bins
22*5c2921b0SApple OSS Distributions         and print out usage information.
23*5c2921b0SApple OSS Distributions    """
24*5c2921b0SApple OSS Distributions    anchor = unsigned(kern.globals.kauth_cred_table_anchor)
25*5c2921b0SApple OSS Distributions    table_entries = 128 # KAUTH_CRED_TABLE_SIZE
26*5c2921b0SApple OSS Distributions    anchor = kern.globals.kauth_cred_table_anchor
27*5c2921b0SApple OSS Distributions    print("Cred cache has: " + str(table_entries) + " buckets\n")
28*5c2921b0SApple OSS Distributions    print("Number of items in each bucket ... \n")
29*5c2921b0SApple OSS Distributions    for i in range(0, table_entries):
30*5c2921b0SApple OSS Distributions        numinbucket = 0
31*5c2921b0SApple OSS Distributions        for kauth_cred in IterateListEntry(anchor[i], 'struct ucred_rw *', "crw_link"):
32*5c2921b0SApple OSS Distributions            numinbucket += 1
33*5c2921b0SApple OSS Distributions            #print str(kauth_cred.cr_posix)
34*5c2921b0SApple OSS Distributions            #print str(kauth_cred.cr_ref)
35*5c2921b0SApple OSS Distributions        print(str(numinbucket) + "\n")
36