diff options
author | fjoe <fjoe@FreeBSD.org> | 2006-01-22 21:09:38 +0000 |
---|---|---|
committer | fjoe <fjoe@FreeBSD.org> | 2006-01-22 21:09:38 +0000 |
commit | e39df5af9f36301c7d3da1c8150f9aa3adedf5f6 (patch) | |
tree | 73144ccbae77ee03822b281d454a84fed2f19b81 /sys/fs/msdosfs/msdosfs_conv.c | |
parent | bfe1f15bac88af5227cf0b1ced01850deace5579 (diff) | |
download | FreeBSD-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.c | 25 |
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); } |