diff options
Diffstat (limited to 'usr/src/lib/libdevinfo')
| -rw-r--r-- | usr/src/lib/libdevinfo/devinfo_devlink.c | 16 | ||||
| -rw-r--r-- | usr/src/lib/libdevinfo/devinfo_devperm.c | 11 |
2 files changed, 5 insertions, 22 deletions
diff --git a/usr/src/lib/libdevinfo/devinfo_devlink.c b/usr/src/lib/libdevinfo/devinfo_devlink.c index f020e8f8a4..5417b88bc3 100644 --- a/usr/src/lib/libdevinfo/devinfo_devlink.c +++ b/usr/src/lib/libdevinfo/devinfo_devlink.c @@ -2405,7 +2405,7 @@ do_recurse( struct stat sbuf; char cur[PATH_MAX], *cp; int i, rv = DI_WALK_CONTINUE; - struct dirent *entp, *result; + struct dirent *entp; if ((rel = rel_path(hdp, dir)) == NULL) @@ -2427,23 +2427,12 @@ do_recurse( if ((dp = opendir(dir)) == NULL) return (DI_WALK_CONTINUE); - entp = malloc(sizeof (struct dirent) + PATH_MAX + 1); - if (entp == NULL) { - SET_DB_ERR(hdp); - (void) closedir(dp); - *retp = -1; - return (DI_WALK_TERMINATE); - } - (void) snprintf(cur, sizeof (cur), "%s/", dir); len = strlen(cur); cp = cur + len; len = sizeof (cur) - len; - while (readdir_r(dp, entp, &result) == 0) { - - if (result == NULL) - break; + while ((entp = readdir(dp)) != NULL) { if (strcmp(entp->d_name, ".") == 0 || strcmp(entp->d_name, "..") == 0) { @@ -2486,7 +2475,6 @@ next_entry: break; } - free(entp); (void) closedir(dp); return (rv); diff --git a/usr/src/lib/libdevinfo/devinfo_devperm.c b/usr/src/lib/libdevinfo/devinfo_devperm.c index ef5ca55c48..b89544510a 100644 --- a/usr/src/lib/libdevinfo/devinfo_devperm.c +++ b/usr/src/lib/libdevinfo/devinfo_devperm.c @@ -26,7 +26,7 @@ #pragma ident "%Z%%M% %I% %E% SMI" -#define _POSIX_PTHREAD_SEMANTICS /* for readdir_r */ +#define _POSIX_PTHREAD_SEMANTICS /* for getgrnam_r */ #ifdef lint #define _REENTRANT /* for strtok_r */ #endif @@ -39,7 +39,6 @@ #include <errno.h> #include <grp.h> #include <pwd.h> -#include <alloca.h> #include <nss_dbdefs.h> #include <stdarg.h> #include <syslog.h> @@ -375,7 +374,7 @@ dir_dev_acc(char *path, char *left_to_do, uid_t uid, gid_t gid, mode_t mode, struct stat stat_buf; int err = 0; DIR *dirp; - struct dirent *direntp, *result; + struct dirent *direntp; /* path must be a valid name */ if (stat(path, &stat_buf) == -1) { @@ -433,11 +432,7 @@ dir_dev_acc(char *path, char *left_to_do, uid_t uid, gid_t gid, mode_t mode, } } - direntp = alloca(sizeof (struct dirent) + MAXPATHLEN); - while (readdir_r(dirp, direntp, &result) == 0) { - if (result == NULL) - break; - + while ((direntp = readdir(dirp)) != NULL) { name = direntp->d_name; if ((strcmp(name, ".") == 0) || (strcmp(name, "..") == 0)) |
