Changeset 11130 in ntrip for trunk/BNC/src/bncnetqueryv1.cpp


Ignore:
Timestamp:
Oct 28, 2026, 9:32:30 AM (10 days ago)
Author:
stuerze
Message:

Some fixes from security point of view

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bncnetqueryv1.cpp

    r11124 r11130  
    253253    bool proxyResponse = false;
    254254    QStringList response;
     255    const int maxResponseSize = 16384;
     256    int responseSize = 0;
    255257    while (true) {
    256258      if (_socket->canReadLine()) {
    257259        QString line = _socket->readLine();
     260
     261        // a caster response header is short; do not collect an endless one
     262        responseSize += line.size();
     263        if (responseSize > maxResponseSize) {
     264          delete _socket;
     265          _socket = 0;
     266          _status = error;
     267          emit newMessage(_url.path().toLatin1().replace(0,1,"")
     268                          + ": Caster response header too long", true);
     269          return;
     270        }
    258271   
    259272        if (line.indexOf("ICY 200 OK") == -1 &&
    … …  
    289302        break;
    290303        }
     304      }
     305      else if (_socket->bytesAvailable() > maxResponseSize) { // no line end
     306        delete _socket;
     307        _socket = 0;
     308        _status = error;
     309        emit newMessage(_url.path().toLatin1().replace(0,1,"")
     310                        + ": Caster response header too long", true);
     311        return;
    291312      }
    292313      else if (!_socket->waitForReadyRead(_timeOut)) {
Note: See TracChangeset for help on using the changeset viewer.