hrev44443 adds 1 changeset to branch 'master' old head: 8ffd0477dd4998324e051800da35cadd91a7fb8c new head: caa1e8b74245bd1602bd9d6ae642e34beb583a00 ---------------------------------------------------------------------------- caa1e8b: Fix CID 712419, 712420, 712421, 712422: Unintentional sign extension to 64 bits. [ Alex Smith <alex@xxxxxxxxxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev44443 Commit: caa1e8b74245bd1602bd9d6ae642e34beb583a00 URL: http://cgit.haiku-os.org/haiku/commit/?id=caa1e8b Author: Alex Smith <alex@xxxxxxxxxxxxxxxx> Date: Tue Jul 31 09:12:33 2012 UTC ---------------------------------------------------------------------------- 3 files changed, 8 insertions(+), 5 deletions(-) .../kernel/file_systems/bfs/BlockAllocator.cpp | 5 +++-- src/add-ons/kernel/file_systems/bfs/Inode.cpp | 5 +++-- .../kernel/file_systems/bfs/kernel_interface.cpp | 3 ++- ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp b/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp index b0d446f..0540354 100644 --- a/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp +++ b/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp @@ -1990,8 +1990,9 @@ BlockAllocator::_CheckInodeBlocks(Inode* inode, const char* name) if (status != B_OK) return status; - int32 maxIndex = (indirect.Length() << fVolume->BlockShift()) - / sizeof(block_run); + int32 maxIndex = + ((uint32)indirect.Length() << fVolume->BlockShift()) + / sizeof(block_run); for (int32 index = 0; index < maxIndex; ) { block_run* runs = (block_run*)cachedDirect.SetTo( diff --git a/src/add-ons/kernel/file_systems/bfs/Inode.cpp b/src/add-ons/kernel/file_systems/bfs/Inode.cpp index 8e0c0f0..8abf77c 100644 --- a/src/add-ons/kernel/file_systems/bfs/Inode.cpp +++ b/src/add-ons/kernel/file_systems/bfs/Inode.cpp @@ -1517,7 +1517,8 @@ Inode::FindBlockRun(off_t pos, block_run& run, off_t& offset) << fVolume->BlockShift(); if (runBlockEnd > pos) { run = data->direct[current]; - offset = runBlockEnd - (run.Length() << fVolume->BlockShift()); + offset = runBlockEnd + - ((uint32)run.Length() << fVolume->BlockShift()); return fVolume->ValidateBlockRun(run); } } @@ -1878,7 +1879,7 @@ Inode::_GrowStream(Transaction& transaction, off_t size) data->max_indirect_range = HOST_ENDIAN_TO_BFS_INT64( data->MaxIndirectRange() - + (run.Length() << fVolume->BlockShift())); + + ((uint32)run.Length() << fVolume->BlockShift())); data->size = HOST_ENDIAN_TO_BFS_INT64(blocksNeeded > 0 ? data->MaxIndirectRange() : size); continue; diff --git a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp index fff1563..ad9b887 100644 --- a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp @@ -527,7 +527,8 @@ bfs_get_file_map(fs_volume* _volume, fs_vnode* _node, off_t offset, size_t size, return status; vecs[index].offset = volume->ToOffset(run) + offset - fileOffset; - vecs[index].length = (run.Length() << blockShift) - offset + fileOffset; + vecs[index].length = ((uint32)run.Length() << blockShift) + - offset + fileOffset; // are we already done? if ((uint64)size <= (uint64)vecs[index].length