static struct response *next = NULL;
static int
-saveit (int instatus, char *inkey, int inkeylen, char *inval,
+saveit (int instatus, char *inkey, int inkeylen, char *inval,
int invallen, char *indata)
{
if (instatus != YP_TRUE)
strncpy (next->val, inval, invallen);
next->val[invallen] = '\0';
}
-
+
return 0;
}
char *domainname;
struct ypall_callback ypcb;
enum nss_status status;
-
+
yp_get_default_domain (&domainname);
-
+
while (start != NULL)
{
if (start->val != NULL)
free (next);
}
start = NULL;
-
+
ypcb.foreach = saveit;
ypcb.data = NULL;
status = yperr2nss (yp_all (domainname, "protocols.bynumber", &ypcb));
next = start;
-
+
return status;
}
}
start = NULL;
next = NULL;
-
+
__libc_lock_unlock (lock);
-
+
return NSS_STATUS_SUCCESS;
}
do
{
char *p;
-
+
if (next == NULL)
return NSS_STATUS_NOTFOUND;
- p = strcpy (buffer, next->val);
+ p = strncpy (buffer, next->val, buflen);
next = next->next;
-
+
while (isspace (*p))
++p;
return NSS_STATUS_TRYAGAIN;
}
while (!parse_res);
-
+
return NSS_STATUS_SUCCESS;
}