BUGFIX: Fixed possible crash when parsing filter file

This commit is contained in:
Christophe Dumez 2009-01-25 00:27:04 +00:00
parent 17e0700a52
commit f1ca41a5c5
2 changed files with 22 additions and 16 deletions

View file

@ -3,6 +3,8 @@
- BUGFIX: qBittorrent now prints backtrace in terminal when segfaulting - BUGFIX: qBittorrent now prints backtrace in terminal when segfaulting
- BUGFIX: Fixed files progress display in torrent properties - BUGFIX: Fixed files progress display in torrent properties
- BUGFIX: Improved torrent ratio calculation - BUGFIX: Improved torrent ratio calculation
- BUGFIX: Fixed possible crash when parsing filter file
- BUGFIX: Made some code optimization
- I18N: Updated Bulgarian and Greek translations - I18N: Updated Bulgarian and Greek translations
* Fri Jan 9 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.0 * Fri Jan 9 2009 - Christophe Dumez <chris@qbittorrent.org> - v1.3.0

View file

@ -178,22 +178,26 @@ class FilterParserThread : public QThread {
} }
// Now Add to the filter // Now Add to the filter
QStringList IP; QStringList IP;
if(IPv4) { try {
//IPv4 addresses if(IPv4) {
IP = strStartIP.split('.'); //IPv4 addresses
address_v4 start((IP.at(0).toInt() << 24) + (IP.at(1).toInt() << 16) + (IP.at(2).toInt() << 8) + IP.at(3).toInt()); IP = strStartIP.split('.');
IP = strEndIP.split('.'); address_v4 start((IP.at(0).toInt() << 24) + (IP.at(1).toInt() << 16) + (IP.at(2).toInt() << 8) + IP.at(3).toInt());
address_v4 last((IP.at(0).toInt() << 24) + (IP.at(1).toInt() << 16) + (IP.at(2).toInt() << 8) + IP.at(3).toInt()); IP = strEndIP.split('.');
// Apply to bittorrent session address_v4 last((IP.at(0).toInt() << 24) + (IP.at(1).toInt() << 16) + (IP.at(2).toInt() << 8) + IP.at(3).toInt());
filter.add_rule(start, last, ip_filter::blocked); // Apply to bittorrent session
} else { filter.add_rule(start, last, ip_filter::blocked);
// IPv6, ex : 1fff:0000:0a88:85a3:0000:0000:ac1f:8001 } else {
IP = strStartIP.split(':'); // IPv6, ex : 1fff:0000:0a88:85a3:0000:0000:ac1f:8001
address_v6 start = address_v6::from_string(strStartIP.remove(':', 0).toUtf8().data()); IP = strStartIP.split(':');
IP = strEndIP.split(':'); address_v6 start = address_v6::from_string(strStartIP.remove(':', 0).toUtf8().data());
address_v6 last = address_v6::from_string(strEndIP.remove(':', 0).toUtf8().data()); IP = strEndIP.split(':');
// Apply to bittorrent session address_v6 last = address_v6::from_string(strEndIP.remove(':', 0).toUtf8().data());
filter.add_rule(start, last, ip_filter::blocked); // Apply to bittorrent session
filter.add_rule(start, last, ip_filter::blocked);
}
}catch(exception){
qDebug("Bad line in filter file, avoided crash...");
} }
} }
file.close(); file.close();