From bffbda804d706808b2298ab535e8436d25a8b563 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sat, 30 Sep 2006 14:12:02 +0000 Subject: r19011: Attempt to fix the BSD RAW-CHKPATH failures: In Samba3 we rely on opendir returning ENOTDIR when the file opened is not a directory. Can we merge this back into Samba4? Volker (This used to be commit 448d7c0c4b6a1d7d9c544d39d7b461dd1c69fd8e) --- source3/lib/replace/repdir_getdirentries.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'source3/lib/replace/repdir_getdirentries.c') diff --git a/source3/lib/replace/repdir_getdirentries.c b/source3/lib/replace/repdir_getdirentries.c index 9e4b63145c..ee1d218456 100644 --- a/source3/lib/replace/repdir_getdirentries.c +++ b/source3/lib/replace/repdir_getdirentries.c @@ -70,6 +70,7 @@ struct dir_buf { DIR *opendir(const char *dname) { struct dir_buf *d; + struct stat sb; d = malloc(sizeof(*d)); if (d == NULL) { errno = ENOMEM; @@ -80,6 +81,17 @@ DIR *opendir(const char *dname) free(d); return NULL; } + if (fstat(d->fd, &sb) < 0) { + close(d->fd); + free(d); + return NULL; + } + if (!S_ISDIR(sb.st_mode)) { + close(d->fd); + free(d); + errno = ENOTDIR; + return NULL; + } d->ofs = 0; d->seekpos = 0; d->nbytes = 0; -- cgit