plug possible memory leak. from openbsd
This commit is contained in:
parent
2bfde7f903
commit
0676396691
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: login_cap.c,v 1.11 2001/07/22 13:34:01 wiz Exp $ */
|
/* $NetBSD: login_cap.c,v 1.12 2003/09/08 16:19:40 itojun Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1995,1997 Berkeley Software Design, Inc. All rights reserved.
|
* Copyright (c) 1995,1997 Berkeley Software Design, Inc. All rights reserved.
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#if defined(LIBC_SCCS) && !defined(lint)
|
#if defined(LIBC_SCCS) && !defined(lint)
|
||||||
__RCSID("$NetBSD: login_cap.c,v 1.11 2001/07/22 13:34:01 wiz Exp $");
|
__RCSID("$NetBSD: login_cap.c,v 1.12 2003/09/08 16:19:40 itojun Exp $");
|
||||||
#endif /* LIBC_SCCS and not lint */
|
#endif /* LIBC_SCCS and not lint */
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
@ -168,16 +168,22 @@ login_getcapstr(login_cap_t *lc, char *cap, char *def, char *e)
|
||||||
|
|
||||||
switch (status = cgetstr(lc->lc_cap, cap, &res)) {
|
switch (status = cgetstr(lc->lc_cap, cap, &res)) {
|
||||||
case -1:
|
case -1:
|
||||||
|
if (res)
|
||||||
|
free(res);
|
||||||
return (def);
|
return (def);
|
||||||
case -2:
|
case -2:
|
||||||
syslog(LOG_ERR, "%s: getting capability %s: %m",
|
syslog(LOG_ERR, "%s: getting capability %s: %m",
|
||||||
lc->lc_class, cap);
|
lc->lc_class, cap);
|
||||||
|
if (res)
|
||||||
|
free(res);
|
||||||
return (e);
|
return (e);
|
||||||
default:
|
default:
|
||||||
if (status >= 0)
|
if (status >= 0)
|
||||||
return (res);
|
return (res);
|
||||||
syslog(LOG_ERR, "%s: unexpected error with capability %s",
|
syslog(LOG_ERR, "%s: unexpected error with capability %s",
|
||||||
lc->lc_class, cap);
|
lc->lc_class, cap);
|
||||||
|
if (res)
|
||||||
|
free(res);
|
||||||
return (e);
|
return (e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -198,11 +204,15 @@ login_getcaptime(login_cap_t *lc, char *cap, quad_t def, quad_t e)
|
||||||
|
|
||||||
switch (status = cgetstr(lc->lc_cap, cap, &res)) {
|
switch (status = cgetstr(lc->lc_cap, cap, &res)) {
|
||||||
case -1:
|
case -1:
|
||||||
|
if (res)
|
||||||
|
free(res);
|
||||||
return (def);
|
return (def);
|
||||||
case -2:
|
case -2:
|
||||||
syslog(LOG_ERR, "%s: getting capability %s: %m",
|
syslog(LOG_ERR, "%s: getting capability %s: %m",
|
||||||
lc->lc_class, cap);
|
lc->lc_class, cap);
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
|
if (res)
|
||||||
|
free(res);
|
||||||
return (e);
|
return (e);
|
||||||
default:
|
default:
|
||||||
if (status >= 0)
|
if (status >= 0)
|
||||||
|
@ -210,6 +220,8 @@ login_getcaptime(login_cap_t *lc, char *cap, quad_t def, quad_t e)
|
||||||
syslog(LOG_ERR, "%s: unexpected error with capability %s",
|
syslog(LOG_ERR, "%s: unexpected error with capability %s",
|
||||||
lc->lc_class, cap);
|
lc->lc_class, cap);
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
|
if (res)
|
||||||
|
free(res);
|
||||||
return (e);
|
return (e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,6 +240,7 @@ invalid:
|
||||||
syslog(LOG_ERR, "%s:%s=%s: invalid time",
|
syslog(LOG_ERR, "%s:%s=%s: invalid time",
|
||||||
lc->lc_class, cap, sres);
|
lc->lc_class, cap, sres);
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
|
free(sres);
|
||||||
return (e);
|
return (e);
|
||||||
}
|
}
|
||||||
switch (*ep++) {
|
switch (*ep++) {
|
||||||
|
@ -257,6 +270,7 @@ invalid:
|
||||||
res = ep;
|
res = ep;
|
||||||
q += r;
|
q += r;
|
||||||
}
|
}
|
||||||
|
free(sres);
|
||||||
return (q);
|
return (q);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -276,11 +290,15 @@ login_getcapnum(login_cap_t *lc, char *cap, quad_t def, quad_t e)
|
||||||
|
|
||||||
switch (status = cgetstr(lc->lc_cap, cap, &res)) {
|
switch (status = cgetstr(lc->lc_cap, cap, &res)) {
|
||||||
case -1:
|
case -1:
|
||||||
|
if (res)
|
||||||
|
free(res);
|
||||||
return (def);
|
return (def);
|
||||||
case -2:
|
case -2:
|
||||||
syslog(LOG_ERR, "%s: getting capability %s: %m",
|
syslog(LOG_ERR, "%s: getting capability %s: %m",
|
||||||
lc->lc_class, cap);
|
lc->lc_class, cap);
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
|
if (res)
|
||||||
|
free(res);
|
||||||
return (e);
|
return (e);
|
||||||
default:
|
default:
|
||||||
if (status >= 0)
|
if (status >= 0)
|
||||||
|
@ -288,6 +306,8 @@ login_getcapnum(login_cap_t *lc, char *cap, quad_t def, quad_t e)
|
||||||
syslog(LOG_ERR, "%s: unexpected error with capability %s",
|
syslog(LOG_ERR, "%s: unexpected error with capability %s",
|
||||||
lc->lc_class, cap);
|
lc->lc_class, cap);
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
|
if (res)
|
||||||
|
free(res);
|
||||||
return (e);
|
return (e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,8 +321,10 @@ login_getcapnum(login_cap_t *lc, char *cap, quad_t def, quad_t e)
|
||||||
syslog(LOG_ERR, "%s:%s=%s: invalid number",
|
syslog(LOG_ERR, "%s:%s=%s: invalid number",
|
||||||
lc->lc_class, cap, res);
|
lc->lc_class, cap, res);
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
|
free(res);
|
||||||
return (e);
|
return (e);
|
||||||
}
|
}
|
||||||
|
free(res);
|
||||||
return (q);
|
return (q);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -323,11 +345,15 @@ login_getcapsize(login_cap_t *lc, char *cap, quad_t def, quad_t e)
|
||||||
|
|
||||||
switch (status = cgetstr(lc->lc_cap, cap, &res)) {
|
switch (status = cgetstr(lc->lc_cap, cap, &res)) {
|
||||||
case -1:
|
case -1:
|
||||||
|
if (res)
|
||||||
|
free(res);
|
||||||
return (def);
|
return (def);
|
||||||
case -2:
|
case -2:
|
||||||
syslog(LOG_ERR, "%s: getting capability %s: %m",
|
syslog(LOG_ERR, "%s: getting capability %s: %m",
|
||||||
lc->lc_class, cap);
|
lc->lc_class, cap);
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
|
if (res)
|
||||||
|
free(res);
|
||||||
return (e);
|
return (e);
|
||||||
default:
|
default:
|
||||||
if (status >= 0)
|
if (status >= 0)
|
||||||
|
@ -335,6 +361,8 @@ login_getcapsize(login_cap_t *lc, char *cap, quad_t def, quad_t e)
|
||||||
syslog(LOG_ERR, "%s: unexpected error with capability %s",
|
syslog(LOG_ERR, "%s: unexpected error with capability %s",
|
||||||
lc->lc_class, cap);
|
lc->lc_class, cap);
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
|
if (res)
|
||||||
|
free(res);
|
||||||
return (e);
|
return (e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -345,8 +373,10 @@ login_getcapsize(login_cap_t *lc, char *cap, quad_t def, quad_t e)
|
||||||
syslog(LOG_ERR, "%s:%s=%s: invalid size",
|
syslog(LOG_ERR, "%s:%s=%s: invalid size",
|
||||||
lc->lc_class, cap, res);
|
lc->lc_class, cap, res);
|
||||||
errno = ERANGE;
|
errno = ERANGE;
|
||||||
|
free(res);
|
||||||
return (e);
|
return (e);
|
||||||
}
|
}
|
||||||
|
free(res);
|
||||||
return (q);
|
return (q);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue