| Line | Source | Count |
| 1 | | - |
| 2 | | - |
| 3 | | - |
| 4 | | - |
| 5 | | - |
| 6 | | - |
| 7 | | - |
| 8 | | - |
| 9 | | - |
| 10 | | - |
| 11 | | - |
| 12 | | - |
| 13 | | - |
| 14 | | - |
| 15 | | - |
| 16 | | - |
| 17 | | - |
| 18 | | - |
| 19 | #include <config.h> | - |
| 20 | | - |
| 21 | #include "idcache.h" | - |
| 22 | #include <stddef.h> | - |
| 23 | #include <stdio.h> | - |
| 24 | #include <string.h> | - |
| 25 | #include <pwd.h> | - |
| 26 | #include <grp.h> | - |
| 27 | | - |
| 28 | #include <unistd.h> | - |
| 29 | | - |
| 30 | #include "flexmember.h" | - |
| 31 | #include "xalloc.h" | - |
| 32 | | - |
| 33 | #ifdef __DJGPP__ | - |
| 34 | static char digits[] = "0123456789"; | - |
| 35 | #endif | - |
| 36 | | - |
| 37 | struct userid | - |
| 38 | { | - |
| 39 | union | - |
| 40 | { | - |
| 41 | uid_t u; | - |
| 42 | gid_t g; | - |
| 43 | } id; | - |
| 44 | struct userid *next; | - |
| 45 | char name[FLEXIBLE_ARRAY_MEMBER]; | - |
| 46 | }; | - |
| 47 | | - |
| 48 | | - |
| 49 | | - |
| 50 | | - |
| 51 | | - |
| 52 | | - |
| 53 | | - |
| 54 | | - |
| 55 | static struct userid *user_alist; | - |
| 56 | | - |
| 57 | | - |
| 58 | static struct userid *nouser_alist; | - |
| 59 | | - |
| 60 | | - |
| 61 | static struct userid *group_alist; | - |
| 62 | | - |
| 63 | | - |
| 64 | static struct userid *nogroup_alist; | - |
| 65 | | - |
| 66 | | - |
| 67 | | - |
| 68 | char * | - |
| 69 | getuser (uid_t uid) | - |
| 70 | { | - |
| 71 | struct userid *tail; | - |
| 72 | struct userid *match = NULL; | - |
| 73 | | - |
| 74 | for (tail = user_alist; tail; tail = tail->next)| TRUE | evaluated 39 times by 2 tests | | FALSE | evaluated 13 times by 2 tests |
| 13-39 |
| 75 | { | - |
| 76 | if (tail->id.u == uid)| TRUE | evaluated 39 times by 2 tests | | FALSE | never evaluated |
| 0-39 |
| 77 | { | - |
| 78 | match = tail; | - |
| 79 | break;executed 39 times by 2 tests: break; | 39 |
| 80 | } | - |
| 81 | } never executed: end of block | 0 |
| 82 | | - |
| 83 | if (match == NULL)| TRUE | evaluated 13 times by 2 tests | | FALSE | evaluated 39 times by 2 tests |
| 13-39 |
| 84 | { | - |
| 85 | struct passwd *pwent = getpwuid (uid); | - |
| 86 | char const *name = pwent ? pwent->pw_name : "";| TRUE | evaluated 13 times by 2 tests | | FALSE | never evaluated |
| 0-13 |
| 87 | match = xmalloc (FLEXSIZEOF (struct userid, name, strlen (name) + 1)); | - |
| 88 | match->id.u = uid; | - |
| 89 | strcpy (match->name, name); | - |
| 90 | | - |
| 91 | | - |
| 92 | match->next = user_alist; | - |
| 93 | user_alist = match; | - |
| 94 | }executed 13 times by 2 tests: end of block | 13 |
| 95 | | - |
| 96 | return match->name[0] ? match->name : NULL;executed 52 times by 2 tests: return match->name[0] ? match->name : ((void *)0) ; | 52 |
| 97 | } | - |
| 98 | | - |
| 99 | | - |
| 100 | | - |
| 101 | | - |
| 102 | | - |
| 103 | | - |
| 104 | uid_t * | - |
| 105 | getuidbyname (const char *user) | - |
| 106 | { | - |
| 107 | struct userid *tail; | - |
| 108 | struct passwd *pwent; | - |
| 109 | | - |
| 110 | for (tail = user_alist; tail; tail = tail->next)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 111 | | - |
| 112 | if (*tail->name == *user && !strcmp (tail->name, user)) never executed: __result = (((const unsigned char *) (const char *) ( tail->name ))[3] - __s2[3]); never executed: end of block never executed: end of block never executed: __result = (((const unsigned char *) (const char *) ( user ))[3] - __s2[3]); never executed: end of block never executed: end of block | TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 113 | return &tail->id.u; never executed: return &tail->id.u; | 0 |
| 114 | | - |
| 115 | for (tail = nouser_alist; tail; tail = tail->next)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 116 | | - |
| 117 | if (*tail->name == *user && !strcmp (tail->name, user)) never executed: __result = (((const unsigned char *) (const char *) ( tail->name ))[3] - __s2[3]); never executed: end of block never executed: end of block never executed: __result = (((const unsigned char *) (const char *) ( user ))[3] - __s2[3]); never executed: end of block never executed: end of block | TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 118 | return NULL; never executed: return ((void *)0) ; | 0 |
| 119 | | - |
| 120 | pwent = getpwnam (user); | - |
| 121 | #ifdef __DJGPP__ | - |
| 122 | | - |
| 123 | | - |
| 124 | if (!pwent && strspn (user, digits) < strlen (user)) | - |
| 125 | { | - |
| 126 | setenv ("USER", user, 1); | - |
| 127 | pwent = getpwnam (user); | - |
| 128 | } | - |
| 129 | #endif | - |
| 130 | | - |
| 131 | tail = xmalloc (FLEXSIZEOF (struct userid, name, strlen (user) + 1)); | - |
| 132 | strcpy (tail->name, user); | - |
| 133 | | - |
| 134 | | - |
| 135 | if (pwent)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 136 | { | - |
| 137 | tail->id.u = pwent->pw_uid; | - |
| 138 | tail->next = user_alist; | - |
| 139 | user_alist = tail; | - |
| 140 | return &tail->id.u; never executed: return &tail->id.u; | 0 |
| 141 | } | - |
| 142 | | - |
| 143 | tail->next = nouser_alist; | - |
| 144 | nouser_alist = tail; | - |
| 145 | return NULL; never executed: return ((void *)0) ; | 0 |
| 146 | } | - |
| 147 | | - |
| 148 | | - |
| 149 | | - |
| 150 | char * | - |
| 151 | getgroup (gid_t gid) | - |
| 152 | { | - |
| 153 | struct userid *tail; | - |
| 154 | struct userid *match = NULL; | - |
| 155 | | - |
| 156 | for (tail = group_alist; tail; tail = tail->next)| TRUE | evaluated 31 times by 2 tests | | FALSE | evaluated 5 times by 2 tests |
| 5-31 |
| 157 | { | - |
| 158 | if (tail->id.g == gid)| TRUE | evaluated 31 times by 2 tests | | FALSE | never evaluated |
| 0-31 |
| 159 | { | - |
| 160 | match = tail; | - |
| 161 | break;executed 31 times by 2 tests: break; | 31 |
| 162 | } | - |
| 163 | } never executed: end of block | 0 |
| 164 | | - |
| 165 | if (match == NULL)| TRUE | evaluated 5 times by 2 tests | | FALSE | evaluated 31 times by 2 tests |
| 5-31 |
| 166 | { | - |
| 167 | struct group *grent = getgrgid (gid); | - |
| 168 | char const *name = grent ? grent->gr_name : "";| TRUE | evaluated 5 times by 2 tests | | FALSE | never evaluated |
| 0-5 |
| 169 | match = xmalloc (FLEXSIZEOF (struct userid, name, strlen (name) + 1)); | - |
| 170 | match->id.g = gid; | - |
| 171 | strcpy (match->name, name); | - |
| 172 | | - |
| 173 | | - |
| 174 | match->next = group_alist; | - |
| 175 | group_alist = match; | - |
| 176 | }executed 5 times by 2 tests: end of block | 5 |
| 177 | | - |
| 178 | return match->name[0] ? match->name : NULL;executed 36 times by 2 tests: return match->name[0] ? match->name : ((void *)0) ; | 36 |
| 179 | } | - |
| 180 | | - |
| 181 | | - |
| 182 | | - |
| 183 | | - |
| 184 | | - |
| 185 | | - |
| 186 | gid_t * | - |
| 187 | getgidbyname (const char *group) | - |
| 188 | { | - |
| 189 | struct userid *tail; | - |
| 190 | struct group *grent; | - |
| 191 | | - |
| 192 | for (tail = group_alist; tail; tail = tail->next)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 193 | | - |
| 194 | if (*tail->name == *group && !strcmp (tail->name, group)) never executed: __result = (((const unsigned char *) (const char *) ( tail->name ))[3] - __s2[3]); never executed: end of block never executed: end of block never executed: __result = (((const unsigned char *) (const char *) ( group ))[3] - __s2[3]); never executed: end of block never executed: end of block | TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 195 | return &tail->id.g; never executed: return &tail->id.g; | 0 |
| 196 | | - |
| 197 | for (tail = nogroup_alist; tail; tail = tail->next)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 198 | | - |
| 199 | if (*tail->name == *group && !strcmp (tail->name, group)) never executed: __result = (((const unsigned char *) (const char *) ( tail->name ))[3] - __s2[3]); never executed: end of block never executed: end of block never executed: __result = (((const unsigned char *) (const char *) ( group ))[3] - __s2[3]); never executed: end of block never executed: end of block | TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 200 | return NULL; never executed: return ((void *)0) ; | 0 |
| 201 | | - |
| 202 | grent = getgrnam (group); | - |
| 203 | #ifdef __DJGPP__ | - |
| 204 | | - |
| 205 | | - |
| 206 | if (!grent && strspn (group, digits) < strlen (group)) | - |
| 207 | { | - |
| 208 | setenv ("GROUP", group, 1); | - |
| 209 | grent = getgrnam (group); | - |
| 210 | } | - |
| 211 | #endif | - |
| 212 | | - |
| 213 | tail = xmalloc (FLEXSIZEOF (struct userid, name, strlen (group) + 1)); | - |
| 214 | strcpy (tail->name, group); | - |
| 215 | | - |
| 216 | | - |
| 217 | if (grent)| TRUE | never evaluated | | FALSE | never evaluated |
| 0 |
| 218 | { | - |
| 219 | tail->id.g = grent->gr_gid; | - |
| 220 | tail->next = group_alist; | - |
| 221 | group_alist = tail; | - |
| 222 | return &tail->id.g; never executed: return &tail->id.g; | 0 |
| 223 | } | - |
| 224 | | - |
| 225 | tail->next = nogroup_alist; | - |
| 226 | nogroup_alist = tail; | - |
| 227 | return NULL; never executed: return ((void *)0) ; | 0 |
| 228 | } | - |
| | |