microsoft / cpprestsdk

The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.
Other
7.91k stars 1.64k forks source link

Fails Simple Get Request Validation #1725

Open Radicalware opened 1 year ago

Radicalware commented 1 year ago

curl -g 'https://api.binance.us/api/v3/exchangeInfo?symbols=["BNBBTC","BTCUSDT"]'

(on windows just remove the -g param)

This get request works just fine but fails when added to web::http::uri during the validate

uri.cpp >> we hit false after is_query_character is tested

        // if we see a ?, then the query is next
        if (*p == _XPLATSTR('?'))
        {
            // skip over the question mark
            p++;
            query_begin = p;

            // the query is delimited by a '#' (fragment) or EOS
            for (; *p != _XPLATSTR('#') && *p != _XPLATSTR('\0'); p++)
            {
                if (!is_query_character(*p))
                {
                    return false;
                }
            }
            query_end = p;
        }