diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-08-16 00:32:13 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2022-08-21 21:47:18 +0300 |
commit | dc688f1d8869798d5e856810bcdd55a22968a443 (patch) | |
tree | 9c7016119cd468f8c0cf06a620a012039a2fac57 | |
parent | 7615f58f9b7ee6cd1a858a86e53668406e9efa11 (diff) |
libcamera: yaml_parser: Fix bounds checking for 16-bit YamlObject::get()
The YamlObject::get() function specializations for 16-bit integers cast
the return value of strto(u)l() to a 16-bit integer, rendering the
bounds checking useless. Fix them.
Fixes: c7d260c03abd ("libcamera: yaml_parser: Add get() specializations for 16-bit integers")
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
-rw-r--r-- | src/libcamera/yaml_parser.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libcamera/yaml_parser.cpp b/src/libcamera/yaml_parser.cpp index 9162e225..f928b723 100644 --- a/src/libcamera/yaml_parser.cpp +++ b/src/libcamera/yaml_parser.cpp @@ -143,7 +143,7 @@ std::optional<int16_t> YamlObject::get() const char *end; errno = 0; - int16_t value = std::strtol(value_.c_str(), &end, 10); + long value = std::strtol(value_.c_str(), &end, 10); if ('\0' != *end || errno == ERANGE || value < std::numeric_limits<int16_t>::min() || @@ -176,7 +176,7 @@ std::optional<uint16_t> YamlObject::get() const char *end; errno = 0; - uint16_t value = std::strtoul(value_.c_str(), &end, 10); + unsigned long value = std::strtoul(value_.c_str(), &end, 10); if ('\0' != *end || errno == ERANGE || value < std::numeric_limits<uint16_t>::min() || |