diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2013-11-08 15:57:04 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2013-11-08 16:08:15 +0100 |
commit | ffbad093368fc307ddeb128c6654d67f967f2c9f (patch) | |
tree | 65f4b074d328a6266d12e44ae22330e779540057 /sw | |
parent | 797681b4f569212a0f306151167534e23a2e37af (diff) |
SwDoc::DelNumRule: fix out-of-bounds index access
When nPos == USHRT_MAX, even if later we checked for that case, just for
the sake of an assert(), we already called operator[] with nPos.
(To reproduce: right click on List 1 -> New -> Cancel, results in a
crash.)
Change-Id: I465b5519000b79bd8b2eaa3b3c1ceb80a182a25a
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/doc/docnum.cxx | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sw/source/core/doc/docnum.cxx b/sw/source/core/doc/docnum.cxx index db5dd76b7cdb..c6be76504127 100644 --- a/sw/source/core/doc/docnum.cxx +++ b/sw/source/core/doc/docnum.cxx @@ -1005,13 +1005,16 @@ bool SwDoc::DelNumRule( const OUString& rName, bool bBroadcast ) { sal_uInt16 nPos = FindNumRule( rName ); + if (nPos == USHRT_MAX) + return false; + if ( (*mpNumRuleTbl)[ nPos ] == GetOutlineNumRule() ) { OSL_FAIL( "<SwDoc::DelNumRule(..)> - No deletion of outline list style. This is serious defect - please inform OD" ); return false; } - if( USHRT_MAX != nPos && !IsUsed( *(*mpNumRuleTbl)[ nPos ] )) + if( !IsUsed( *(*mpNumRuleTbl)[ nPos ] )) { if (GetIDocumentUndoRedo().DoesUndo()) { |