OpenCoverage

pwcache.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssh/src/openbsd-compat/pwcache.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: pwcache.c,v 1.9 2005/08/08 08:05:34 espie Exp $ */-
2/*-
3 * Copyright (c) 1989, 1993-
4 * The Regents of the University of California. All rights reserved.-
5 *-
6 * Redistribution and use in source and binary forms, with or without-
7 * modification, are permitted provided that the following conditions-
8 * are met:-
9 * 1. Redistributions of source code must retain the above copyright-
10 * notice, this list of conditions and the following disclaimer.-
11 * 2. Redistributions in binary form must reproduce the above copyright-
12 * notice, this list of conditions and the following disclaimer in the-
13 * documentation and/or other materials provided with the distribution.-
14 * 3. Neither the name of the University nor the names of its contributors-
15 * may be used to endorse or promote products derived from this software-
16 * without specific prior written permission.-
17 *-
18 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND-
19 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE-
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE-
21 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE-
22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL-
23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS-
24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)-
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT-
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY-
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF-
28 * SUCH DAMAGE.-
29 */-
30-
31/* OPENBSD ORIGINAL: lib/libc/gen/pwcache.c */-
32-
33#include "includes.h"-
34-
35#include <sys/types.h>-
36-
37#include <grp.h>-
38#include <pwd.h>-
39#include <stdio.h>-
40#include <stdlib.h>-
41#include <string.h>-
42-
43#define NCACHE 64 /* power of 2 */-
44#define MASK (NCACHE - 1) /* bits to store with */-
45-
46#ifndef HAVE_USER_FROM_UID-
47char *-
48user_from_uid(uid_t uid, int nouser)-
49{-
50 static struct ncache {-
51 uid_t uid;-
52 char *name;-
53 } c_uid[NCACHE];-
54 static int pwopen;-
55 static char nbuf[15]; /* 32 bits == 10 digits */-
56 struct passwd *pw;-
57 struct ncache *cp;-
58-
59 cp = c_uid + (uid & MASK);-
60 if (cp->uid != uid || cp->name == NULL) {
cp->uid != uidDescription
TRUEnever evaluated
FALSEnever evaluated
cp->name == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
61 if (pwopen == 0) {
pwopen == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
62#ifdef HAVE_SETPASSENT-
63 setpassent(1);-
64#endif-
65 pwopen = 1;-
66 }
never executed: end of block
0
67 if ((pw = getpwuid(uid)) == NULL) {
(pw = getpwuid...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
68 if (nouser)
nouserDescription
TRUEnever evaluated
FALSEnever evaluated
0
69 return (NULL);
never executed: return ( ((void *)0) );
0
70 (void)snprintf(nbuf, sizeof(nbuf), "%u", uid);-
71 }
never executed: end of block
0
72 cp->uid = uid;-
73 if (cp->name != NULL)
cp->name != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
74 free(cp->name);
never executed: free(cp->name);
0
75 cp->name = strdup(pw ? pw->pw_name : nbuf);
never executed: __retval = (char *) memcpy (__retval, pw ? pw->pw_name : nbuf , __len);
__retval != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
pwDescription
TRUEnever evaluated
FALSEnever evaluated
pwDescription
TRUEnever evaluated
FALSEnever evaluated
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
pwDescription
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons..._name : nbuf )Description
TRUEnever evaluated
FALSEnever evaluated
((size_t)(cons...: nbuf ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
76 }
never executed: end of block
0
77 return (cp->name);
never executed: return (cp->name);
0
78}-
79#endif-
80-
81#ifndef HAVE_GROUP_FROM_GID-
82char *-
83group_from_gid(gid_t gid, int nogroup)-
84{-
85 static struct ncache {-
86 gid_t gid;-
87 char *name;-
88 } c_gid[NCACHE];-
89 static int gropen;-
90 static char nbuf[15]; /* 32 bits == 10 digits */-
91 struct group *gr;-
92 struct ncache *cp;-
93-
94 cp = c_gid + (gid & MASK);-
95 if (cp->gid != gid || cp->name == NULL) {
cp->gid != gidDescription
TRUEnever evaluated
FALSEnever evaluated
cp->name == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
96 if (gropen == 0) {
gropen == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
97#ifdef HAVE_SETGROUPENT-
98 setgroupent(1);-
99#endif-
100 gropen = 1;-
101 }
never executed: end of block
0
102 if ((gr = getgrgid(gid)) == NULL) {
(gr = getgrgid...== ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
103 if (nogroup)
nogroupDescription
TRUEnever evaluated
FALSEnever evaluated
0
104 return (NULL);
never executed: return ( ((void *)0) );
0
105 (void)snprintf(nbuf, sizeof(nbuf), "%u", gid);-
106 }
never executed: end of block
0
107 cp->gid = gid;-
108 if (cp->name != NULL)
cp->name != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
0
109 free(cp->name);
never executed: free(cp->name);
0
110 cp->name = strdup(gr ? gr->gr_name : nbuf);
never executed: __retval = (char *) memcpy (__retval, gr ? gr->gr_name : nbuf , __len);
__retval != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
grDescription
TRUEnever evaluated
FALSEnever evaluated
grDescription
TRUEnever evaluated
FALSEnever evaluated
((const char *... ))[0] == '\0'Description
TRUEnever evaluated
FALSEnever evaluated
grDescription
TRUEnever evaluated
FALSEnever evaluated
__builtin_cons..._name : nbuf )Description
TRUEnever evaluated
FALSEnever evaluated
((size_t)(cons...: nbuf ) == 1)Description
TRUEnever evaluated
FALSEnever evaluated
0
111 }
never executed: end of block
0
112 return (cp->name);
never executed: return (cp->name);
0
113}-
114#endif-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2