diff options
Diffstat (limited to 'nis/nss_nisplus/nisplus-parser.c')
-rw-r--r-- | nis/nss_nisplus/nisplus-parser.c | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/nis/nss_nisplus/nisplus-parser.c b/nis/nss_nisplus/nisplus-parser.c index e8d1079..7a91992 100644 --- a/nis/nss_nisplus/nisplus-parser.c +++ b/nis/nss_nisplus/nisplus-parser.c @@ -307,7 +307,8 @@ _nss_nisplus_parse_spent (nis_result *result, struct spwd *sp, first_unused += (len + 1); sp->sp_lstchg = sp->sp_min = sp->sp_max = sp->sp_warn = sp->sp_inact = - sp->sp_expire = sp->sp_flag = -1; + sp->sp_expire = -1; + sp->sp_flag = ~0ul; if (NISENTRYLEN (0, 7, result) > 0) { @@ -316,49 +317,56 @@ _nss_nisplus_parse_spent (nis_result *result, struct spwd *sp, line = NISENTRYVAL (0, 7, result); cp = strchr (line, ':'); if (cp == NULL) - return 0; + return 1; *cp++ = '\0'; - sp->sp_lstchg = atol (line); + if (*line) + sp->sp_lstchg = atol (line); line = cp; cp = strchr (line, ':'); if (cp == NULL) - return 0; + return 1; *cp++ = '\0'; - sp->sp_min = atol (line); + if (*line) + sp->sp_min = atol (line); line = cp; cp = strchr (line, ':'); if (cp == NULL) - return 0; + return 1; *cp++ = '\0'; - sp->sp_max = atol (line); + if (*line) + sp->sp_max = atol (line); line = cp; cp = strchr (line, ':'); if (cp == NULL) - return 0; + return 1; *cp++ = '\0'; - sp->sp_warn = atol (line); + if (*line) + sp->sp_warn = atol (line); line = cp; cp = strchr (line, ':'); if (cp == NULL) - return 0; + return 1; *cp++ = '\0'; - sp->sp_inact = atol (line); + if (*line) + sp->sp_inact = atol (line); line = cp; cp = strchr (line, ':'); if (cp == NULL) - return 0; + return 1; *cp++ = '\0'; - sp->sp_expire = atol (line); + if (*line) + sp->sp_expire = atol (line); line = cp; if (line == NULL) - return 0; - sp->sp_flag = atol (line); + return 1; + if (*line) + sp->sp_flag = atol (line); } return 1; |