PR/32003: Brian Buhrow: msdosfs doesn't properly zero out high cluster data
on non-FAT32 msdos filesystems.
This commit is contained in:
parent
a0a8d930a4
commit
fe1de4d6e3
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: denode.h,v 1.9 2005/11/02 12:38:58 yamt Exp $ */
|
||||
/* $NetBSD: denode.h,v 1.10 2005/11/04 21:04:20 christos Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (C) 1994, 1995, 1997 Wolfgang Solfrank.
|
||||
|
@ -202,6 +202,8 @@ struct denode {
|
|||
|
||||
#define DE_EXTERNALIZE32(dp, dep) \
|
||||
putushort((dp)->deHighClust, (dep)->de_StartCluster >> 16)
|
||||
#define DE_EXTERNALIZE16(dp, dep) \
|
||||
putushort((dp)->deHighClust, 0)
|
||||
#define DE_EXTERNALIZE(dp, dep) \
|
||||
(memcpy((dp)->deName, (dep)->de_Name, 11), \
|
||||
(dp)->deAttributes = (dep)->de_Attributes, \
|
||||
|
@ -214,7 +216,7 @@ struct denode {
|
|||
putushort((dp)->deStartCluster, (dep)->de_StartCluster), \
|
||||
putulong((dp)->deFileSize, \
|
||||
((dep)->de_Attributes & ATTR_DIRECTORY) ? 0 : (dep)->de_FileSize), \
|
||||
(FAT32((dep)->de_pmp) ? DE_EXTERNALIZE32((dp), (dep)) : 0))
|
||||
(FAT32((dep)->de_pmp) ? DE_EXTERNALIZE32((dp), (dep)) : DE_EXTERNALIZE16((dp), (dep))))
|
||||
|
||||
#define de_forw de_chain[0]
|
||||
#define de_back de_chain[1]
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: msdosfs_vnops.c,v 1.21 2005/11/02 12:38:58 yamt Exp $ */
|
||||
/* $NetBSD: msdosfs_vnops.c,v 1.22 2005/11/04 21:04:20 christos 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.21 2005/11/02 12:38:58 yamt Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: msdosfs_vnops.c,v 1.22 2005/11/04 21:04:20 christos Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
|
@ -1130,6 +1130,8 @@ abortit:
|
|||
if (FAT32(pmp)) {
|
||||
putushort(dotdotp->deHighClust,
|
||||
dp->de_StartCluster >> 16);
|
||||
} else {
|
||||
putushort(dotdotp->deHighClust, 0);
|
||||
}
|
||||
if ((error = bwrite(bp)) != 0) {
|
||||
/* XXX should really panic here, fs is corrupt */
|
||||
|
@ -1255,6 +1257,9 @@ msdosfs_mkdir(v)
|
|||
if (FAT32(pmp)) {
|
||||
putushort(denp[0].deHighClust, newcluster >> 16);
|
||||
putushort(denp[1].deHighClust, pdep->de_StartCluster >> 16);
|
||||
} else {
|
||||
putushort(denp[0].deHighClust, 0);
|
||||
putushort(denp[1].deHighClust, 0);
|
||||
}
|
||||
|
||||
if (async)
|
||||
|
|
Loading…
Reference in New Issue