summaryrefslogtreecommitdiffstats
path: root/sys/fs/msdosfs/msdosfs_conv.c
diff options
context:
space:
mode:
authorfjoe <fjoe@FreeBSD.org>2006-01-22 21:09:38 +0000
committerfjoe <fjoe@FreeBSD.org>2006-01-22 21:09:38 +0000
commite39df5af9f36301c7d3da1c8150f9aa3adedf5f6 (patch)
tree73144ccbae77ee03822b281d454a84fed2f19b81 /sys/fs/msdosfs/msdosfs_conv.c
parentbfe1f15bac88af5227cf0b1ced01850deace5579 (diff)
downloadFreeBSD-src-e39df5af9f36301c7d3da1c8150f9aa3adedf5f6.zip
FreeBSD-src-e39df5af9f36301c7d3da1c8150f9aa3adedf5f6.tar.gz
Do not assume that `char direntry::deExtension[3]' starts right after
`char direntry::deName[8]' and access deExtension[] explicitly. Found by: Coverity Prevent(tm) CID: 350, 351, 352
Diffstat (limited to 'sys/fs/msdosfs/msdosfs_conv.c')
-rw-r--r--sys/fs/msdosfs/msdosfs_conv.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/sys/fs/msdosfs/msdosfs_conv.c b/sys/fs/msdosfs/msdosfs_conv.c
index 2da7723..9fc666d 100644
--- a/sys/fs/msdosfs/msdosfs_conv.c
+++ b/sys/fs/msdosfs/msdosfs_conv.c
@@ -916,22 +916,21 @@ win2unixfn(wep, chksum, pmp)
* Compute the unrolled checksum of a DOS filename for Win95 LFN use.
*/
u_int8_t
-winChksum(name)
- u_int8_t *name;
+winChksum(struct direntry *dep)
{
u_int8_t s;
- s = name[0];
- s = ((s << 7) | (s >> 1)) + name[1];
- s = ((s << 7) | (s >> 1)) + name[2];
- s = ((s << 7) | (s >> 1)) + name[3];
- s = ((s << 7) | (s >> 1)) + name[4];
- s = ((s << 7) | (s >> 1)) + name[5];
- s = ((s << 7) | (s >> 1)) + name[6];
- s = ((s << 7) | (s >> 1)) + name[7];
- s = ((s << 7) | (s >> 1)) + name[8];
- s = ((s << 7) | (s >> 1)) + name[9];
- s = ((s << 7) | (s >> 1)) + name[10];
+ s = dep->deName[0];
+ s = ((s << 7) | (s >> 1)) + dep->deName[1];
+ s = ((s << 7) | (s >> 1)) + dep->deName[2];
+ s = ((s << 7) | (s >> 1)) + dep->deName[3];
+ s = ((s << 7) | (s >> 1)) + dep->deName[4];
+ s = ((s << 7) | (s >> 1)) + dep->deName[5];
+ s = ((s << 7) | (s >> 1)) + dep->deName[6];
+ s = ((s << 7) | (s >> 1)) + dep->deName[7];
+ s = ((s << 7) | (s >> 1)) + dep->deExtension[0];
+ s = ((s << 7) | (s >> 1)) + dep->deExtension[1];
+ s = ((s << 7) | (s >> 1)) + dep->deExtension[2];
return (s);
}
OpenPOWER on IntegriCloud