From 72b826651f557e82dc8dd3b998d48b6fcd7e341e Mon Sep 17 00:00:00 2001 From: Alex Fabijanic Date: Mon, 3 Jul 2017 21:03:50 +0200 Subject: [PATCH] src/Var.cpp: 2 * sanity check in wrong place ? #1784 --- Foundation/src/Var.cpp | 10 ++++++---- Net/src/ICMPv4PacketImpl.cpp | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Foundation/src/Var.cpp b/Foundation/src/Var.cpp index 5daa2f8b2..a849424a2 100644 --- a/Foundation/src/Var.cpp +++ b/Foundation/src/Var.cpp @@ -414,7 +414,7 @@ Var Var::parse(const std::string& val, std::string::size_type& pos) Var Var::parseObject(const std::string& val, std::string::size_type& pos) { - poco_assert_dbg (val[pos] == '{'); + poco_assert_dbg (pos < val.size() && val[pos] == '{'); ++pos; skipWhiteSpace(val, pos); DynamicStruct aStruct; @@ -443,7 +443,7 @@ Var Var::parseObject(const std::string& val, std::string::size_type& pos) Var Var::parseArray(const std::string& val, std::string::size_type& pos) { - poco_assert_dbg (val[pos] == '['); + poco_assert_dbg (pos < val.size() && val[pos] == '['); ++pos; skipWhiteSpace(val, pos); std::vector result; @@ -466,6 +466,7 @@ Var Var::parseArray(const std::string& val, std::string::size_type& pos) std::string Var::parseString(const std::string& val, std::string::size_type& pos) { + poco_assert_dbg (pos < val.size()); if (val[pos] == '"') { return parseJSONString(val, pos); @@ -488,7 +489,7 @@ std::string Var::parseString(const std::string& val, std::string::size_type& pos std::string Var::parseJSONString(const std::string& val, std::string::size_type& pos) { - poco_assert_dbg (val[pos] == '"'); + poco_assert_dbg (pos < val.size() && val[pos] == '"'); ++pos; std::string result; bool done = false; @@ -545,7 +546,8 @@ std::string Var::parseJSONString(const std::string& val, std::string::size_type& void Var::skipWhiteSpace(const std::string& val, std::string::size_type& pos) { - while (std::isspace(val[pos])) + poco_assert_dbg (pos < val.size()); + while (std::isspace(val[pos]) && pos < val.size()) ++pos; } diff --git a/Net/src/ICMPv4PacketImpl.cpp b/Net/src/ICMPv4PacketImpl.cpp index 4acd3bb49..711efbece 100644 --- a/Net/src/ICMPv4PacketImpl.cpp +++ b/Net/src/ICMPv4PacketImpl.cpp @@ -222,7 +222,7 @@ std::string ICMPv4PacketImpl::errorDescription(unsigned char* buffer, int length err << DESTINATION_UNREACHABLE_CODE[DESTINATION_UNREACHABLE_UNKNOWN]; break; - case SOURCE_QUENCH_TYPE: + case SOURCE_QUENCH_TYPE: err << "Source quench"; break;