blob: 6414b11124f3b942a2e0367e8ad97d050ae670cb (
plain) (
blame)
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
digraph G {
subgraph cluster_authenticate {
label = "authenticate.c"
auth_userokay;
auth_usercheck;
auth_verify;
}
subgraph cluster_auth_subr {
label = "auth_subr.c"
auth_open;
auth_call;
auth_close;
// auth_setitem;
// auth_setdata;
// auth_setopts;
auth_set[label="auth_set*"];
auth_setstate;
// _auth_spool;
}
subgraph cluster_login_cap {
label = "libc/login_cap.c"
login_getclass
login_getstyle
}
subgraph cluster_getpwent {
label = "libc/getpwent.c"
getpwnam_r;
}
subgraph cluster_exec {
login[label="login_*"];
execve;
}
start -> auth_userokay;
auth_userokay -> auth_usercheck;
auth_usercheck -> getpwnam_r;
auth_usercheck -> login_getclass;
auth_usercheck -> login_getstyle;
// if password given
auth_usercheck -> auth_open;
// auth_usercheck -> auth_setitem;
// auth_usercheck -> auth_setdata;
auth_usercheck -> auth_set;
// fi
auth_usercheck -> auth_verify;
auth_verify -> auth_setstate;
auth_verify -> auth_call;
auth_call -> execve[label="fork()"];
// auth_call -> _auth_spool;
execve -> login;
login -> auth_call[label="back channel"];
// login -> _auth_spool[label="back channel"];
// auth_usercheck -> { auth_setitem auth_setdata auth_setopts }
// auth_call -> auth_userokay;
auth_userokay -> auth_close;
}
|