aboutsummaryrefslogtreecommitdiffstats
path: root/parameter/FixedPointParameterType.cpp
diff options
context:
space:
mode:
authorDmitry Shkurko <Dmitry.V.Shkurko@intel.com>2013-08-28 19:33:24 +0700
committerDavid Wagner <david.wagner@intel.com>2014-02-12 17:04:12 +0100
commit764ff429ac913567910e4acb1da98502f246754a (patch)
tree9c56b38f8bf48b2a969dbe38460c399548f85624 /parameter/FixedPointParameterType.cpp
parent9b275887f7891890c15d07e5aa90fcf2ed846bbf (diff)
downloadexternal_parameter-framework-764ff429ac913567910e4acb1da98502f246754a.zip
external_parameter-framework-764ff429ac913567910e4acb1da98502f246754a.tar.gz
external_parameter-framework-764ff429ac913567910e4acb1da98502f246754a.tar.bz2
Avoid integer overflow while calculating max values
BZ: 134249 The behavior is undefined in the case of signed integer overflow for enum and fixed point parameter types. Modify the behavior to handle correctly the signed integers. Change-Id: Idbd0798a39f826853ae1afcd05cebd897675b9a8 Signed-off-by: Dmitry Shkurko <Dmitry.V.Shkurko@intel.com>
Diffstat (limited to 'parameter/FixedPointParameterType.cpp')
-rw-r--r--parameter/FixedPointParameterType.cpp4
1 files changed, 1 insertions, 3 deletions
diff --git a/parameter/FixedPointParameterType.cpp b/parameter/FixedPointParameterType.cpp
index 3c9e20f..2b97f58 100644
--- a/parameter/FixedPointParameterType.cpp
+++ b/parameter/FixedPointParameterType.cpp
@@ -271,8 +271,6 @@ void CFixedPointParameterType::getRange(double& dMin, double& dMax) const
// Out of range error
string CFixedPointParameterType::getOutOfRangeError(const string& strValue, bool bRawValueSpace, bool bHexaValue) const
{
-
-
ostringstream strStream;
strStream << "Value " << strValue << " standing out of admitted ";
@@ -288,7 +286,7 @@ string CFixedPointParameterType::getOutOfRangeError(const string& strValue, bool
} else {
// Min/Max computation
- int32_t iMax = (1L << (getSize() * 8 - 1)) - 1;
+ int32_t iMax = getMaxValue<uint32_t>();
int32_t iMin = -iMax - 1;
strStream << "raw range [";