blob: b182d0239649d75f07c287909071a0fe3f443e26 [file] [log] [blame]
Barry Warsaw3d070fb1996-12-11 16:53:51 +00001import pwd
2import string
3
4verbose = 0
5if __name__ == '__main__':
6 verbose = 1
7
8entries = pwd.getpwall()
9
10for e in entries:
11 name = e[0]
12 uid = e[2]
13 if verbose:
14 print name, uid
15 dbuid = pwd.getpwuid(uid)
16 if dbuid[0] <> name:
17 print 'Mismatch in pwd.getpwuid()'
18 dbname = pwd.getpwnam(name)
19 if dbname[2] <> uid:
20 print 'Mismatch in pwd.getpwnam()'
21 break
22
23# try to get some errors
24bynames = {}
25byuids = {}
26for n, p, u, g, gecos, d, s in entries:
27 bynames[n] = u
28 byuids[u] = n
29
30allnames = bynames.keys()
31namei = 0
32fakename = allnames[namei]
33while bynames.has_key(fakename):
34 chars = map(None, fakename)
35 for i in range(len(chars)):
36 if chars[i] == 'z':
37 chars[i] = 'A'
38 break
39 elif chars[i] == 'Z':
40 continue
41 else:
42 chars[i] = chr(ord(chars[i]) + 1)
43 break
44 else:
45 namei = namei + 1
46 try:
47 fakename = allnames[namei]
48 except IndexError:
49 # should never happen... if so, just forget it
50 break
51 fakename = string.join(map(None, chars), '')
52
53try:
54 pwd.getpwnam(fakename)
55except KeyError:
56 pass
57else:
58 print 'fakename', fakename, 'did not except pwd.getpwnam()'
59
60uids = byuids.keys()
61uids.sort()
62uids.reverse()
63fakeuid = uids[0] + 1
64
65try:
66 pwd.getpwuid(fakeuid)
67except KeyError:
68 pass
69else:
70 print 'fakeuid', fakeuid, 'did not except pwd.getpwuid()'