diff options
author | Frederic Boisnard <fredericx.boisnard@intel.com> | 2012-03-21 14:47:00 +0100 |
---|---|---|
committer | David Wagner <david.wagner@intel.com> | 2014-02-12 17:03:10 +0100 |
commit | 8b01852701d50869318663f568270f977d93dbdf (patch) | |
tree | b26462e5ae9e3b7cb10a9ed0511da6c2a7e6cd75 /parameter/FixedPointParameterType.h | |
parent | 170f0a44b8309a954cd4802e85ac3dd6944a35fa (diff) | |
download | external_parameter-framework-8b01852701d50869318663f568270f977d93dbdf.zip external_parameter-framework-8b01852701d50869318663f568270f977d93dbdf.tar.gz external_parameter-framework-8b01852701d50869318663f568270f977d93dbdf.tar.bz2 |
PFW: overflow not detected for int parameters
BZ: 26285
The following errors were not detected by the PFW when setting parameters
of type (U)INT8, (U)INT16, (U)INT32:
- When setting a value out of the int32 range (ex: 999999999999999), the
strtol/strtoul functions return the value -1 which was then assumed correct
by the PFW. Now the errno value is checked to ensure that no range error
was encountered by strtol/strtoul.
- When the input string does not contain any digits, the strtol/strtoul
functions return 0 which was assumed correct by the PFW. Now the endptr
argument is checked to make sure that at least a part of the string was
parsed.
In any case an error message is displayed and the original value is not
updated.
Made the change compliant to 64-bit OSes.
Applied the same corrections to Enum and FixedPoint types.
Change-Id: I135538def791208a6eb6143444a3fc30337137e1
Orig-Change-Id: I1519dbf798228a9be579aaf612f456d5eb1b41b5
Signed-off-by: Frederic Boisnard <fredericx.boisnard@intel.com>
Reviewed-on: http://android.intel.com:8080/55443
Reviewed-by: Mendi, EduardoX <eduardox.mendi@intel.com>
Tested-by: Mendi, EduardoX <eduardox.mendi@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
Diffstat (limited to 'parameter/FixedPointParameterType.h')
-rw-r--r-- | parameter/FixedPointParameterType.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/parameter/FixedPointParameterType.h b/parameter/FixedPointParameterType.h index 4dcf85f..b3b7648 100644 --- a/parameter/FixedPointParameterType.h +++ b/parameter/FixedPointParameterType.h @@ -60,10 +60,12 @@ public: private: // Util size uint32_t getUtilSizeInBits() const; + // Range computation + void getRange(double& dMin, double& dMax) const; // Out of range error string getOutOfRangeError(const string& strValue, bool bRawValueSpace, bool bHexaValue) const; - // Check data is consistent with available range, with respect to its sign - bool isConsistent(uint32_t uiData) const; + // Check if data is encodable + bool checkValueAgainstRange(double dValue) const; // Data conversion int32_t asInteger(double dValue) const; double asDouble(int32_t iValue) const; |