From: Wolfgang Bangerth Date: Thu, 27 Aug 1998 14:24:11 +0000 (+0000) Subject: Fix some security holes. X-Git-Tag: v8.0.0~22728 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=828d041524345e3ea046e206498d8dc143a95f45;p=dealii.git Fix some security holes. git-svn-id: https://svn.dealii.org/trunk@526 0785d39b-7218-0410-832d-ea1e28bc413d --- 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();