summaryrefslogtreecommitdiffstats
path: root/lib/libc/gen/getcap.c
diff options
context:
space:
mode:
authoralfred <alfred@FreeBSD.org>2002-12-27 08:43:40 +0000
committeralfred <alfred@FreeBSD.org>2002-12-27 08:43:40 +0000
commit2078a4c77423804ba74b5d67e5690f82a3f99a51 (patch)
treec50bb9234c46b1ad3cd293822d61c9c94dcdfa2b /lib/libc/gen/getcap.c
parent8c99fb48c77891dd9847117ad025ce08215e71fd (diff)
downloadFreeBSD-src-2078a4c77423804ba74b5d67e5690f82a3f99a51.zip
FreeBSD-src-2078a4c77423804ba74b5d67e5690f82a3f99a51.tar.gz
Silence casting away constness warnings.
Make cgetmatch's locals const. Make cdbget take a const string and copy it into a buffer.
Diffstat (limited to 'lib/libc/gen/getcap.c')
-rw-r--r--lib/libc/gen/getcap.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/libc/gen/getcap.c b/lib/libc/gen/getcap.c
index a0e9803..3dbcd37 100644
--- a/lib/libc/gen/getcap.c
+++ b/lib/libc/gen/getcap.c
@@ -69,7 +69,7 @@ static size_t topreclen; /* toprec length */
static char *toprec; /* Additional record specified by cgetset() */
static int gottoprec; /* Flag indicating retrieval of toprecord */
-static int cdbget(DB *, char **, char *);
+static int cdbget(DB *, char **, const char *);
static int getent(char **, u_int *, char **, int, const char *, int, char *);
static int nfcmp(char *, char *);
@@ -533,19 +533,25 @@ tc_exp: {
}
static int
-cdbget(DB *capdbp, char **bp, char *name)
+cdbget(DB *capdbp, char **bp, const char *name)
{
DBT key, data;
+ char *namebuf;
- key.data = name;
- key.size = strlen(name);
+ namebuf = strdup(name);
+ if (namebuf == NULL)
+ return (-2);
+ key.data = namebuf;
+ key.size = strlen(namebuf);
for (;;) {
/* Get the reference. */
switch(capdbp->get(capdbp, &key, &data, 0)) {
case -1:
+ free(namebuf);
return (-2);
case 1:
+ free(namebuf);
return (-1);
}
@@ -558,6 +564,7 @@ cdbget(DB *capdbp, char **bp, char *name)
}
*bp = (char *)data.data + 1;
+ free(namebuf);
return (((char *)(data.data))[0] == TCERR ? 1 : 0);
}
@@ -568,7 +575,7 @@ cdbget(DB *capdbp, char **bp, char *name)
int
cgetmatch(const char *buf, const char *name)
{
- char *np, *bp;
+ const char *np, *bp;
/*
* Start search at beginning of record.
OpenPOWER on IntegriCloud