summaryrefslogtreecommitdiff
path: root/usr/src/lib/nsswitch/files/common/tsol_gettpent.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/nsswitch/files/common/tsol_gettpent.c')
-rw-r--r--usr/src/lib/nsswitch/files/common/tsol_gettpent.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/usr/src/lib/nsswitch/files/common/tsol_gettpent.c b/usr/src/lib/nsswitch/files/common/tsol_gettpent.c
index ae5e9ca2be..dd604a5ee9 100644
--- a/usr/src/lib/nsswitch/files/common/tsol_gettpent.c
+++ b/usr/src/lib/nsswitch/files/common/tsol_gettpent.c
@@ -34,12 +34,20 @@
* "files" backend for nsswitch "tnrhtp" database
*/
static int
-check_name(nss_XbyY_args_t *args)
+check_name(nss_XbyY_args_t *args, const char *line, int linelen)
{
- tsol_tpstr_t *tpstrp = (tsol_tpstr_t *)args->returnval;
- const char *name = args->key.name;
+ const char *limit, *linep, *keyp;
- if (strcmp(tpstrp->template, name) == 0)
+ linep = line;
+ limit = line + linelen;
+ keyp = args->key.name;
+
+ /* compare template name, ':' is the seperator */
+ while (*keyp && linep < limit && *linep != ':' && *keyp == *linep) {
+ keyp++;
+ linep++;
+ }
+ if (*keyp == '\0' && linep < limit && *linep == ':')
return (1);
return (0);
@@ -52,6 +60,9 @@ getbyname(be, a)
{
nss_XbyY_args_t *argp = (nss_XbyY_args_t *)a;
+ if (argp->key.name == NULL)
+ return (NSS_NOTFOUND);
+
return (_nss_files_XY_all(be, argp, 1, argp->key.name, check_name));
}
@@ -62,8 +73,8 @@ static files_backend_op_t tsol_tp_ops[] = {
_nss_files_getent_netdb,
getbyname
};
-
nss_backend_t *
+/* LINTED E_FUNC_ARG_UNUSED */
_nss_files_tnrhtp_constr(dummy1, dummy2, dummy3)
const char *dummy1, *dummy2, *dummy3;
{