diff options
Diffstat (limited to 'extensions/source')
-rw-r--r-- | extensions/source/plugin/base/context.cxx | 7 | ||||
-rw-r--r-- | extensions/source/plugin/unx/mediator.cxx | 9 | ||||
-rw-r--r-- | extensions/source/scanner/sane.cxx | 6 |
3 files changed, 17 insertions, 5 deletions
diff --git a/extensions/source/plugin/base/context.cxx b/extensions/source/plugin/base/context.cxx index 05978fe09cb6..217a4bbe7064 100644 --- a/extensions/source/plugin/base/context.cxx +++ b/extensions/source/plugin/base/context.cxx @@ -44,6 +44,7 @@ #include <plugin/impl.hxx> +#include <sal/log.hxx> #include <com/sun/star/frame/FrameSearchFlag.hpp> #include <com/sun/star/frame/XComponentLoader.hpp> #include <tools/fsys.hxx> @@ -340,7 +341,11 @@ void FileSink::closeOutput() throw() void FileSink::writeBytes( const Sequence<sal_Int8>& Buffer ) throw() { if( fp ) - fwrite( Buffer.getConstArray(), 1, Buffer.getLength(), fp ); + { + size_t nItems = Buffer.getLength(); + bool bSuccess = (fwrite(Buffer.getConstArray(), 1, nItems, fp) == nItems); + SAL_WARN_IF( !bSuccess, "extensions", "short write"); + } } void FileSink::flush() throw() diff --git a/extensions/source/plugin/unx/mediator.cxx b/extensions/source/plugin/unx/mediator.cxx index a98e19ea71ec..4edefaaab440 100644 --- a/extensions/source/plugin/unx/mediator.cxx +++ b/extensions/source/plugin/unx/mediator.cxx @@ -30,6 +30,7 @@ #include <unistd.h> #include <plugin/unx/mediator.hxx> +#include <sal/log.hxx> #include <vcl/svapp.hxx> #define MEDIATOR_MAGIC 0xf7a8d2f4 @@ -59,7 +60,9 @@ Mediator::~Mediator() aHeader[0] = 0; aHeader[1] = 0; aHeader[2] = MEDIATOR_MAGIC; - write( m_nSocket, aHeader, sizeof( aHeader ) ); + ssize_t nToWrite = sizeof(aHeader); + bool bSuccess = (nToWrite == write(m_nSocket, aHeader, nToWrite)); + SAL_WARN_IF( !bSuccess, "extensions", "short write"); } // kick the thread out of its run method; it deletes itself close( m_nSocket ); @@ -95,7 +98,9 @@ sal_uLong Mediator::SendMessage( sal_uLong nBytes, const char* pBytes, sal_uLong pBuffer[ 1 ] = nBytes; pBuffer[ 2 ] = MEDIATOR_MAGIC; memcpy( &pBuffer[3], pBytes, (size_t)nBytes ); - write( m_nSocket, pBuffer, nBytes + 3*sizeof( sal_uLong ) ); + ssize_t nToWrite = nBytes + 3*sizeof( sal_uLong ); + bool bSuccess = (nToWrite == write( m_nSocket, pBuffer, nToWrite )); + SAL_WARN_IF( !bSuccess, "extensions", "short write"); delete [] pBuffer; return nMessageID; diff --git a/extensions/source/scanner/sane.cxx b/extensions/source/scanner/sane.cxx index b89f9bd3b793..0e0ff6469c02 100644 --- a/extensions/source/scanner/sane.cxx +++ b/extensions/source/scanner/sane.cxx @@ -748,12 +748,14 @@ sal_Bool Sane::Start( BitmapTransporter& rBitmap ) if( nLen && ( nStatus == SANE_STATUS_GOOD || nStatus == SANE_STATUS_EOF ) ) { - fwrite( pBuffer, 1, nLen, pFrame ); + bSuccess = (static_cast<size_t>(nLen) == fwrite( pBuffer, 1, nLen, pFrame )); + if (!bSuccess) + break; } else DUMP_STATE( nStatus, "sane_read" ); } while( nStatus == SANE_STATUS_GOOD ); - if( nStatus != SANE_STATUS_EOF ) + if (nStatus != SANE_STATUS_EOF || !bSuccess) { fclose( pFrame ); bSuccess = sal_False; |