[Libreoffice-commits] .: Branch 'libreoffice-4-0' - sal/osl

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Jan 16 11:04:47 PST 2013


 sal/osl/w32/file_dirvol.cxx |   20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

New commits:
commit 1839f7be0a6720c11086df00a50443fe8ee3bd00
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Jan 16 17:19:10 2013 +0100

    fdo#58415: Don't ignore osl_getFileURLFromSystemPath failure
    
    ...in osl_getFileStatus et al, it would leave the relevant status string member
    unchanged (i.e., a null pointer) but would mark it as valid, so that later code
    to retrieve the allegedly valid string member would crash upon the null pointer.
    
    Change-Id: Ia8528f5dc27d94f3d14a2c416955a041b87863d3
    (cherry picked from commit 588997f0ebc5696574680098b128e66eff54f00c)
    Reviewed-on: https://gerrit.libreoffice.org/1719
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>

diff --git a/sal/osl/w32/file_dirvol.cxx b/sal/osl/w32/file_dirvol.cxx
index 484bc1b..89d286b 100644
--- a/sal/osl/w32/file_dirvol.cxx
+++ b/sal/osl/w32/file_dirvol.cxx
@@ -1515,8 +1515,10 @@ oslFileError SAL_CALL osl_getVolumeInformation(
 
     if (uFieldMask & osl_VolumeInfo_Mask_DeviceHandle)
     {
+        error = osl_getFileURLFromSystemPath(volume_root.pData, (rtl_uString**)&pInfo->pDeviceHandle);
+        if (error != osl_File_E_None)
+            return error;
         pInfo->uValidFields |= osl_VolumeInfo_Mask_DeviceHandle;
-        osl_getFileURLFromSystemPath(volume_root.pData, (rtl_uString**)&pInfo->pDeviceHandle);
     }
 
     return osl_File_E_None;
@@ -1612,8 +1614,10 @@ static oslFileError SAL_CALL osl_getDriveInfo(
         rtl_uString *ustrSystemPath = NULL;
 
         rtl_uString_newFromStr( &ustrSystemPath, reinterpret_cast<const sal_Unicode*>(pItemImpl->cDriveString) );
-        osl_getFileURLFromSystemPath( ustrSystemPath, &pStatus->ustrFileURL );
+        oslFileError error = osl_getFileURLFromSystemPath( ustrSystemPath, &pStatus->ustrFileURL );
         rtl_uString_release( ustrSystemPath );
+        if (error != osl_File_E_None)
+            return error;
         pStatus->uValidFields |= osl_FileStatus_Mask_FileURL;
     }
     return osl_File_E_None;
@@ -1641,7 +1645,9 @@ static oslFileError SAL_CALL osl_getServerInfo(
 
     if ( uFieldMask & osl_FileStatus_Mask_FileURL )
     {
-        osl_getFileURLFromSystemPath( pItemImpl->m_pFullPath, &pStatus->ustrFileURL );
+        oslFileError error = osl_getFileURLFromSystemPath( pItemImpl->m_pFullPath, &pStatus->ustrFileURL );
+        if (error != osl_File_E_None)
+            return error;
         pStatus->uValidFields |= osl_FileStatus_Mask_FileURL;
     }
     return osl_File_E_None;
@@ -1730,7 +1736,9 @@ oslFileError SAL_CALL osl_getFileStatus(
 
     if ( uFieldMask & osl_FileStatus_Mask_LinkTargetURL )
     {
-        osl_getFileURLFromSystemPath( pItemImpl->m_pFullPath, &pStatus->ustrLinkTargetURL );
+        oslFileError error = osl_getFileURLFromSystemPath( pItemImpl->m_pFullPath, &pStatus->ustrLinkTargetURL );
+        if (error != osl_File_E_None)
+            return error;
 
         pStatus->uValidFields |= osl_FileStatus_Mask_LinkTargetURL;
     }
@@ -1752,7 +1760,9 @@ oslFileError SAL_CALL osl_getFileStatus(
             }
         }
 
-        osl_getFileURLFromSystemPath( pItemImpl->m_pFullPath, &pStatus->ustrFileURL );
+        oslFileError error = osl_getFileURLFromSystemPath( pItemImpl->m_pFullPath, &pStatus->ustrFileURL );
+        if (error != osl_File_E_None)
+            return error;
         pStatus->uValidFields |= osl_FileStatus_Mask_FileURL;
     }
 


More information about the Libreoffice-commits mailing list