From 74a5d0069d710c4640b78810b7bd7a4f21c43d9d Mon Sep 17 00:00:00 2001 From: David Nugent Date: Tue, 7 Jan 1997 16:28:12 +0000 Subject: Various bugfixes. --- libutil/login_cap.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'libutil') diff --git a/libutil/login_cap.c b/libutil/login_cap.c index b4566cc..961f539 100644 --- a/libutil/login_cap.c +++ b/libutil/login_cap.c @@ -21,7 +21,7 @@ * * Low-level routines relating to the user capabilities database * - * $Id: login_cap.c,v 1.2 1997/01/07 13:29:21 davidn Exp $ + * $Id: login_cap.c,v 1.3 1997/01/07 13:32:04 davidn Exp $ */ #include @@ -56,8 +56,8 @@ allocstr(char * str) char * p; size_t sz = strlen(str) + 1; /* realloc() only if necessary */ if (sz <= internal_stringsz) - p = internal_string; - else if ((p = realloc(internal_string, sz)) != NULL) { + p = strcpy(internal_string, str); + else if ((p = realloc(internal_string, sz)) != NULL) { internal_stringsz = sz; internal_string = strcpy(p, str); } @@ -95,7 +95,9 @@ arrayize(char *str, const char *chars, int *size) for (i = 0, ptr = str; *ptr; i++) { int count = strcspn(ptr, chars); - ptr = ptr + count + 1; + ptr += count; + if (*ptr) + ++ptr; } if ((ptr = allocstr(str)) == NULL) { @@ -215,7 +217,7 @@ login_cap_t * login_getclass(const struct passwd *pwd) { const char * class = NULL; - if (pwd == NULL) { + if (pwd != NULL) { if ((class = pwd->pw_class) == NULL || *class == '\0') class = (pwd->pw_uid == 0) ? "root" : NULL; } @@ -301,11 +303,13 @@ login_getcaplist(login_cap_t *lc, const char * cap, const char * chars) char * login_getpath(login_cap_t *lc, const char *cap, char * error) { - char *ptr, *str = login_getcapstr(lc, (char*)cap, NULL, NULL); + char *str = login_getcapstr(lc, (char*)cap, NULL, NULL); - if (str == NULL || (ptr = allocstr(str)) == NULL) + if (str == NULL) str = error; else { + char *ptr = str; + while (*ptr) { int count = strcspn(ptr, ", \t"); ptr += count; -- cgit v1.2.3-56-ge451