Skip to content

Commit bfeee00

Browse files
committed
Add more segInfo header check
1 parent 4f33466 commit bfeee00

File tree

7 files changed

+15
-2
lines changed

7 files changed

+15
-2
lines changed

dcc_client/dcc_client/P2PClient.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,10 +310,12 @@ void P2P::ListenerThread(int update_interval)
310310
maxSegments = 0;
311311
int segLength;
312312
try{
313-
segInfo = SplitString(textVal, "&")[0];
314-
std::string s = SplitString(textVal, "&")[1]; // This value is not used, but tested to ensure the segInfo header is there
313+
if(!StringContains(textVal, '&'))
314+
throw 1;
315315
if(StringStartsWith(segInfo, "seg") == false)
316316
throw 1;
317+
segInfo = SplitString(textVal, "&")[0];
318+
std::string s = SplitString(textVal, "&")[1]; // This value is not used, but tested to ensure the segInfo header is there
317319
segNumber = std::stoi(SplitString(segInfo, ":")[1]);
318320
maxSegments = std::stoi(SplitString(segInfo, ":")[3]);
319321
segLength = std::stoi(SplitString(segInfo, ":")[5]) + segInfo.size() + 1;

dcc_client/dcc_client/strops.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,15 @@ bool StringContains(std::string& str, std::string check)
166166
}
167167
return false;
168168
}
169+
// See if a string <str> contains another <check>
170+
bool StringContains(std::string& str, char check)
171+
{
172+
if (str.find(check, 0) < str.size())
173+
{
174+
return true;
175+
}
176+
return false;
177+
}
169178

170179
// trim from start (in place)
171180
void ltrim(std::string& s)

dcc_client/dcc_client/strops.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ std::string PadStringRight(const std::string& input, char padChar, size_t desire
2323
std::string ExtractPaddedChars(const std::string& input, char padChar);
2424
std::vector<std::string> SplitString(std::string& str, std::string delim);
2525
bool StringContains(std::string& str, std::string check);
26+
bool StringContains(std::string& str, char check);
2627
void ltrim(std::string& s);
2728
void rtrim(std::string& s);
2829
// Overridden by boost::trim
Binary file not shown.
Binary file not shown.
96 Bytes
Binary file not shown.

tags

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35316,6 +35316,7 @@ State dcc_client/out-linux/_deps/curl-src/src/tool_cfgable.h /^struct State {$/;
3531635316
State dcc_client/out/_deps/curl-src/src/tool_cfgable.h /^struct State {$/;" s
3531735317
Stop dcc_client/out-linux/_deps/cpr-src/test/abstractServer.cpp /^void AbstractServer::Stop() {$/;" f class:cpr::AbstractServer typeref:typename:void
3531835318
Stream dcc_client/dcc_client/indicators.hpp /^using Stream = details::Setting<std::ostream &, details::ProgressBarOption::stream>;$/;" t namespace:indicators::option typeref:typename:details::Setting<std::ostream &,details::ProgressBarOption::stream>
35319+
StringContains dcc_client/dcc_client/strops.cpp /^bool StringContains(std::string& str, char check)$/;" f typeref:typename:bool
3531935320
StringContains dcc_client/dcc_client/strops.cpp /^bool StringContains(std::string& str, std::string check)$/;" f typeref:typename:bool
3532035321
StringHolder dcc_client/out-linux/_deps/cpr-src/include/cpr/cprtypes.h /^ StringHolder(const char* str, size_t len) : str_(str, len) {}$/;" f class:cpr::StringHolder
3532135322
StringHolder dcc_client/out-linux/_deps/cpr-src/include/cpr/cprtypes.h /^ StringHolder(const std::initializer_list<std::string> args) {$/;" f class:cpr::StringHolder

0 commit comments

Comments
 (0)