svn commit: r356829 - head/lib/libc/gen
Mateusz Guzik
mjg at FreeBSD.org
Fri Jan 17 14:40:10 UTC 2020
Author: mjg
Date: Fri Jan 17 14:40:09 2020
New Revision: 356829
URL: https://svnweb.freebsd.org/changeset/base/356829
Log:
libc: assume no union stack if fstatfs fails in readdir
The failure is not really expected, but should it happen it's better to
get some data.
Suggested by: kib
Modified:
head/lib/libc/gen/opendir.c
Modified: head/lib/libc/gen/opendir.c
==============================================================================
--- head/lib/libc/gen/opendir.c Fri Jan 17 14:39:00 2020 (r356828)
+++ head/lib/libc/gen/opendir.c Fri Jan 17 14:40:09 2020 (r356829)
@@ -283,7 +283,7 @@ __opendir_common(int fd, int flags, bool use_current_p
DIR *dirp;
int incr;
int saved_errno;
- int unionstack;
+ bool unionstack;
if ((dirp = malloc(sizeof(DIR) + sizeof(struct _telldir))) == NULL)
return (NULL);
@@ -310,15 +310,14 @@ __opendir_common(int fd, int flags, bool use_current_p
/*
* Determine whether this directory is the top of a union stack.
*/
+ unionstack = false;
if (flags & DTF_NODUP) {
struct statfs sfb;
- if (_fstatfs(fd, &sfb) < 0)
- goto fail;
- unionstack = !strcmp(sfb.f_fstypename, "unionfs")
- || (sfb.f_flags & MNT_UNION);
- } else {
- unionstack = 0;
+ if (_fstatfs(fd, &sfb) == 0) {
+ unionstack = strcmp(sfb.f_fstypename, "unionfs") == 0 ||
+ (sfb.f_flags & MNT_UNION);
+ }
}
if (unionstack) {
More information about the svn-src-all
mailing list