[vlc-devel] [PATCH 1/2] demux: adaptive: fix out of range exception

Zhao Zhili quinkblack at foxmail.com
Wed Oct 18 02:10:53 CEST 2017



于 2017年10月18日 GMT+08:00 上午1:01:19, Francois Cartegnie <fcvlcdev at free.fr> 写到:
>Le 12/10/2017 à 10:11, Zhao Zhili a écrit :
>> 
>> ---
>>  modules/demux/adaptive/http/HTTPConnection.cpp | 7 +++----
>>  1 file changed, 3 insertions(+), 4 deletions(-)
>> 
>> diff --git a/modules/demux/adaptive/http/HTTPConnection.cpp
>b/modules/demux/adaptive/http/HTTPConnection.cpp
>> index 5934fb7270..a1f81b61d8 100644
>> --- a/modules/demux/adaptive/http/HTTPConnection.cpp
>> +++ b/modules/demux/adaptive/http/HTTPConnection.cpp
>> @@ -246,10 +246,9 @@ int HTTPConnection::parseReply()
>>          size_t split = lines.find_first_of(':');
>>          if(split != std::string::npos)
>>          {
>> -            size_t value = split + 1;
>> -            while(lines.at(value) == ' ')
>> -                value++;
>> -
>> +            size_t value = lines.find_first_not_of(' ', split + 1);
>> +            if(value == std::string::npos)
>> +                value = lines.length();
>>              onHeader(lines.substr(0, split), lines.substr(value));
>>              lines = std::string();
>>          }
>> 
>
>I don't understand what this changes.
>
>
>-- 
>Francois Cartegnie
>VideoLAN - VLC Developer
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel

lf the line contains key but no value, lines.at() will index ouf of range, and then crash (since no catch).

The solution:
1. lines.find_first_not_of() don't throw exception
2. check the value of 'value' to make sure substr don't throw exception

-- 
使用 K-9 Mail 发送自我的Android设备。




More information about the vlc-devel mailing list