Kaydet (Commit) ba46f32c authored tarafından Michael Stahl's avatar Michael Stahl

deploy some asserts to detect truncated STREAM_SEEK_TO_END

Since STREAM_SEEK_TO_END is now 64 bits it could happen that some
existing code uses it in some indirect manner and it gets truncated to
32 bits somewhere (on 32 bit platforms); try to detect that with asserts.

Of course the checked value is now a valid stream position, so
perhaps the checks should eventually be removed.

Change-Id: I4248c00d758220bdc3ee94c7aa7a7bd4c86c57f0
üst 1b40966f
......@@ -374,6 +374,8 @@ sal_Size OslStream::PutData(const void* pData, sal_Size nSize)
sal_uInt64 OslStream::SeekPos( sal_uInt64 nPos )
{
::osl::FileBase::RC rc = ::osl::FileBase::E_None;
// check if a truncated STREAM_SEEK_TO_END was passed
assert(nPos != (sal_uInt64)(sal_uInt32)STREAM_SEEK_TO_END);
if( nPos == STREAM_SEEK_TO_END )
{
rc = maFile.setPos( osl_Pos_End, 0 );
......
......@@ -1283,6 +1283,8 @@ sal_uLong StgTmpStrm::PutData( const void* pData, sal_uLong n )
sal_uInt64 StgTmpStrm::SeekPos(sal_uInt64 n)
{
// check if a truncated STREAM_SEEK_TO_END was passed
assert(n != (sal_uInt64)(sal_uInt32)STREAM_SEEK_TO_END);
if( n == STREAM_SEEK_TO_END )
n = GetSize();
if( n && n > THRESHOLD && !pStrm )
......
......@@ -941,6 +941,9 @@ sal_uLong UCBStorageStream_Impl::PutData( const void* pData, sal_uLong nSize )
sal_uInt64 UCBStorageStream_Impl::SeekPos(sal_uInt64 const nPos)
{
// check if a truncated STREAM_SEEK_TO_END was passed
assert(nPos != (sal_uInt64)(sal_uInt32)STREAM_SEEK_TO_END);
if( !Init() )
return 0;
......
......@@ -448,6 +448,8 @@ sal_uLong SvInputStream::GetData(void * pData, sal_uLong nSize)
SetError(ERRCODE_IO_CANTREAD);
return 0;
}
// check if a truncated STREAM_SEEK_TO_END was passed
assert(m_nSeekedFrom != (sal_uInt64)(sal_uInt32)STREAM_SEEK_TO_END);
sal_uInt32 nRead = 0;
if (m_xSeekable.is())
{
......@@ -548,6 +550,8 @@ void SvInputStream::FlushData()
// virtual
sal_uInt64 SvInputStream::SeekPos(sal_uInt64 const nPos)
{
// check if a truncated STREAM_SEEK_TO_END was passed
assert(nPos != (sal_uInt64)(sal_uInt32)STREAM_SEEK_TO_END);
if (open())
{
if (nPos == STREAM_SEEK_TO_END)
......
......@@ -308,6 +308,8 @@ ErrCode SvAsyncLockBytes::FillAppend(const void * pBuffer, sal_Size nCount,
// virtual
sal_uInt64 SvAsyncLockBytes::Seek(sal_uInt64 const nPos)
{
// check if a truncated STREAM_SEEK_TO_END was passed
assert(nPos != (sal_uInt64)(sal_uInt32)STREAM_SEEK_TO_END);
if (nPos != STREAM_SEEK_TO_END)
m_nSize = nPos;
return m_nSize;
......@@ -343,6 +345,8 @@ sal_Size SvStream::PutData( const void* pData, sal_Size nSize )
sal_uInt64 SvStream::SeekPos(sal_uInt64 const nPos)
{
// check if a truncated STREAM_SEEK_TO_END was passed
assert(nPos != (sal_uInt64)(sal_uInt32)STREAM_SEEK_TO_END);
if( !GetError() && nPos == STREAM_SEEK_TO_END )
{
DBG_ASSERT( xLockBytes.Is(), "pure virtual function" );
......@@ -1839,6 +1843,8 @@ sal_uInt64 SvMemoryStream::SeekPos(sal_uInt64 const nNewPos)
// nEndOfData: First position in stream not allowed to read from
// nSize: Size of allocated buffer
// check if a truncated STREAM_SEEK_TO_END was passed
assert(nNewPos != (sal_uInt64)(sal_uInt32)STREAM_SEEK_TO_END);
if( nNewPos < nEndOfData )
nPos = nNewPos;
else if( nNewPos == STREAM_SEEK_TO_END )
......
......@@ -358,6 +358,8 @@ sal_Size SvFileStream::PutData( const void* pData, sal_Size nSize )
sal_uInt64 SvFileStream::SeekPos(sal_uInt64 const nPos)
{
// check if a truncated STREAM_SEEK_TO_END was passed
assert(nPos != (sal_uInt64)(sal_uInt32)STREAM_SEEK_TO_END);
if ( IsOpen() )
{
oslFileError rc;
......
......@@ -162,6 +162,8 @@ sal_Size SvFileStream::PutData( const void* pData, sal_Size nSize )
sal_uInt64 SvFileStream::SeekPos(sal_uInt64 const nPos)
{
// check if a truncated STREAM_SEEK_TO_END was passed
assert(nPos != (sal_uInt64)(sal_uInt32)STREAM_SEEK_TO_END);
DWORD nNewPos = 0;
if( IsOpen() )
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment