Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/openssh/src/groupaccess.c |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||
2 | - | |||||||||||||
3 | - | |||||||||||||
4 | - | |||||||||||||
5 | - | |||||||||||||
6 | - | |||||||||||||
7 | static int ngroups; | - | ||||||||||||
8 | static char **groups_byname; | - | ||||||||||||
9 | - | |||||||||||||
10 | - | |||||||||||||
11 | - | |||||||||||||
12 | - | |||||||||||||
13 | - | |||||||||||||
14 | int | - | ||||||||||||
15 | ga_init(const char *user, gid_t base) | - | ||||||||||||
16 | { | - | ||||||||||||
17 | gid_t *groups_bygid; | - | ||||||||||||
18 | int i, j, retry = 0; | - | ||||||||||||
19 | struct group *gr; | - | ||||||||||||
20 | - | |||||||||||||
21 | if (ngroups > 0
| 0 | ||||||||||||
22 | ga_free(); never executed: ga_free(); | 0 | ||||||||||||
23 | - | |||||||||||||
24 | ngroups = | - | ||||||||||||
25 | 65536 | - | ||||||||||||
26 | ; | - | ||||||||||||
27 | - | |||||||||||||
28 | ngroups = | - | ||||||||||||
29 | (((
| 0 | ||||||||||||
30 | sysconf(
| 0 | ||||||||||||
31 | _SC_NGROUPS_MAX
| 0 | ||||||||||||
32 | )
| 0 | ||||||||||||
33 | ))
| 0 | ||||||||||||
34 | sysconf( | - | ||||||||||||
35 | _SC_NGROUPS_MAX | - | ||||||||||||
36 | ) | - | ||||||||||||
37 | )) | - | ||||||||||||
38 | ; | - | ||||||||||||
39 | - | |||||||||||||
40 | - | |||||||||||||
41 | groups_bygid = xcalloc(ngroups, sizeof(*groups_bygid)); | - | ||||||||||||
42 | while (getgrouplist(user, base, groups_bygid, &ngroups) == -1
| 0 | ||||||||||||
43 | if (retry++ > 0
| 0 | ||||||||||||
44 | fatal("getgrouplist: groups list too small"); never executed: fatal("getgrouplist: groups list too small"); | 0 | ||||||||||||
45 | groups_bygid = xreallocarray(groups_bygid, ngroups, | - | ||||||||||||
46 | sizeof(*groups_bygid)); | - | ||||||||||||
47 | } never executed: end of block | 0 | ||||||||||||
48 | groups_byname = xcalloc(ngroups, sizeof(*groups_byname)); | - | ||||||||||||
49 | - | |||||||||||||
50 | for (i = 0, j = 0; i < ngroups
| 0 | ||||||||||||
51 | if ((
| 0 | ||||||||||||
52 | ((void *)0)
| 0 | ||||||||||||
53 | ) | - | ||||||||||||
54 | groups_byname[j++] = xstrdup(gr->gr_name); never executed: groups_byname[j++] = xstrdup(gr->gr_name); | 0 | ||||||||||||
55 | free(groups_bygid); | - | ||||||||||||
56 | return never executed: (ngroups = j);return (ngroups = j); never executed: return (ngroups = j); | 0 | ||||||||||||
57 | } | - | ||||||||||||
58 | - | |||||||||||||
59 | - | |||||||||||||
60 | - | |||||||||||||
61 | - | |||||||||||||
62 | - | |||||||||||||
63 | int | - | ||||||||||||
64 | ga_match(char * const *groups, int n) | - | ||||||||||||
65 | { | - | ||||||||||||
66 | int i, j; | - | ||||||||||||
67 | - | |||||||||||||
68 | for (i = 0; i < ngroups
| 0 | ||||||||||||
69 | for (j = 0; j < n
| 0 | ||||||||||||
70 | if (match_pattern(groups_byname[i], groups[j])
| 0 | ||||||||||||
71 | return never executed: 1;return 1; never executed: return 1; | 0 | ||||||||||||
72 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
73 | } | - | ||||||||||||
74 | - | |||||||||||||
75 | - | |||||||||||||
76 | - | |||||||||||||
77 | - | |||||||||||||
78 | - | |||||||||||||
79 | int | - | ||||||||||||
80 | ga_match_pattern_list(const char *group_pattern) | - | ||||||||||||
81 | { | - | ||||||||||||
82 | int i, found = 0; | - | ||||||||||||
83 | - | |||||||||||||
84 | for (i = 0; i < ngroups
| 0 | ||||||||||||
85 | switch (match_pattern_list(groups_byname[i], group_pattern, 0)) { | - | ||||||||||||
86 | case never executed: -1:case -1: never executed: case -1: | 0 | ||||||||||||
87 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||
88 | case never executed: 0:case 0: never executed: case 0: | 0 | ||||||||||||
89 | continue; never executed: continue; | 0 | ||||||||||||
90 | case never executed: 1:case 1: never executed: case 1: | 0 | ||||||||||||
91 | found = 1; | - | ||||||||||||
92 | } never executed: end of block | 0 | ||||||||||||
93 | } never executed: end of block | 0 | ||||||||||||
94 | return never executed: found;return found; never executed: return found; | 0 | ||||||||||||
95 | } | - | ||||||||||||
96 | - | |||||||||||||
97 | - | |||||||||||||
98 | - | |||||||||||||
99 | - | |||||||||||||
100 | void | - | ||||||||||||
101 | ga_free(void) | - | ||||||||||||
102 | { | - | ||||||||||||
103 | int i; | - | ||||||||||||
104 | - | |||||||||||||
105 | if (ngroups > 0
| 0 | ||||||||||||
106 | for (i = 0; i < ngroups
| 0 | ||||||||||||
107 | free(groups_byname[i]); never executed: free(groups_byname[i]); | 0 | ||||||||||||
108 | ngroups = 0; | - | ||||||||||||
109 | free(groups_byname); | - | ||||||||||||
110 | groups_byname = | - | ||||||||||||
111 | ((void *)0) | - | ||||||||||||
112 | ; | - | ||||||||||||
113 | } never executed: end of block | 0 | ||||||||||||
114 | } never executed: end of block | 0 | ||||||||||||
Switch to Source code | Preprocessed file |