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


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

Some fixes from security point of view

File:
1 edited

Legend:

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

    r9961 r11128  
    7575void bncNetQueryUdp::waitForReadyRead(QByteArray& outData) {
    7676
    77   // Wait Loop
    78   // ---------
    79   if (!_udpSocket->hasPendingDatagrams()) {
    80     _eventLoop->exec();
    81   }
     77  while (true) {
    8278
    83   // Append Data
    84   // -----------
    85   QByteArray datagram;
    86   datagram.resize(_udpSocket->pendingDatagramSize());
    87   _udpSocket->readDatagram(datagram.data(), datagram.size());
     79    // Wait Loop
     80    // ---------
     81    if (!_udpSocket->hasPendingDatagrams()) {
     82      _eventLoop->exec();
     83      if (!_udpSocket->hasPendingDatagrams()) { // stopped
     84        return;
     85      }
     86    }
    8887
    89   if (datagram.size() > 12) {
    90     outData.append(datagram.mid(12));
    91   }
    92   else {
    93     _status = error;
     88    // Append Data, only from the caster (anybody else could feed in data)
     89    // -------------------------------------------------------------------
     90    QByteArray datagram;
     91    QHostAddress sender;
     92    datagram.resize(_udpSocket->pendingDatagramSize());
     93    _udpSocket->readDatagram(datagram.data(), datagram.size(), &sender);
     94    if (!sender.isEqual(_address, QHostAddress::ConvertV4MappedToIPv4)) {
     95      continue;
     96    }
     97
     98    if (datagram.size() > 12) {
     99      outData.append(datagram.mid(12));
     100    }
     101    else {
     102      _status = error;
     103    }
     104    return;
    94105  }
    95106}
    … …  
    156167
    157168    _udpSocket->writeDatagram(rtpbuffer, 12 + reqStr.size(), _address, _port);
     169    free(rtpbuffer);
    158170
    159171    // Wait for Reply, read Session Number
Note: See TracChangeset for help on using the changeset viewer.