| 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 |