1
0
mirror of https://github.com/fwbuilder/fwbuilder synced 2026-03-23 03:37:15 +01:00

* Importer.cpp (Importer::createAddress): fixed #1287 "policy

importer (iptables) crashes when host name is used in iptables
rule in place of an address". Importer now creates DNSName object.
This commit is contained in:
Vadim Kurland 2010-03-04 02:46:34 +00:00
parent 353d1f3aa7
commit 0ba6a38fa3
3 changed files with 33 additions and 10 deletions

View File

@ -1 +1 @@
#define BUILD_NUM 2646
#define BUILD_NUM 2647

View File

@ -1,5 +1,9 @@
2010-03-03 vadim <vadim@vk.crocodile.org>
* Importer.cpp (Importer::createAddress): fixed #1287 "policy
importer (iptables) crashes when host name is used in iptables
rule in place of an address". Importer now creates DNSName object.
* fixed #1291 "deleted objects 'policy' problem". SF bug 2962628
If user ended up placing a 'policy' object in the 'Deleted
Objects' library, it could not be deleted or opened.

View File

@ -40,6 +40,7 @@
#include "fwbuilder/FWObjectDatabase.h"
#include "fwbuilder/Network.h"
#include "fwbuilder/Address.h"
#include "fwbuilder/DNSName.h"
#include "fwbuilder/AddressRange.h"
#include "fwbuilder/IPService.h"
#include "fwbuilder/ICMPService.h"
@ -888,15 +889,33 @@ FWObject* Importer::createAddress(const std::string &addr,
if ( netmask == InetAddr::getAllOnes().toString() )
{
Address *a;
std::string name = std::string("h-") + addr;
a = Address::cast(createObject(IPv4::TYPENAME, name));
a->setAddress(InetAddr(addr));
a->setNetmask(InetAddr(InetAddr::getAllOnes()));
a->setComment(comment);
all_objects[sig] = a;
*logger << "Address object: " << name << "\n";
return a;
string name;
try
{
InetAddr obj_addr(addr); // testing if string converts to an address
name = std::string("h-") + addr;
Address *a = Address::cast(createObject(IPv4::TYPENAME, name));
a->setAddress(obj_addr);
a->setNetmask(InetAddr(InetAddr::getAllOnes()));
a->setComment(comment);
all_objects[sig] = a;
*logger << "Address object: " << name << "\n";
return a;
} catch(FWException &ex)
{
// address text line can not be converted to ipv4 address.
// Since parsers do not understand ipv6 yet, assume this
// is a host address and create DNSName object
name = addr;
DNSName *da = DNSName::cast(createObject(DNSName::TYPENAME, name));
da->setSourceName(addr);
da->setRunTime(true);
da->setComment(comment);
all_objects[sig] = da;
*logger << "DNSName object: " << name << "\n";
return da;
}
} else
{
Network *net;