You've already forked cpp-httplib
Fix #2187
This commit is contained in:
21
httplib.h
21
httplib.h
@ -5440,17 +5440,30 @@ inline bool parse_accept_header(const std::string &s,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
#ifdef CPPHTTPLIB_NO_EXCEPTIONS
|
||||||
accept_entry.quality = std::stod(quality_str);
|
{
|
||||||
// Check if quality is in valid range [0.0, 1.0]
|
std::istringstream iss(quality_str);
|
||||||
if (accept_entry.quality < 0.0 || accept_entry.quality > 1.0) {
|
iss >> accept_entry.quality;
|
||||||
|
|
||||||
|
// Check if conversion was successful and entire string was consumed
|
||||||
|
if (iss.fail() || !iss.eof()) {
|
||||||
has_invalid_entry = true;
|
has_invalid_entry = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
try {
|
||||||
|
accept_entry.quality = std::stod(quality_str);
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
has_invalid_entry = true;
|
has_invalid_entry = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
// Check if quality is in valid range [0.0, 1.0]
|
||||||
|
if (accept_entry.quality < 0.0 || accept_entry.quality > 1.0) {
|
||||||
|
has_invalid_entry = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// No quality parameter, use entire entry as media type
|
// No quality parameter, use entire entry as media type
|
||||||
accept_entry.media_type = entry;
|
accept_entry.media_type = entry;
|
||||||
|
Reference in New Issue
Block a user