Thread: [fwbuilder-commits] [SCM] Firewall Builder GUI and Policy Compilers Open Source Code branch, develo
Brought to you by:
mikehorn
From: <gi...@ir...> - 2011-06-29 21:29:26
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Firewall Builder GUI and Policy Compilers Open Source Code". The branch, development has been updated via 2ee4869facf23ec1b778100ec465b2073fcfa8ff (commit) from 57de77b341860fdccf2e22b8b41213c0985ddbb4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 2ee4869facf23ec1b778100ec465b2073fcfa8ff Author: Theron Tock <th...@ne...> Date: Wed Jun 29 14:28:33 2011 -0700 Catch exception inside preprocessor loop so that loop continues after error (for unit tests). Also make sure to set ".loaded" variable before calling loadFromSource so that if an exception happens we won't try to load it again later. Fixes #2542. diff --git a/doc/ChangeLog b/doc/ChangeLog index 93ce76c..a965422 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -4,6 +4,11 @@ validate the drop the same we we validate in dragMove to make sure the drop is valid. + * Fixed #2542. Catch exception inside preprocessor loop so that + loop continues after error (for unit tests). Also make sure to + set ".loaded" variable before calling loadFromSource so that if an + exception happens we won't try to load it again later. + 2011-06-27 theron <th...@ne...> * Fixed #2530, where adding a subfolder opens the parent folder in diff --git a/src/libfwbuilder/src/fwcompiler/Preprocessor.cpp b/src/libfwbuilder/src/fwcompiler/Preprocessor.cpp index 09e6469..77b008e 100644 --- a/src/libfwbuilder/src/fwcompiler/Preprocessor.cpp +++ b/src/libfwbuilder/src/fwcompiler/Preprocessor.cpp @@ -71,11 +71,9 @@ Preprocessor::Preprocessor(FWObjectDatabase *_db, void Preprocessor::convertObject(FWObject *obj) { MultiAddress *adt = MultiAddress::cast(obj); - if (adt!=NULL && adt->isCompileTime() && - obj->getInt(".loaded") != infinite_recursion_breaker) + if (adt!=NULL && adt->isCompileTime()) { adt->loadFromSource(ipv6, inTestMode()); - obj->setInt(".loaded", infinite_recursion_breaker); } } @@ -107,7 +105,16 @@ void Preprocessor::findMultiAddressObjectsUsedInRules(FWObject *top) else { FWObject *obj_ptr = FWReference::getObject(obj); + if (obj_ptr->getInt(".loaded") == infinite_recursion_breaker) + continue; + obj_ptr->setInt(".loaded", infinite_recursion_breaker); + + try + { convertObject(obj_ptr); + } catch (FWException &ex) { + abort(ex.toString()); + } // Note that MultiAddress inherits ObjectGroup if (Group::cast(obj_ptr)) @@ -127,8 +134,6 @@ void Preprocessor::compile() infinite_recursion_breaker++; FWObject *rule_copy = NULL; - try - { if (single_rule_mode) { rule_copy = dbcopy->findInIndex(single_rule_compile_rule->getId()); @@ -138,10 +143,6 @@ void Preprocessor::compile() FWObject *fwcopy = dbcopy->findInIndex(fw->getId()); findMultiAddressObjectsUsedInRules(fwcopy); } - } catch (FWException &ex) - { - abort(ex.toString()); - } /* resolving MultiAddress objects */ // convertObjectsRecursively(dbcopy); } ----------------------------------------------------------------------- Summary of changes: doc/ChangeLog | 5 +++ src/libfwbuilder/src/fwcompiler/Preprocessor.cpp | 33 +++++++++++---------- 2 files changed, 22 insertions(+), 16 deletions(-) hooks/post-receive -- Firewall Builder GUI and Policy Compilers Open Source Code |