Module Name: src
Committed By: mrg
Date: Mon Aug 14 05:41:09 UTC 2023
Modified Files:
src/sys/fs/msdosfs: msdosfs_vnops.c
Log Message:
when calling a function that needs more bytes than we have, create a
stack variable long enough and use that instead.
found by GCC 12.
To generate a diff of this commit:
cvs rdiff -u -r1.110 -r1.111 src/sys/fs/msdosfs/msdosfs_vnops.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/fs/msdosfs/msdosfs_vnops.c
diff -u src/sys/fs/msdosfs/msdosfs_vnops.c:1.110 src/sys/fs/msdosfs/msdosfs_vnops.c:1.111
--- src/sys/fs/msdosfs/msdosfs_vnops.c:1.110 Sat Oct 23 16:58:17 2021
+++ src/sys/fs/msdosfs/msdosfs_vnops.c Mon Aug 14 05:41:09 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: msdosfs_vnops.c,v 1.110 2021/10/23 16:58:17 thorpej Exp $ */
+/* $NetBSD: msdosfs_vnops.c,v 1.111 2023/08/14 05:41:09 mrg Exp $ */
/*-
* Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
@@ -48,7 +48,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.110 2021/10/23 16:58:17 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.111 2023/08/14 05:41:09 mrg Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1163,12 +1163,17 @@ msdosfs_readdir(void *v)
offset / sizeof(struct direntry);
dirbuf->d_type = DT_REG;
}
- if (chksum != msdosfs_winChksum(dentp->deName))
+ if (chksum != msdosfs_winChksum(dentp->deName)) {
+ char deName[11];
+
+ memcpy(deName, dentp->deName,
+ sizeof dentp->deName);
+ memset(&deName[8], 0, 3);
dirbuf->d_namlen =
- msdosfs_dos2unixfn(dentp->deName,
- (u_char *)dirbuf->d_name,
- pmp->pm_flags & MSDOSFSMNT_SHORTNAME);
- else
+ msdosfs_dos2unixfn(deName,
+ (u_char *)dirbuf->d_name,
+ pmp->pm_flags & MSDOSFSMNT_SHORTNAME);
+ } else
dirbuf->d_name[dirbuf->d_namlen] = 0;
namlen = dirbuf->d_namlen;
chksum = -1;