[Scummvm-git-logs] scummvm master -> 617497d09454694c8601c044613e56c75b777062

csnover csnover at users.noreply.github.com
Sun Nov 19 19:48:41 CET 2017


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
617497d094 SCI: Fix UB shifting negative integers


Commit: 617497d09454694c8601c044613e56c75b777062
    https://github.com/scummvm/scummvm/commit/617497d09454694c8601c044613e56c75b777062
Author: Colin Snover (github.com at zetafleet.com)
Date: 2017-11-19T12:48:14-06:00

Commit Message:
SCI: Fix UB shifting negative integers

Changed paths:
    engines/sci/decompressor.cpp
    engines/sci/graphics/cursor.cpp
    engines/sci/resource.cpp


diff --git a/engines/sci/decompressor.cpp b/engines/sci/decompressor.cpp
index ca2298e..158119f 100644
--- a/engines/sci/decompressor.cpp
+++ b/engines/sci/decompressor.cpp
@@ -89,7 +89,7 @@ uint32 Decompressor::getBitsLSB(int n) {
 	// fetching more data to buffer if needed
 	if (_nBits < n)
 		fetchBitsLSB();
-	uint32 ret = (_dwBits & ~((~0) << n));
+	uint32 ret = (_dwBits & ~(0xFFFFFFFFU << n));
 	_dwBits >>= n;
 	_nBits -= n;
 	return ret;
diff --git a/engines/sci/graphics/cursor.cpp b/engines/sci/graphics/cursor.cpp
index 6b18dce..9c26d81 100644
--- a/engines/sci/graphics/cursor.cpp
+++ b/engines/sci/graphics/cursor.cpp
@@ -113,7 +113,7 @@ void GfxCursor::kernelSetShape(GuiResourceId resourceId) {
 	byte colorMapping[4];
 	int16 x, y;
 	byte color;
-	int16 maskA, maskB;
+	uint16 maskA, maskB;
 	byte *pOut;
 	int16 heightWidth;
 
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp
index af2ff60..eb786bc 100644
--- a/engines/sci/resource.cpp
+++ b/engines/sci/resource.cpp
@@ -1805,7 +1805,7 @@ int ResourceManager::readResourceMapSCI0(ResourceSource *map) {
 				}
 			}
 
-			addResource(resId, source, offset & (((~bMask) << 24) | 0xFFFFFF), 0, map->getLocationName());
+			addResource(resId, source, offset & ((((byte)~bMask) << 24) | 0xFFFFFF), 0, map->getLocationName());
 		}
 	} while (!fileStream->eos());
 





More information about the Scummvm-git-logs mailing list