From 83fc99f076c50d7dcf840a9916beca64cabe2740 Mon Sep 17 00:00:00 2001 From: Vadim Kurland Date: Fri, 27 May 2011 14:35:37 -0700 Subject: [PATCH] see #2435 tcp flags parsing --- src/import/PFImporter.cpp | 19 +++++++++++-------- src/import/serviceObjectMaker.cpp | 8 ++++---- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/import/PFImporter.cpp b/src/import/PFImporter.cpp index 503625c7e..b4180e831 100644 --- a/src/import/PFImporter.cpp +++ b/src/import/PFImporter.cpp @@ -206,12 +206,17 @@ void PFImporter::addSrv() if (src_port_group.size() == 0 && dst_port_group.size() == 0) { // protocol has been defined but not ports to match + ObjectSignature sig(error_tracker); - if (protocol == "tcp") - sig.type_name = TCPService::TYPENAME; - else - sig.type_name = UDPService::TYPENAME; + buildTCPUDPObjectSingature( + &sig, + "", + "", + false, // dest. + protocol.c_str(), + flags_check.c_str(), + flags_mask.c_str()); re->addRef(commitObject(service_maker->createObject(sig))); @@ -237,8 +242,7 @@ void PFImporter::addSrv() flags_check.c_str(), flags_mask.c_str()); - re->addRef( - commitObject(service_maker->createObject(sig))); + re->addRef(commitObject(service_maker->createObject(sig))); if (ps.port_op == "!=") re->setNeg(true); } @@ -261,8 +265,7 @@ void PFImporter::addSrv() flags_check.c_str(), flags_mask.c_str()); - re->addRef( - commitObject(service_maker->createObject(sig))); + re->addRef(commitObject(service_maker->createObject(sig))); if (ps.port_op == "!=") re->setNeg(true); } diff --git a/src/import/serviceObjectMaker.cpp b/src/import/serviceObjectMaker.cpp index 18186df8c..1cefccfec 100644 --- a/src/import/serviceObjectMaker.cpp +++ b/src/import/serviceObjectMaker.cpp @@ -173,12 +173,12 @@ FWObject* ServiceObjectMaker::getTCPService(int srs, int sre, nl << QString("tcp %1:%2 / %3:%4").arg(srs).arg(sre).arg(drs).arg(dre); if (established) nl << "est"; - if (!flags_mask.isEmpty() && !flags_comp.isEmpty()) + if (!flags_mask.isEmpty() || !flags_comp.isEmpty()) { QStringList f; - foreach(int x, flags_mask) f << tcp_flag_names[x]; - f << "/"; foreach(int x, flags_comp) f << tcp_flag_names[x]; + f << "/"; + foreach(int x, flags_mask) f << tcp_flag_names[x]; nl << f.join(""); } @@ -190,7 +190,7 @@ FWObject* ServiceObjectMaker::getTCPService(int srs, int sre, s->setDstRangeEnd(dre); - if (!flags_mask.isEmpty() && !flags_comp.isEmpty()) + if (!flags_mask.isEmpty() || !flags_comp.isEmpty()) { // TCP flags foreach(int x, flags_mask)