From 828d041524345e3ea046e206498d8dc143a95f45 Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Thu, 27 Aug 1998 14:24:11 +0000 Subject: [PATCH] Fix some security holes. git-svn-id: https://svn.dealii.org/trunk@526 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/source/dofs/dof_handler.cc | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/deal.II/deal.II/source/dofs/dof_handler.cc b/deal.II/deal.II/source/dofs/dof_handler.cc index b03c4367b8..96d6ad580f 100644 --- a/deal.II/deal.II/source/dofs/dof_handler.cc +++ b/deal.II/deal.II/source/dofs/dof_handler.cc @@ -1043,7 +1043,7 @@ void DoFHandler::renumber_dofs (const RenumberingMethod method, last_round_dofs[i] = -1; remove_if (last_round_dofs.begin(), last_round_dofs.end(), - bind2nd(equal_to(), 0)); + bind2nd(equal_to(), -1)); // now if no valid points remain: // find dof with lowest coordination @@ -1191,16 +1191,20 @@ void DoFHandler::renumber_dofs (const RenumberingMethod method, template <> void DoFHandler<1>::do_renumbering (const vector &new_numbers) { + Assert (new_number.size() == n_dofs(level), ExcRenumberingIncomplete()); + // note that we can not use cell iterators // in this function since then we would // renumber the dofs on the interface of // two cells more than once. Anyway, this - // ways it's not only more correct but also + // way it's not only more correct but also // faster for (vector::iterator i=vertex_dofs.begin(); i!=vertex_dofs.end(); ++i) - if (*i != -1) + { + Assert (*i != -1, ExcInternalError()); *i = new_numbers[*i]; - + }; + for (unsigned int level=0; level::iterator i=levels[level]->line_dofs.begin(); i!=levels[level]->line_dofs.end(); ++i) @@ -1215,10 +1219,14 @@ void DoFHandler<1>::do_renumbering (const vector &new_numbers) { template <> void DoFHandler<2>::do_renumbering (const vector &new_numbers) { + Assert (new_number.size() == n_dofs(level), ExcRenumberingIncomplete()); + for (vector::iterator i=vertex_dofs.begin(); i!=vertex_dofs.end(); ++i) - if (*i != -1) + { + Assert (*i != -1, ExcInternalError()); *i = new_numbers[*i]; - + }; + for (unsigned int level=0; level::iterator i=levels[level]->line_dofs.begin(); -- 2.39.5