unotools/source/config/securityoptions.cxx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)
New commits: commit b0c9f3b5f6cc86a94991c5970278f69df15aa7c1 Author: Stephan Bergmann <sberg...@redhat.com> Date: Tue Sep 25 15:41:42 2012 +0200 fdo#55019: Cope with empty TrustedAuthor entries Change-Id: I9c01c1c718897a4be992150170a6ed9b5bd8a0a0 diff --git a/unotools/source/config/securityoptions.cxx b/unotools/source/config/securityoptions.cxx index 1df26b1..1f8f0a2 100644 --- a/unotools/source/config/securityoptions.cxx +++ b/unotools/source/config/securityoptions.cxx @@ -26,6 +26,7 @@ #include <com/sun/star/uno/Sequence.hxx> #include <com/sun/star/beans/PropertyValue.hpp> +#include <comphelper/sequenceasvector.hxx> #include <tools/urlobj.hxx> #include <tools/wldcrd.hxx> @@ -473,7 +474,7 @@ void SvtSecurityOptions_Impl::LoadAuthors( void ) Sequence< Any > lValues = GetProperties( lAllAuthors ); if( lValues.getLength() == c2 ) { - m_seqTrustedAuthors.realloc( c1 ); + comphelper::SequenceAsVector< SvtSecurityOptions::Certificate > v; SvtSecurityOptions::Certificate aCert( 3 ); for( i1 = 0, i2 = 0 ; i1 < c1 ; ++i1 ) { @@ -483,8 +484,16 @@ void SvtSecurityOptions_Impl::LoadAuthors( void ) ++i2; lValues[ i2 ] >>= aCert[ 2 ]; ++i2; - m_seqTrustedAuthors[ i1 ] = aCert; + // Filter out TrustedAuthor entries with empty RawData, which + // would cause an unexpected std::bad_alloc in + // SecurityEnvironment_NssImpl::createCertificateFromAscii and + // have been observed in the wild (fdo#55019): + if( !aCert[ 2 ].isEmpty() ) + { + v.push_back( aCert ); + } } + m_seqTrustedAuthors = v.getAsConstList(); } } } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits