cui/source/dialogs/SpellDialog.cxx | 2 filter/source/graphicfilter/ipict/ipict.cxx | 12 ++ include/basebmp/compositeiterator.hxx | 140 +++++++++++++++++----------- package/source/zipapi/ZipFile.cxx | 13 +- vcl/inc/openglgdiimpl.hxx | 2 vcl/opengl/gdiimpl.cxx | 10 -- vcl/opengl/win/gdiimpl.cxx | 4 vcl/opengl/x11/gdiimpl.cxx | 4 vcl/source/control/field.cxx | 7 + 9 files changed, 122 insertions(+), 72 deletions(-)
New commits: commit 5d8e23fdb98a74372ca3da37559af4b45655fee4 Author: Caolán McNamara <caol...@redhat.com> Date: Wed Nov 19 10:43:19 2014 +0000 coverity#1226488 Big parameter passed by value Change-Id: I55ee5dcd7ed18fe907fc06aba345d96a90fb2324 diff --git a/include/basebmp/compositeiterator.hxx b/include/basebmp/compositeiterator.hxx index 4fb9c10..1823181 100644 --- a/include/basebmp/compositeiterator.hxx +++ b/include/basebmp/compositeiterator.hxx @@ -89,26 +89,51 @@ namespace detail typedef DifferenceType difference_type; typedef IteratorCategory iterator_category; + struct Impl + { + iterator1_type maIter1; + iterator2_type maIter2; + Impl() + : maIter1() + , maIter2() + { + } + Impl(const iterator1_type& rIter1, const iterator2_type& rIter2) + : maIter1(rIter1) + , maIter2(rIter2) + { + } + }; + protected: - iterator1_type maIter1; - iterator2_type maIter2; + Impl* pImpl; private: bool equal(CompositeIteratorBase const & rhs) const { - return (maIter1 == rhs.maIter1) && (maIter2 == rhs.maIter2); + return (pImpl->maIter1 == rhs.pImpl->maIter1) && (pImpl->maIter2 == rhs.pImpl->maIter2); } public: - CompositeIteratorBase() : - maIter1(), - maIter2() - {} + CompositeIteratorBase() + { + pImpl = new Impl(); + } - CompositeIteratorBase( const iterator1_type& rIter1, const iterator2_type& rIter2 ) : - maIter1( rIter1 ), - maIter2( rIter2 ) - {} + CompositeIteratorBase(const iterator1_type& rIter1, const iterator2_type& rIter2) + { + pImpl = new Impl(rIter1, rIter2); + } + + CompositeIteratorBase(const CompositeIteratorBase& rOther) + { + pImpl = new Impl(rOther.pImpl->maIter1, rOther.pImpl->maIter2); + } + + ~CompositeIteratorBase() + { + delete pImpl; + } bool operator==(Derived const & rhs) const { @@ -122,21 +147,21 @@ namespace detail difference_type operator-(Derived const & rhs) const { - OSL_ASSERT( maIter1 - rhs.maIter1 == maIter2 - rhs.maIter2 ); - return maIter1 - rhs.maIter1; + OSL_ASSERT(pImpl->maIter1 - rhs.pImpl->maIter1 == pImpl->maIter2 - rhs.pImpl->maIter2); + return pImpl->maIter1 - rhs.pImpl->maIter1; } Derived & operator+=(difference_type const & s) { - maIter1 += s; - maIter2 += s; + pImpl->maIter1 += s; + pImpl->maIter2 += s; return static_cast<Derived&>(*this); } Derived & operator-=(difference_type const & s) { - maIter1 -= s; - maIter2 -= s; + pImpl->maIter1 -= s; + pImpl->maIter2 -= s; return static_cast<Derived&>(*this); } @@ -156,63 +181,70 @@ namespace detail Derived& operator++() { - ++maIter1; - ++maIter2; + ++pImpl->maIter1; + ++pImpl->maIter2; return static_cast<Derived&>(*this); } Derived& operator--() { - --maIter1; - --maIter2; + --pImpl->maIter1; + --pImpl->maIter2; return static_cast<Derived&>(*this); } Derived operator++(int) { Derived ret(static_cast<Derived const&>(*this)); - ++maIter1; - ++maIter2; + ++pImpl->maIter1; + ++pImpl->maIter2; return ret; } Derived operator--(int) { Derived ret(static_cast<Derived const&>(*this)); - --maIter1; - --maIter2; + --pImpl->maIter1; + --pImpl->maIter2; return ret; } value_type get() const { - return value_type(maIter1.get(), - maIter2.get()); + return value_type(pImpl->maIter1.get(), + pImpl->maIter2.get()); } value_type get(difference_type const & d) const { - return value_type(maIter1.get(d), - maIter2.get(d)); + return value_type(pImpl->maIter1.get(d), + pImpl->maIter2.get(d)); } void set( value_type v ) const { - maIter1.set(v); - maIter2.set(v); + pImpl->maIter1.set(v); + pImpl->maIter2.set(v); } void set( value_type v, difference_type const & d ) const { - maIter1.set(v,d); - maIter2.set(v,d); + pImpl->maIter1.set(v,d); + pImpl->maIter2.set(v,d); } - const iterator1_type& first() const { return maIter1; } - iterator1_type& first() { return maIter1; } + CompositeIteratorBase& operator=(const CompositeIteratorBase& rNew) + { + this->pImpl->maIter1 = rNew.pImpl->maIter1; + this->pImpl->maIter2 = rNew.pImpl->maIter2; + return *this; + } - const iterator2_type& second() const { return maIter2; } - iterator2_type& second() { return maIter2; } + const iterator1_type& first() const { return pImpl->maIter1; } + iterator1_type& first() { return pImpl->maIter1; } + + const iterator2_type& second() const { return pImpl->maIter2; } + iterator2_type& second() { return pImpl->maIter2; } }; } @@ -314,43 +346,45 @@ public: CompositeIterator2D() : base_type(), - x(this->maIter1.x,this->maIter2.x), - y(this->maIter1.y,this->maIter2.y) + x(this->pImpl->maIter1.x,this->pImpl->maIter2.x), + y(this->pImpl->maIter1.y,this->pImpl->maIter2.y) {} CompositeIterator2D( const Iterator1& rIter1, const Iterator2& rIter2 ) : base_type( rIter1, rIter2 ), - x(this->maIter1.x,this->maIter2.x), - y(this->maIter1.y,this->maIter2.y) + x(this->pImpl->maIter1.x,this->pImpl->maIter2.x), + y(this->pImpl->maIter1.y,this->pImpl->maIter2.y) {} CompositeIterator2D( const CompositeIterator2D& rOld ) : base_type(rOld), - x(this->maIter1.x,this->maIter2.x), - y(this->maIter1.y,this->maIter2.y) + x(this->pImpl->maIter1.x,this->pImpl->maIter2.x), + y(this->pImpl->maIter1.y,this->pImpl->maIter2.y) {} CompositeIterator2D& operator=( const CompositeIterator2D& rNew ) { - this->maIter1 = rNew.maIter1; - this->maIter2 = rNew.maIter2; + this->pImpl->maIter1 = rNew.pImpl->maIter1; + this->pImpl->maIter2 = rNew.pImpl->maIter2; + + x = MoveX(this->pImpl->maIter1.x, + this->pImpl->maIter2.x); + y = MoveY(this->pImpl->maIter1.y, + this->pImpl->maIter2.y); - x = MoveX(this->maIter1.x, - this->maIter2.x); - y = MoveY(this->maIter1.y, - this->maIter2.y); + return *this; } row_iterator rowIterator() const { - return row_iterator(this->maIter1.rowIterator(), - this->maIter2.rowIterator()); + return row_iterator(this->pImpl->maIter1.rowIterator(), + this->pImpl->maIter2.rowIterator()); } column_iterator columnIterator() const { - return column_iterator(this->maIter1.columnIterator(), - this->maIter2.columnIterator()); + return column_iterator(this->pImpl->maIter1.columnIterator(), + this->pImpl->maIter2.columnIterator()); } }; commit 319524767ea1f399be6a9491eb053a74abf3dd1e Author: Caolán McNamara <caol...@redhat.com> Date: Wed Nov 19 10:23:18 2014 +0000 coverity#1242675 Untrusted value as argument Change-Id: I1d8f32095f297919dc3ccab51093295f8c31707d diff --git a/package/source/zipapi/ZipFile.cxx b/package/source/zipapi/ZipFile.cxx index cd4ed2e..bb178f5 100644 --- a/package/source/zipapi/ZipFile.cxx +++ b/package/source/zipapi/ZipFile.cxx @@ -660,11 +660,16 @@ bool ZipFile::readLOC( ZipEntry &rEntry ) try { + sal_Int16 nPathLenToRead = nPathLen; + const sal_Int64 nBytesAvailable = aGrabber.getLength() - aGrabber.getPosition(); + if (nPathLenToRead > nBytesAvailable) + nPathLenToRead = nBytesAvailable; + // read always in UTF8, some tools seem not to set UTF8 bit - uno::Sequence < sal_Int8 > aNameBuffer( nPathLen ); - sal_Int32 nRead = aGrabber.readBytes( aNameBuffer, nPathLen ); - if ( nRead < aNameBuffer.getLength() ) - aNameBuffer.realloc( nRead ); + uno::Sequence<sal_Int8> aNameBuffer(nPathLenToRead); + sal_Int32 nRead = aGrabber.readBytes(aNameBuffer, nPathLenToRead); + if (nRead < aNameBuffer.getLength()) + aNameBuffer.realloc(nRead); OUString sLOCPath = OUString::intern( (sal_Char *) aNameBuffer.getArray(), aNameBuffer.getLength(), commit c3aec587d8fdbdada5a9e26595e7b29e4e6a2920 Author: Caolán McNamara <caol...@redhat.com> Date: Wed Nov 19 10:02:39 2014 +0000 coverity#735402 Logically dead code Change-Id: Iafc67b4ccd30afdc2dc1c4fb058f9933fa90185a diff --git a/cui/source/dialogs/SpellDialog.cxx b/cui/source/dialogs/SpellDialog.cxx index cb064d6..96b59dc 100644 --- a/cui/source/dialogs/SpellDialog.cxx +++ b/cui/source/dialogs/SpellDialog.cxx @@ -1419,7 +1419,7 @@ bool SentenceEditWindow_Impl::PreNotify( NotifyEvent& rNEvt ) break; // 4 - on field UE and on error CO case FULL : - nAction = bHasField ? ACTION_UNDOEDIT : ACTION_CONTINUE; + nAction = ACTION_UNDOEDIT; break; // 5 - on field FS and on error CO case INSIDE_YES : commit c7d03c4e9c0bde6cb838b9812e1c0d19191a7e44 Author: Caolán McNamara <caol...@redhat.com> Date: Wed Nov 19 09:58:05 2014 +0000 coverity#1254674 Unchecked dynamic_cast Change-Id: Iae62353e42947324beca8d036fcd1c20346d0d29 diff --git a/vcl/inc/openglgdiimpl.hxx b/vcl/inc/openglgdiimpl.hxx index 29bc7a2..5e4af51 100644 --- a/vcl/inc/openglgdiimpl.hxx +++ b/vcl/inc/openglgdiimpl.hxx @@ -230,7 +230,7 @@ public: // CopyBits and DrawBitmap --> RasterOp and ClipRegion // CopyBits() --> pSrcGraphics == NULL, then CopyBits on same Graphics - void DoCopyBits( const SalTwoRect& rPosAry, OpenGLSalGraphicsImpl *pSrcImpl ); + void DoCopyBits(const SalTwoRect& rPosAry, OpenGLSalGraphicsImpl &rSrcImpl); virtual void drawBitmap( const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap ) SAL_OVERRIDE; diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx index 805c693..3929d63 100644 --- a/vcl/opengl/gdiimpl.cxx +++ b/vcl/opengl/gdiimpl.cxx @@ -1301,13 +1301,11 @@ void OpenGLSalGraphicsImpl::copyArea( // CopyBits and DrawBitmap --> RasterOp and ClipRegion // CopyBits() --> pSrcGraphics == NULL, then CopyBits on same Graphics -void OpenGLSalGraphicsImpl::DoCopyBits( const SalTwoRect& rPosAry, OpenGLSalGraphicsImpl* pSrcImpl ) +void OpenGLSalGraphicsImpl::DoCopyBits( const SalTwoRect& rPosAry, OpenGLSalGraphicsImpl& rImpl ) { - OpenGLSalGraphicsImpl *pImpl = pSrcImpl; - SAL_INFO( "vcl.opengl", "::copyBits" ); - if( pImpl == this && + if( &rImpl == this && (rPosAry.mnSrcWidth == rPosAry.mnDestWidth) && (rPosAry.mnSrcHeight == rPosAry.mnDestHeight)) { @@ -1321,10 +1319,10 @@ void OpenGLSalGraphicsImpl::DoCopyBits( const SalTwoRect& rPosAry, OpenGLSalGrap return; } - if( pImpl->mbOffscreen ) + if( rImpl.mbOffscreen ) { PreDraw(); - DrawTexture( pImpl->maOffscreenTex, rPosAry ); + DrawTexture( rImpl.maOffscreenTex, rPosAry ); PostDraw(); return; } diff --git a/vcl/opengl/win/gdiimpl.cxx b/vcl/opengl/win/gdiimpl.cxx index 67a192e..18e0da8 100644 --- a/vcl/opengl/win/gdiimpl.cxx +++ b/vcl/opengl/win/gdiimpl.cxx @@ -20,8 +20,8 @@ WinOpenGLSalGraphicsImpl::WinOpenGLSalGraphicsImpl(WinSalGraphics& rGraphics): void WinOpenGLSalGraphicsImpl::copyBits( const SalTwoRect& rPosAry, SalGraphics* pSrcGraphics ) { - OpenGLSalGraphicsImpl *pImpl = pSrcGraphics ? dynamic_cast< OpenGLSalGraphicsImpl* >(pSrcGraphics->GetImpl()) : static_cast< OpenGLSalGraphicsImpl *>(mrParent.GetImpl()); - OpenGLSalGraphicsImpl::DoCopyBits( rPosAry, pImpl ); + OpenGLSalGraphicsImpl *pImpl = pSrcGraphics ? static_cast< OpenGLSalGraphicsImpl* >(pSrcGraphics->GetImpl()) : static_cast< OpenGLSalGraphicsImpl *>(mrParent.GetImpl()); + OpenGLSalGraphicsImpl::DoCopyBits( rPosAry, *pImpl ); } GLfloat WinOpenGLSalGraphicsImpl::GetWidth() const diff --git a/vcl/opengl/x11/gdiimpl.cxx b/vcl/opengl/x11/gdiimpl.cxx index dcefcc2..b3cee49 100644 --- a/vcl/opengl/x11/gdiimpl.cxx +++ b/vcl/opengl/x11/gdiimpl.cxx @@ -83,8 +83,8 @@ void X11OpenGLSalGraphicsImpl::Init() void X11OpenGLSalGraphicsImpl::copyBits( const SalTwoRect& rPosAry, SalGraphics* pSrcGraphics ) { - OpenGLSalGraphicsImpl *pImpl = pSrcGraphics ? dynamic_cast< OpenGLSalGraphicsImpl* >(pSrcGraphics->GetImpl()) : static_cast< OpenGLSalGraphicsImpl *>(mrParent.GetImpl()); - OpenGLSalGraphicsImpl::DoCopyBits( rPosAry, pImpl ); + OpenGLSalGraphicsImpl *pImpl = pSrcGraphics ? static_cast< OpenGLSalGraphicsImpl* >(pSrcGraphics->GetImpl()) : static_cast< OpenGLSalGraphicsImpl *>(mrParent.GetImpl()); + OpenGLSalGraphicsImpl::DoCopyBits( rPosAry, *pImpl ); } bool X11OpenGLSalGraphicsImpl::FillPixmapFromScreen( X11Pixmap* pPixmap, int nX, int nY ) commit 71f1553cee2c24a4e5b863750e5cfb795b54ecc2 Author: Caolán McNamara <caol...@redhat.com> Date: Wed Nov 19 09:50:40 2014 +0000 Related: coverity#1242658 Untrusted loop bound Change-Id: Ic785b333c1ad31036da20483dc7310fcc5338d80 diff --git a/filter/source/graphicfilter/ipict/ipict.cxx b/filter/source/graphicfilter/ipict/ipict.cxx index dec3fc6..852e69b 100644 --- a/filter/source/graphicfilter/ipict/ipict.cxx +++ b/filter/source/graphicfilter/ipict/ipict.cxx @@ -990,7 +990,11 @@ sal_uLong PictReader::ReadPixMapEtc( Bitmap &rBitmap, bool bBaseAddr, bool bColo if ( nRowBytes < 8 || nPackType == 1 ) { const size_t nMaxPixels = pPict->remainingSize() / 4; - if (static_cast<size_t>(nHeight) * nWidth > nMaxPixels) + const size_t nMaxRows = nMaxPixels / nWidth; + if (nHeight > nMaxRows) + BITMAPERROR; + const size_t nMaxCols = nMaxPixels / nHeight; + if (nWidth > nMaxCols) BITMAPERROR; for ( ny = 0; ny < nHeight; ny++ ) @@ -1006,7 +1010,11 @@ sal_uLong PictReader::ReadPixMapEtc( Bitmap &rBitmap, bool bBaseAddr, bool bColo else if ( nPackType == 2 ) { const size_t nMaxPixels = pPict->remainingSize() / 3; - if (static_cast<size_t>(nHeight) * nWidth > nMaxPixels) + const size_t nMaxRows = nMaxPixels / nWidth; + if (nHeight > nMaxRows) + BITMAPERROR; + const size_t nMaxCols = nMaxPixels / nHeight; + if (nWidth > nMaxCols) BITMAPERROR; for ( ny = 0; ny < nHeight; ny++ ) commit 885494f4b5e45bde3ecb029796930bfa6741512b Author: Caolán McNamara <caol...@redhat.com> Date: Wed Nov 19 09:34:13 2014 +0000 coverity#1242627 Use of untrusted scalar value Change-Id: I81b034859e80507740092b25a7352c19933e8449 diff --git a/vcl/source/control/field.cxx b/vcl/source/control/field.cxx index 53f0ac9..73d8e9a 100644 --- a/vcl/source/control/field.cxx +++ b/vcl/source/control/field.cxx @@ -1367,7 +1367,12 @@ void MetricFormatter::ImplLoadRes( const ResId& rResId ) sal_uLong nMask = pMgr->ReadLong(); if ( METRICFORMATTER_UNIT & nMask ) - meUnit = (FieldUnit)pMgr->ReadLong(); + { + sal_uLong nUnit = pMgr->ReadLong(); + assert(nUnit <= FUNIT_MILLISECOND && "out of FieldUnit bounds"); + if (nUnit <= FUNIT_MILLISECOND) + meUnit = (FieldUnit)nUnit; + } if ( METRICFORMATTER_CUSTOMUNITTEXT & nMask ) maCustomUnitText = pMgr->ReadString();
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits