[fwbuilder-commits] [SCM] Firewall Builder GUI and Policy Compilers Open Source Code branch, develo
Brought to you by:
mikehorn
From: <gi...@ir...> - 2011-01-25 01:22:09
|
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 498d9456ca9659e9944cf317f652ca94a0733184 (commit) from 7c1108204e38366238c6c31edd88cc7e580631d9 (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 498d9456ca9659e9944cf317f652ca94a0733184 Author: Vadim Kurland <va...@ne...> Date: Mon Jan 24 17:09:49 2011 -0800 see #1980 Objects from Deleted Objects should not be allowed to be used in rules diff --git a/doc/ChangeLog b/doc/ChangeLog index 90ef75e..2d803d4 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,5 +1,10 @@ 2011-01-24 Vadim Kurland <va...@ne...> + * ObjectIconView.cpp (dragEnterEvent): see #1980 "Objects from + Deleted Objects should not be allowed to be used in rules". Added + checks to not allow drag&drop of an object from Deleted Objects + library into rules and groups. + * NamedObject.cpp (createServiceObjectCommand): See #1958 "consistently use "exit" to get out of nested context in pix config". Using "exit" to exit from nested context while adding diff --git a/src/libgui/GroupObjectDialog.cpp b/src/libgui/GroupObjectDialog.cpp index 24ba7f8..4fd7cf0 100644 --- a/src/libgui/GroupObjectDialog.cpp +++ b/src/libgui/GroupObjectDialog.cpp @@ -343,6 +343,10 @@ void GroupObjectDialog::insertObject(FWObject *o) assert(g!=NULL); if ( ! g->validateChild(o) || g->isReadOnly() ) return; + // see #1976 do not allow pasting object that has been deleted + // note that we call insertObject() from dropEvent(), not only from paste() + if (o->getLibrary()->getId() == FWObjectDatabase::DELETED_OBJECTS_ID) + return; if (fwbdebug) qDebug("Adding object %s to the group %s", diff --git a/src/libgui/ObjectIconView.cpp b/src/libgui/ObjectIconView.cpp index dce83a0..39378fe 100644 --- a/src/libgui/ObjectIconView.cpp +++ b/src/libgui/ObjectIconView.cpp @@ -27,6 +27,7 @@ #include "../../config.h" #include "global.h" +#include "FWBTree.h" #include "ProjectPanel.h" #include "ObjectIconView.h" #include "ObjectIconViewItem.h" @@ -147,7 +148,47 @@ void ObjectIconView::dragEnterEvent( QDragEnterEvent *ev) { if (fwbdebug) qDebug("ObjectIconView::dragEnterEvent"); - ev->setAccepted( ev->mimeData()->hasFormat(FWObjectDrag::FWB_MIME_TYPE) ); +// ev->setAccepted( ev->mimeData()->hasFormat(FWObjectDrag::FWB_MIME_TYPE) ); + + QWidget *fromWidget = ev->source(); + + // The source of DnD object must be the same instance of fwbuilder + if (!fromWidget) + { + ev->setAccepted(false); + return; + } + + if (!ev->mimeData()->hasFormat(FWObjectDrag::FWB_MIME_TYPE)) + { + ev->setAccepted(false); + return; + } + + list<FWObject*> dragol; + if (!FWObjectDrag::decode(ev, dragol)) + ev->setAccepted(false); + for (list<FWObject*>::iterator i=dragol.begin();i!=dragol.end(); ++i) + { + FWObject *dragobj = *i; + assert(dragobj!=NULL); + + if (FWBTree().isSystem(dragobj)) + { +// can not drop system folder anywhere + ev->setAccepted(false); + return; + } + + // see #1976 do not allow pasting object that has been deleted + if (dragobj->getLibrary()->getId() == FWObjectDatabase::DELETED_OBJECTS_ID) + { + ev->setAccepted(false); + return; + } + } + + ev->setAccepted(true); } void ObjectIconView::dragMoveEvent( QDragMoveEvent *ev) diff --git a/src/libgui/ObjectListView.cpp b/src/libgui/ObjectListView.cpp index 3069e9c..32f8ab9 100644 --- a/src/libgui/ObjectListView.cpp +++ b/src/libgui/ObjectListView.cpp @@ -31,6 +31,7 @@ #include "fwbuilder/Resources.h" #include "fwbuilder/FWObjectDatabase.h" +#include "FWBTree.h" #include "ProjectPanel.h" #include "ObjectListView.h" #include "ObjectListViewItem.h" @@ -160,7 +161,47 @@ void ObjectListView::dragEnterEvent( QDragEnterEvent *ev) { if (fwbdebug) qDebug("ObjectListView::dragEnterEvent"); - ev->setAccepted( ev->mimeData()->hasFormat(FWObjectDrag::FWB_MIME_TYPE) ); + //ev->setAccepted( ev->mimeData()->hasFormat(FWObjectDrag::FWB_MIME_TYPE) ); + + QWidget *fromWidget = ev->source(); + + // The source of DnD object must be the same instance of fwbuilder + if (!fromWidget) + { + ev->setAccepted(false); + return; + } + + if (!ev->mimeData()->hasFormat(FWObjectDrag::FWB_MIME_TYPE)) + { + ev->setAccepted(false); + return; + } + + list<FWObject*> dragol; + if (!FWObjectDrag::decode(ev, dragol)) + ev->setAccepted(false); + for (list<FWObject*>::iterator i=dragol.begin();i!=dragol.end(); ++i) + { + FWObject *dragobj = *i; + assert(dragobj!=NULL); + + if (FWBTree().isSystem(dragobj)) + { +// can not drop system folder anywhere + ev->setAccepted(false); + return; + } + + // see #1976 do not allow pasting object that has been deleted + if (dragobj->getLibrary()->getId() == FWObjectDatabase::DELETED_OBJECTS_ID) + { + ev->setAccepted(false); + return; + } + } + + ev->setAccepted(true); } void ObjectListView::dropEvent(QDropEvent *ev) diff --git a/src/libgui/ObjectTreeView.cpp b/src/libgui/ObjectTreeView.cpp index aff24c5..1726a72 100644 --- a/src/libgui/ObjectTreeView.cpp +++ b/src/libgui/ObjectTreeView.cpp @@ -461,6 +461,7 @@ void ObjectTreeView::dragMoveEvent( QDragMoveEvent *ev) ev->setAccepted(false); return; } + list<FWObject*> dragol; if (!FWObjectDrag::decode(ev, dragol)) ev->setAccepted(false); @@ -475,6 +476,13 @@ void ObjectTreeView::dragMoveEvent( QDragMoveEvent *ev) ev->setAccepted(false); return; } + + // see #1976 do not allow pasting object that has been deleted + if (dragobj->getLibrary()->getId() == FWObjectDatabase::DELETED_OBJECTS_ID) + { + ev->setAccepted(false); + return; + } } ev->setAccepted(true); diff --git a/src/libgui/RuleSetView.cpp b/src/libgui/RuleSetView.cpp index 3b2b8c6..122ff88 100644 --- a/src/libgui/RuleSetView.cpp +++ b/src/libgui/RuleSetView.cpp @@ -742,7 +742,7 @@ void RuleSetView::addColumnRelatedMenu(QMenu *menu, const QModelIndex &index, FWObject *obj_in_clipboard = FWObjectClipboard::obj_clipboard->getObject(); bool obj_deleted = (obj_in_clipboard && - obj_in_clipboard->getParent()->getId() == + obj_in_clipboard->getLibrary()->getId() == FWObjectDatabase::DELETED_OBJECTS_ID); pasteID->setEnabled(obj_in_clipboard!=NULL && !obj_deleted); @@ -2213,7 +2213,8 @@ bool RuleSetView::validateForInsertionToInterfaceRE(RuleElementItf *re, bool RuleSetView::validateForInsertion(QModelIndex index, FWObject *obj) { ColDesc colDesc = index.data(Qt::UserRole).value<ColDesc>(); - if (colDesc.type != ColDesc::Object && colDesc.type != ColDesc::Time) return false; + if (colDesc.type != ColDesc::Object && colDesc.type != ColDesc::Time) + return false; RuleElement *re = (RuleElement *)index.data(Qt::DisplayRole).value<void *>(); assert (re!=NULL); @@ -2224,6 +2225,10 @@ bool RuleSetView::validateForInsertion(RuleElement *re, FWObject *obj, bool quie { if (RuleSet::cast(obj)!=NULL) return false; + // see #1976 do not allow pasting object that has been deleted + if (obj && obj->getLibrary()->getId() == FWObjectDatabase::DELETED_OBJECTS_ID) + return false; + if (! re->validateChild(obj) ) { if (!quiet) ----------------------------------------------------------------------- Summary of changes: doc/ChangeLog | 5 ++++ src/libgui/GroupObjectDialog.cpp | 4 +++ src/libgui/ObjectIconView.cpp | 43 +++++++++++++++++++++++++++++++++++++- src/libgui/ObjectListView.cpp | 43 +++++++++++++++++++++++++++++++++++++- src/libgui/ObjectTreeView.cpp | 8 +++++++ src/libgui/RuleSetView.cpp | 9 ++++++- 6 files changed, 108 insertions(+), 4 deletions(-) hooks/post-receive -- Firewall Builder GUI and Policy Compilers Open Source Code |