Change m_imageSize to signed since it's value is set by the result of tellg and
tellg returns -1 when there is an error. Also, check the result of tellg.
diff --git a/rmi4update/firmware_image.cpp b/rmi4update/firmware_image.cpp
index fc1da97..8acc2d6 100644
--- a/rmi4update/firmware_image.cpp
+++ b/rmi4update/firmware_image.cpp
@@ -53,7 +53,10 @@
 		return UPDATE_FAIL_OPEN_FIRMWARE_IMAGE;
 
 	ifsFile.seekg(0, ios::end);
-	m_imageSize = (unsigned long)ifsFile.tellg();
+	m_imageSize = ifsFile.tellg();
+	if (m_imageSize < 0)
+		return UPDATE_FAIL_OPEN_FIRMWARE_IMAGE;
+
 	m_memBlock = new unsigned char[m_imageSize];
 	ifsFile.seekg(0, ios::beg);
 	ifsFile.read((char*)m_memBlock, m_imageSize);