VirtualBox

Ticket #818: symlink-fix-4.0.0.patch

File symlink-fix-4.0.0.patch, 3.6 KB (added by Brian Campbell, 14 years ago)

Patch to (hopefully) fix problem with symlink on 64bit hosts for 4.0.0

  • src/VBox/HostServices/SharedFolders/service.cpp

    commit 73b816982a76e79e2751a0de8fb1506e10df8081
    Author: Brian Campbell <bacam@z273.org.uk>
    Date:   Thu Dec 30 18:04:50 2010 +0000
    
        Fix symlink on shared folders where sizeof(RTFSOBJINFO) != sizeof(SHFLFSOBJINFO)
    
    diff --git a/src/VBox/HostServices/SharedFolders/service.cpp b/src/VBox/HostServices/SharedFolders/service.cpp
    index 75c5641..64888ea 100644
    a b static DECLCALLBACK(void) svcCall (void *, VBOXHGCMCALLHANDLE callHandle, uint32  
    11831183                SHFLROOT     root     = (SHFLROOT)paParms[0].u.uint32;
    11841184                SHFLSTRING  *pNewPath = (SHFLSTRING *)paParms[1].u.pointer.addr;
    11851185                SHFLSTRING  *pOldPath = (SHFLSTRING *)paParms[2].u.pointer.addr;
    1186                 RTFSOBJINFO *pInfo    = (RTFSOBJINFO *)paParms[3].u.pointer.addr;
     1186                SHFLFSOBJINFO *pInfo  = (SHFLFSOBJINFO *)paParms[3].u.pointer.addr;
    11871187                uint32_t     cbInfo   = paParms[3].u.pointer.size;
    11881188
    11891189                /* Verify parameters values. */
    11901190                if (    !ShflStringIsValid(pNewPath, paParms[1].u.pointer.size)
    11911191                    ||  !ShflStringIsValid(pOldPath, paParms[2].u.pointer.size)
    1192                     ||  (cbInfo != sizeof(RTFSOBJINFO))
     1192                    ||  (cbInfo != sizeof(SHFLFSOBJINFO))
    11931193                   )
    11941194                {
    11951195                    rc = VERR_INVALID_PARAMETER;
  • src/VBox/HostServices/SharedFolders/vbsf.cpp

    diff --git a/src/VBox/HostServices/SharedFolders/vbsf.cpp b/src/VBox/HostServices/SharedFolders/vbsf.cpp
    index b549739..78f3214 100644
    a b int vbsfRename(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLSTRING *pSrc, SHFLSTR  
    21462146    return rc;
    21472147}
    21482148
    2149 int vbsfSymlink(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLSTRING *pNewPath, SHFLSTRING *pOldPath, RTFSOBJINFO *pInfo)
     2149int vbsfSymlink(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLSTRING *pNewPath, SHFLSTRING *pOldPath, SHFLFSOBJINFO *pInfo)
    21502150{
    21512151    int rc = VINF_SUCCESS;
    21522152
    int vbsfSymlink(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLSTRING *pNewPath, SH  
    21622162        return rc;
    21632163
    21642164    rc = RTSymlinkCreate(pszFullNewPath, (const char *)pOldPath->String.utf8, RTSYMLINKTYPE_UNKNOWN);
    2165     if (RT_SUCCESS (rc))
    2166         rc = RTPathQueryInfoEx(pszFullNewPath, pInfo, RTFSOBJATTRADD_NOTHING, SHFL_RT_LINK(pClient));
     2165    if (RT_SUCCESS (rc)) {
     2166        RTFSOBJINFO info;
     2167        rc = RTPathQueryInfoEx(pszFullNewPath, &info, RTFSOBJATTRADD_NOTHING, SHFL_RT_LINK(pClient));
     2168        if (RT_SUCCESS (rc))
     2169            vbfsCopyFsObjInfoFromIprt(pInfo, &info);
     2170    }
    21672171
    21682172    vbsfFreeFullPath(pszFullNewPath);
    21692173
  • src/VBox/HostServices/SharedFolders/vbsf.h

    diff --git a/src/VBox/HostServices/SharedFolders/vbsf.h b/src/VBox/HostServices/SharedFolders/vbsf.h
    index 7827bca..7697968 100644
    a b int vbsfFlush(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLHANDLE Handle);  
    3838int vbsfDisconnect(SHFLCLIENTDATA *pClient);
    3939int vbsfQueryFileInfo(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLHANDLE Handle, uint32_t flags, uint32_t *pcbBuffer, uint8_t *pBuffer);
    4040int vbsfReadLink(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLSTRING *pPath, uint32_t cbPath, uint8_t *pBuffer, uint32_t cbBuffer);
    41 int vbsfSymlink(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLSTRING *pNewPath, SHFLSTRING *pOldPath, RTFSOBJINFO *pInfo);
     41int vbsfSymlink(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLSTRING *pNewPath, SHFLSTRING *pOldPath, SHFLFSOBJINFO *pInfo);
    4242
    4343#endif /* __VBSF__H */

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy