diff options
author | Ulrich Drepper <drepper@redhat.com> | 1997-12-21 21:18:27 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1997-12-21 21:18:27 +0000 |
commit | 2a4bf7e797a47070e85959dae2fdd4d69fac5abc (patch) | |
tree | 76ce935cfabde651ab7bfbf1b2a47491db58a553 | |
parent | 1d806c1fb9fdc83d351eb2e988ffc3b0ab85aeb3 (diff) |
(internal_nis_getrpcent_r): Use strncpy instead of strcpy for
security reasons.
-rw-r--r-- | nis/nss_nis/nis-rpc.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/nis/nss_nis/nis-rpc.c b/nis/nss_nis/nis-rpc.c index c4c9135e3f..c4e04cd431 100644 --- a/nis/nss_nis/nis-rpc.c +++ b/nis/nss_nis/nis-rpc.c @@ -51,7 +51,7 @@ typedef struct intern_t intern_t; static intern_t intern = {NULL, 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) { intern_t *intern = (intern_t *)indata; @@ -76,7 +76,7 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval, strncpy (intern->next->val, inval, invallen); intern->next->val[invallen] = '\0'; } - + return 0; } @@ -86,10 +86,10 @@ internal_nis_setrpcent (intern_t *intern) char *domainname; struct ypall_callback ypcb; enum nss_status status; - + if (yp_get_default_domain (&domainname)) return NSS_STATUS_UNAVAIL; - + while (intern->start != NULL) { if (intern->start->val != NULL) @@ -134,7 +134,7 @@ internal_nis_endrpcent (intern_t *intern) free (intern->next); } intern->start = NULL; - + return NSS_STATUS_SUCCESS; } @@ -159,26 +159,26 @@ internal_nis_getrpcent_r (struct rpcent *rpc, char *buffer, size_t buflen, struct parser_data *pdata = (void *) buffer; int parse_res; char *p; - + if (data->start == NULL) internal_nis_setrpcent (data); - + /* Get the next entry until we found a correct one. */ do { if (data->next == NULL) return NSS_STATUS_NOTFOUND; - p = strcpy (buffer, data->next->val); + p = strncpy (buffer, data->next->val, buflen); data->next = data->next->next; while (isspace (*p)) ++p; - + parse_res = _nss_files_parse_rpcent (p, rpc, pdata, buflen); if (!parse_res && errno == ERANGE) return NSS_STATUS_TRYAGAIN; } while (!parse_res); - + return NSS_STATUS_SUCCESS; } |