OpenCoverage

groupaccess.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssh/src/groupaccess.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7static int ngroups;-
8static char **groups_byname;-
9-
10-
11-
12-
13-
14int-
15ga_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
ngroups > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
22 ga_free();
never executed: ga_free();
0
23-
24 ngroups = -
25 65536-
26 ;-
27-
28 ngroups = -
29 (((
((65536)>( sys...ROUPS_MAX ) ))Description
TRUEnever evaluated
FALSEnever evaluated
65536)>(
((65536)>( sys...ROUPS_MAX ) ))Description
TRUEnever evaluated
FALSEnever evaluated
0
30 sysconf(
((65536)>( sys...ROUPS_MAX ) ))Description
TRUEnever evaluated
FALSEnever evaluated
0
31 _SC_NGROUPS_MAX
((65536)>( sys...ROUPS_MAX ) ))Description
TRUEnever evaluated
FALSEnever evaluated
0
32 )
((65536)>( sys...ROUPS_MAX ) ))Description
TRUEnever evaluated
FALSEnever evaluated
0
33 ))
((65536)>( sys...ROUPS_MAX ) ))Description
TRUEnever evaluated
FALSEnever evaluated
?(65536):(
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
getgrouplist(u...ngroups) == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
43 if (retry++ > 0
retry++ > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
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
i < ngroupsDescription
TRUEnever evaluated
FALSEnever evaluated
; i++)
0
51 if ((
(gr = getgrgid...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
gr = getgrgid(groups_bygid[i])) !=
(gr = getgrgid...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
52 ((void *)0)
(gr = getgrgid...!= ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
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: return (ngroups = j);
(ngroups = j);
never executed: return (ngroups = j);
0
57}-
58-
59-
60-
61-
62-
63int-
64ga_match(char * const *groups, int n)-
65{-
66 int i, j;-
67-
68 for (i = 0; i < ngroups
i < ngroupsDescription
TRUEnever evaluated
FALSEnever evaluated
; i++)
0
69 for (j = 0; j < n
j < nDescription
TRUEnever evaluated
FALSEnever evaluated
; j++)
0
70 if (match_pattern(groups_byname[i], groups[j])
match_pattern(...i], groups[j])Description
TRUEnever evaluated
FALSEnever evaluated
)
0
71 return
never executed: return 1;
1;
never executed: return 1;
0
72 return
never executed: return 0;
0;
never executed: return 0;
0
73}-
74-
75-
76-
77-
78-
79int-
80ga_match_pattern_list(const char *group_pattern)-
81{-
82 int i, found = 0;-
83-
84 for (i = 0; i < ngroups
i < ngroupsDescription
TRUEnever evaluated
FALSEnever evaluated
; i++) {
0
85 switch (match_pattern_list(groups_byname[i], group_pattern, 0)) {-
86 case
never executed: case -1:
-1:
never executed: case -1:
0
87 return
never executed: return 0;
0;
never executed: return 0;
0
88 case
never executed: case 0:
0:
never executed: case 0:
0
89 continue;
never executed: continue;
0
90 case
never executed: case 1:
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: return found;
found;
never executed: return found;
0
95}-
96-
97-
98-
99-
100void-
101ga_free(void)-
102{-
103 int i;-
104-
105 if (ngroups > 0
ngroups > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
106 for (i = 0; i < ngroups
i < ngroupsDescription
TRUEnever evaluated
FALSEnever evaluated
; i++)
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 codePreprocessed file

Generated by Squish Coco 4.2.2