- diff --git a/cygwin/Makefile b/cygwin/Makefile
 - index b7a3b1e..41e2340 100644
 - --- a/cygwin/Makefile
 - +++ b/cygwin/Makefile
 - @@ -57,7 +57,11 @@ installdest: $(VS_BUILD_DIR)/nfsd.exe \
 - fi
 - mkdir -p $(DESTDIR)
 - mkdir -p $(DESTDIR)/cygdrive/c/cygwin64/sbin/
 - - mkdir -p $(DESTDIR)/cygdrive/c/cygwin64/usr/bin
 - + # /usr/bin is a bind mount to C:/cygwin64/bin, so copy binaries to /cygdrive/c/cygwin64/bin
 - + mkdir -p $(DESTDIR)/cygdrive/c/cygwin64/bin
 - + # /usr/lib is a bind mount to C:/cygwin64/lib, so copy library data to /cygdrive/c/cygwin64/lib
 - + mkdir -p $(DESTDIR)/cygdrive/c/cygwin64/lib
 - + mkdir -p $(DESTDIR)/cygdrive/c/cygwin64/lib/msnfs41client
 - cp -r $(VS_BUILD_DIR)/nfsd.exe $(DESTDIR)/cygdrive/c/cygwin64/sbin/nfsd_debug.exe
 - cp -r $(VS_BUILD_DIR)/nfsd.pdb $(DESTDIR)/cygdrive/c/cygwin64/sbin/nfsd_debug.pdb
 - cp -r $(VS_BUILD_DIR)/nfs_mount.* $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
 - @@ -70,15 +74,16 @@ installdest: $(VS_BUILD_DIR)/nfsd.exe \
 - cp $(PROJECT_BASEDIR_DIR)/etc_netconfig $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
 - cp $(PROJECT_BASEDIR_DIR)/ms-nfs41-idmap.conf $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
 - cp $(CYGWIN_MAKEFILE_DIR)/devel/msnfs41client.bash $(DESTDIR)/cygdrive/c/cygwin64/sbin/.
 - + cp $(PROJECT_BASEDIR_DIR)/cygwin_idmapper.ksh $(DESTDIR)/cygdrive/c/cygwin64/lib/msnfs41client/.
 - cp $(CYGWIN_MAKEFILE_DIR)/utils/mount_sshnfs/mount_sshnfs.ksh $(DESTDIR)/cygdrive/c/cygwin64/sbin/mount_sshnfs
 - chmod a+x $(DESTDIR)/cygdrive/c/cygwin64/sbin/mount_sshnfs
 - cp $(CYGWIN_MAKEFILE_DIR)/utils/sshnfs/sshnfs.ksh $(DESTDIR)/cygdrive/c/cygwin64/sbin/sshnfs
 - chmod a+x $(DESTDIR)/cygdrive/c/cygwin64/sbin/sshnfs
 - @ printf "# Package tests\n"
 - - cp tests/winfsinfo1/winfsinfo.exe $(DESTDIR)/cygdrive/c/cygwin64/usr/bin/winfsinfo.exe
 - + cp tests/winfsinfo1/winfsinfo.exe $(DESTDIR)/cygdrive/c/cygwin64/bin/winfsinfo.exe
 - @ printf "# Package ksh93&co (if available) since Cygwin does not ship with it yet\n"
 - - [[ -x /usr/bin/ksh93.exe ]] && cp /usr/bin/ksh93.exe $(DESTDIR)/cygdrive/c/cygwin64/usr/bin/ksh93.exe
 - - [[ -x /usr/bin/shcomp.exe ]] && cp /usr/bin/shcomp.exe $(DESTDIR)/cygdrive/c/cygwin64/usr/bin/shcomp.exe
 - + [[ -x /usr/bin/ksh93.exe ]] && cp /usr/bin/ksh93.exe $(DESTDIR)/cygdrive/c/cygwin64/bin/ksh93.exe
 - + [[ -x /usr/bin/shcomp.exe ]] && cp /usr/bin/shcomp.exe $(DESTDIR)/cygdrive/c/cygwin64/bin/shcomp.exe
 - @ printf "# Set file flags\n"
 - (cd $(DESTDIR)/cygdrive/c/cygwin64/sbin/ ; chmod a+x *.exe *.dll *.sys *.bash)
 - @printf "\n#\n# TEST sbin dir is %s\n#\n" "$(DESTDIR)/cygdrive/c/cygwin64/sbin/"
 - @@ -86,6 +91,14 @@ installdest: $(VS_BUILD_DIR)/nfsd.exe \
 - @printf "\n#\n# Now use\n# $$ cd '%s' && bash ./msnfs41client.bash install #\n# to install the kernel driver as Admin\n#\n" \
 - "$(DESTDIR)/cygdrive/c/cygwin64/sbin/"
 - +bintarball: installdest
 - + (cd destdir && \
 - + tar -cvf - \
 - + --owner=SYSTEM \
 - + --group=SYSTEM \
 - + cygdrive/c/cygwin64 | \
 - + bzip2 -9 >msnfs41client_cygwin_binaries.tar.bz2)
 - +
 - #
 - # clean destdir/, but only if nfsd*.exe does not use it right now
 - #
 - @@ -94,6 +107,6 @@ cleandest:
 - printf 'DIR %q is in use by a process\n' "$DESTDIR" 1>&2 ; \
 - exit 1 ; \
 - fi
 - - rm -r "$(DESTDIR)"
 - + rm -rf "$(DESTDIR)"
 - # EOF.
 - diff --git a/daemon/getattr.c b/daemon/getattr.c
 - index 7c5f241..7621dba 100644
 - --- a/daemon/getattr.c
 - +++ b/daemon/getattr.c
 - @@ -59,8 +59,19 @@ int nfs41_cached_getattr(
 - static int parse_getattr(unsigned char *buffer, uint32_t length, nfs41_upcall *upcall)
 - {
 - int status;
 - +#if 1
 - + EASSERT(length > 4);
 - + if (length <= 4) {
 - + status = ERROR_INVALID_PARAMETER;
 - + goto out;
 - + }
 - + EASSERT(upcall->state_ref != NULL);
 - + if (upcall->state_ref == NULL) {
 - + status = ERROR_INVALID_PARAMETER;
 - + goto out;
 - + }
 - +#endif
 - getattr_upcall_args *args = &upcall->args.getattr;
 - -
 - status = safe_read(&buffer, &length, &args->query_class, sizeof(args->query_class));
 - if (status) goto out;
 - status = safe_read(&buffer, &length, &args->buf_len, sizeof(args->buf_len));
 - @@ -80,6 +91,21 @@ static int handle_getattr(void *daemon_context, nfs41_upcall *upcall)
 - nfs41_open_state *state = upcall->state_ref;
 - nfs41_file_info info = { 0 };
 - +#if 1
 - + if (((char *)state->session) == ((char *)0xdddddddddddddddd)) {
 - + eprintf("handle_getattr: Invalid session pointer 0xdddddddddddddddd\n");
 - + status = ERROR_INVALID_PARAMETER;
 - + goto out;
 - + }
 - +
 - + EASSERT(state->file.fh.superblock != NULL);
 - + if (state->file.fh.superblock == NULL) {
 - + /* gisburn: fixme: maybe this should be |ERROR_INTERNAL_ERROR| ? */
 - + status = ERROR_INVALID_PARAMETER;
 - + goto out;
 - + }
 - +#endif
 - +
 - status = nfs41_cached_getattr(state->session, &state->file, &info);
 - if (status) {
 - eprintf("nfs41_cached_getattr() failed with %d\n", status);
 - diff --git a/daemon/idmap_cygwin.c b/daemon/idmap_cygwin.c
 - index 64c1bff..f8bb74e 100644
 - --- a/daemon/idmap_cygwin.c
 - +++ b/daemon/idmap_cygwin.c
 - @@ -40,7 +40,7 @@
 - #define CYGWIN_IDMAPPER_SCRIPT \
 - ("C:\\cygwin64\\bin\\ksh93.exe " \
 - - "/home/roland_mainz/work/msnfs41_uidmapping/ms-nfs41-client/cygwin_idmapper.ksh")
 - + "/cygdrive/c/cygwin64/lib/msnfs41client/cygwin_idmapper.ksh")
 - #ifdef NFS41_DRIVER_FEATURE_NAMESERVICE_CYGWIN
 - diff --git a/daemon/nfs41_daemon.c b/daemon/nfs41_daemon.c
 - index fe0683e..a43d51e 100644
 - --- a/daemon/nfs41_daemon.c
 - +++ b/daemon/nfs41_daemon.c
 - @@ -415,7 +415,21 @@ VOID ServiceStart(DWORD argc, LPTSTR *argv)
 - #ifdef _DEBUG
 - /* dump memory leaks to stderr on exit; this requires the debug heap,
 - /* available only when built in debug mode under visual studio -cbodley */
 - - _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
 - +
 - + int crtsetdbgflags = 0;
 - + crtsetdbgflags |= _CRTDBG_ALLOC_MEM_DF; /* use debug heap */
 - + crtsetdbgflags |= _CRTDBG_LEAK_CHECK_DF; /* report leaks on exit */
 - +#if 1
 - + /*
 - + * _CRTDBG_DELAY_FREE_MEM_DF - Delay freeing of memory, but fill
 - + * memory blocks passed to |free()| with 0xdd. We rely on that to
 - + * see 0xdddddddddddddddd-pointers for use-after-free and catch
 - + * them in stress testing instead of having to deal with a core
 - + * dump
 - + */
 - + crtsetdbgflags |= _CRTDBG_DELAY_FREE_MEM_DF;
 - +#endif
 - + (void)_CrtSetDbgFlag(crtsetdbgflags);
 - _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
 - /*
 - diff --git a/daemon/nfs41_ops.c b/daemon/nfs41_ops.c
 - index bcca070..f2a4f22 100644
 - --- a/daemon/nfs41_ops.c
 - +++ b/daemon/nfs41_ops.c
 - @@ -400,6 +400,9 @@ int nfs41_open(
 - bool_t already_delegated = delegation->type == OPEN_DELEGATE_READ
 - || delegation->type == OPEN_DELEGATE_WRITE;
 - + EASSERT(parent);
 - + EASSERT(parent->fh.superblock);
 - +
 - /* depending on the claim type, OPEN expects CURRENT_FH set
 - * to either the parent directory, or to the file itself */
 - switch (claim->claim) {
 - diff --git a/daemon/open.c b/daemon/open.c
 - index 8c01ac1..1cbac2c 100644
 - --- a/daemon/open.c
 - +++ b/daemon/open.c
 - @@ -99,6 +99,24 @@ static void open_state_free(
 - void nfs41_open_state_ref(
 - IN nfs41_open_state *state)
 - {
 - +#if 1
 - + /*
 - + * gisburn: fixme: sometimes this happens under high parallel
 - + * usage with multiple mounts - but why ?
 - + * 0:038> kp
 - + * Child-SP RetAddr Call Site
 - + * 0000006d`431fde10 00007ff7`32f7d905 nfsd!nfs41_open_state_ref(struct __nfs41_open_state * state = 0x00000000`00000000)+0x31
 - + * 0000006d`431fdf30 00007ff7`32f4d284 nfsd!upcall_parse(unsigned char * buffer = 0x0000006d`431fe180 "???", unsigned int length = 8, struct __nfs41_upcall * upcall = 0x0000006d`431ff1e0)+0x2e5
 - + * 0000006d`431fe0b0 00007ffc`1ca24c7c nfsd!thread_main(void * args = 0x00007ff7`32fb6080)+0x144
 - + * 0000006d`431ffe00 00007ffc`4d4b7344 ucrtbased!thread_start<unsigned int (void * parameter = 0x0000025d`a9c6def0)+0x9c
 - + * 0000006d`431ffe60 00007ffc`4efc26b1 KERNEL32!BaseThreadInitThunk+0x14
 - + * 0000006d`431ffe90 00000000`00000000 ntdll!RtlUserThreadStart+0x21
 - + */
 - + EASSERT(state != NULL);
 - + if (state == NULL)
 - + return;
 - +#endif
 - +
 - const LONG count = InterlockedIncrement(&state->ref_count);
 - dprintf(2, "nfs41_open_state_ref(%s) count %d\n", state->path.path, count);
 - diff --git a/daemon/upcall.c b/daemon/upcall.c
 - index bd13c61..7778429 100644
 - --- a/daemon/upcall.c
 - +++ b/daemon/upcall.c
 - @@ -121,6 +121,7 @@ int upcall_parse(
 - /* parse the operation's arguments */
 - op = g_upcall_op_table[upcall->opcode];
 - if (op && op->parse) {
 - + EASSERT(length > 0);
 - status = op->parse(buffer, length, upcall);
 - if (status) {
 - eprintf("parsing of upcall '%s' failed with %d.\n",
 - diff --git a/sys/nfs41_build_features.h b/sys/nfs41_build_features.h
 - index 93ee7a9..d43334a 100644
 - --- a/sys/nfs41_build_features.h
 - +++ b/sys/nfs41_build_features.h
 - @@ -32,19 +32,19 @@
 - /*
 - * NFS41_DRIVER_FEATURE_LOCAL_UIDGID_IN_NFSV3ATTRIBUTES - return local uid/gid values
 - */
 - -// #define NFS41_DRIVER_FEATURE_LOCAL_UIDGID_IN_NFSV3ATTRIBUTES 1
 - +#define NFS41_DRIVER_FEATURE_LOCAL_UIDGID_IN_NFSV3ATTRIBUTES 1
 - /*
 - * NFS41_DRIVER_FEATURE_MAP_UNMAPPED_USER_TO_UNIXUSER_SID - give NFS
 - * files which do not map to a local account a SID in the
 - * Unix_User+x/Unix_Group+x range
 - */
 - -// #define NFS41_DRIVER_FEATURE_MAP_UNMAPPED_USER_TO_UNIXUSER_SID 1
 - +#define NFS41_DRIVER_FEATURE_MAP_UNMAPPED_USER_TO_UNIXUSER_SID 1
 - /*
 - * NFS41_DRIVER_FEATURE_NAMESERVICE_CYGWIN - use Cygwin /usr/bin/getent
 - * as "name service"
 - */
 - -// #define NFS41_DRIVER_FEATURE_NAMESERVICE_CYGWIN 1
 - +#define NFS41_DRIVER_FEATURE_NAMESERVICE_CYGWIN 1
 - #endif /* !_NFS41_DRIVER_BUILDFEATURES_ */
 - diff --git a/tests/winlocktest1/winlocktest1.ksh b/tests/winlocktest1/winlocktest1.ksh
 - old mode 100644
 - new mode 100755
 
msnfs41client: diff -w tarball generation prototype+idmapper fix 2023-12-07
Posted by Anonymous on Thu 7th Dec 2023 14:19
raw | new post
view followups (newest first): msnfs41client: diff -w tarball generation prototype+idmapper fix 2023-12-07 by Anonymous
modification of post by Anonymous (view diff)
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.
 nrubsig.kpaste.net RSS