fix the previous to not fail to include the extension in lookups.

copy deExtension into the final 3 bytes.  previously, this was found
by having them next to each other in the containing structure, but as
separate strings.

thanks to miod for pointing this out.
This commit is contained in:
mrg 2023-08-18 21:05:44 +00:00
parent f173e917da
commit 8c535c2666
1 changed files with 6 additions and 3 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: msdosfs_vnops.c,v 1.111 2023/08/14 05:41:09 mrg Exp $ */ /* $NetBSD: msdosfs_vnops.c,v 1.112 2023/08/18 21:05:44 mrg Exp $ */
/*- /*-
* Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank. * Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
@ -48,7 +48,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.111 2023/08/14 05:41:09 mrg Exp $"); __KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.112 2023/08/18 21:05:44 mrg Exp $");
#include <sys/param.h> #include <sys/param.h>
#include <sys/systm.h> #include <sys/systm.h>
@ -1168,7 +1168,10 @@ msdosfs_readdir(void *v)
memcpy(deName, dentp->deName, memcpy(deName, dentp->deName,
sizeof dentp->deName); sizeof dentp->deName);
memset(&deName[8], 0, 3); memcpy(deName + 8, dentp->deExtension,
sizeof dentp->deExtension);
assert(sizeof(deName) == sizeof(dentp->deName) +
sizeof(dentp->deExtension));
dirbuf->d_namlen = dirbuf->d_namlen =
msdosfs_dos2unixfn(deName, msdosfs_dos2unixfn(deName,
(u_char *)dirbuf->d_name, (u_char *)dirbuf->d_name,