Changeset 11128 in ntrip for trunk/BNC/src/bncnetqueryrtp.cpp


Ignore:
Timestamp:
Oct 24, 2026, 11:37:52 PM (13 days ago)
Author:
stuerze
Message:

Some fixes from security point of view

File:
1 edited

Legend:

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

    r11124 r11128  
    7777void bncNetQueryRtp::waitForReadyRead(QByteArray& outData) {
    7878
    79   // Wait Loop
    80   // ---------
    81   if (!_udpSocket->hasPendingDatagrams()) {
    82     _eventLoop->exec();
    83   }
    84 
    85   // Append Data
    86   // -----------
    87   QByteArray datagram;
    88   datagram.resize(_udpSocket->pendingDatagramSize());
    89   _udpSocket->readDatagram(datagram.data(), datagram.size());
    90 
    91   if (datagram.size() > 12) {
    92     outData.append(datagram.mid(12));
     79  while (true) {
     80
     81    // Wait Loop
     82    // ---------
     83    if (!_udpSocket->hasPendingDatagrams()) {
     84      _eventLoop->exec();
     85      if (!_udpSocket->hasPendingDatagrams()) { // stopped
     86        return;
     87      }
     88    }
     89
     90    // Append Data, only from the RTSP server (anybody else could feed in data)
     91    // ------------------------------------------------------------------------
     92    QByteArray datagram;
     93    QHostAddress sender;
     94    datagram.resize(_udpSocket->pendingDatagramSize());
     95    _udpSocket->readDatagram(datagram.data(), datagram.size(), &sender);
     96    if (!sender.isEqual(_serverAddress, QHostAddress::ConvertV4MappedToIPv4)) {
     97      continue;
     98    }
     99
     100    if (datagram.size() > 12) {
     101      outData.append(datagram.mid(12));
     102    }
     103    return;
    93104  }
    94105}
    … …  
    126137  // --------------
    127138  if (_socket->waitForConnected(timeOut)) {
     139    _serverAddress = _socket->peerAddress();
    128140    QString uName = QUrl::fromPercentEncoding(_url.userName().toLatin1());
    129141    QString passW = QUrl::fromPercentEncoding(_url.password().toLatin1());
Note: See TracChangeset for help on using the changeset viewer.