From 97a078374dd9d56c39468eec35916b161f6ee849 Mon Sep 17 00:00:00 2001 From: Date: Thu, 29 May 2008 14:06:36 +0000 Subject: [PATCH] bugfix 2564 --- src/gui/newFirewallDialog.cpp | 37 +++++++++++++++++++++++++++++++++-- src/gui/newHostDialog.cpp | 36 ++++++++++++++++++++++++++++++++-- 2 files changed, 69 insertions(+), 4 deletions(-) diff --git a/src/gui/newFirewallDialog.cpp b/src/gui/newFirewallDialog.cpp index 6deafbb29..9ca235daa 100644 --- a/src/gui/newFirewallDialog.cpp +++ b/src/gui/newFirewallDialog.cpp @@ -595,7 +595,6 @@ void newFirewallDialog::addInterface() try { InetAddr(addr.toLatin1().constData()); - InetAddr(netm.toLatin1().constData()); } catch (FWException &ex) { @@ -605,6 +604,30 @@ void newFirewallDialog::addInterface() "&Continue", QString::null, QString::null, 0, 1 ); return; } + try + { + InetAddr(netm.toLatin1().constData()); + } + catch (FWException &ex) + { + + bool ok = false ; + int ilen = netm.toInt (&ok); + if (ok&&(ilen>0 && ilen < 32)) + { + + } + else + { + QMessageBox::warning( + this,"Firewall Builder", + tr("Illegal address '%1/%2'").arg(addr).arg(netm), + "&Continue", QString::null, QString::null, 0, 1 ); + return; + } + } + + } QStringList qsl; qsl << m_dialog->iface_name->text() @@ -812,7 +835,17 @@ void newFirewallDialog::finishClicked() QString addrname=QString("%1:%2:ip").arg(m_dialog->obj_name->text()).arg(name); IPv4 *oa = IPv4::cast(mw->createObject(oi, IPv4::TYPENAME,addrname)); oa->setAddress( InetAddr(addr.toLatin1().constData()) ); - oa->setNetmask( InetAddr(netmask.toLatin1().constData()) ); + + bool ok = false ; + int inetmask = netmask.toInt(&ok); + if (ok) + { + oa->setNetmask( InetAddr(inetmask) ); + } + else + { + oa->setNetmask( InetAddr(netmask.toLatin1().constData()) ); + } } // updateObjName has a side effect: it causes redraw of the ruleset // views in the main window diff --git a/src/gui/newHostDialog.cpp b/src/gui/newHostDialog.cpp index 22ff1535a..009046770 100644 --- a/src/gui/newHostDialog.cpp +++ b/src/gui/newHostDialog.cpp @@ -503,7 +503,6 @@ void newHostDialog::addInterface() try { InetAddr(addr.toLatin1().constData()); - InetAddr(netm.toLatin1().constData()); } catch (FWException &ex) { @@ -513,6 +512,29 @@ void newHostDialog::addInterface() "&Continue", QString::null, QString::null, 0, 1 ); return; } + try + { + InetAddr(netm.toLatin1().constData()); + } + catch (FWException &ex) + { + bool ok = false ; + int ilen = netm.toInt (&ok); + if (ok&&(ilen>0 && ilen < 32)) + { + + } + else + { + + QMessageBox::warning( + this,"Firewall Builder", + tr("Illegal address '%1/%2'").arg(addr).arg(netm), + "&Continue", QString::null, QString::null, 0, 1 ); + return; + } + } + } QStringList sl; sl << m_dialog->iface_name->text() @@ -632,7 +654,17 @@ void newHostDialog::finishClicked() mw->createObject(oi, IPv4::TYPENAME,addrname) ); oa->setAddress( InetAddr(addr.toLatin1().constData()) ); - oa->setNetmask( InetAddr(netmask.toLatin1().constData()) ); + bool ok = false ; + int inetmask = netmask.toInt(&ok); + if (ok) + { + oa->setNetmask( InetAddr(inetmask) ); + } + else + { + oa->setNetmask( InetAddr(netmask.toLatin1().constData()) ); + } + } mw->updateObjName(oi,"","",false);