VirtualBox

Changeset 99420 in vbox for trunk/src/VBox/Additions/linux


Ignore:
Timestamp:
Apr 17, 2023 2:25:25 PM (21 months ago)
Author:
vboxsync
Message:

linux/vboxsf: s/VBOX_LINUX_MEMCPY/VBSF_UNFORTIFIED_MEMCPY/g + explanation why and when to use. bugref:10209 ticketref:21410

Location:
trunk/src/VBox/Additions/linux/sharedfolders
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/linux/sharedfolders/dirops.c

    r99419 r99420  
    7878        pReq = (VBOXSFCREATEREQ *)VbglR0PhysHeapAlloc(RT_UOFFSETOF(VBOXSFCREATEREQ, StrPath.String) + sf_i->path->u16Size);
    7979        if (pReq) {
    80             VBOX_LINUX_MEMCPY(&pReq->StrPath, sf_i->path, SHFLSTRING_HEADER_SIZE + sf_i->path->u16Size);
     80            VBSF_UNFORTIFIED_MEMCPY(&pReq->StrPath, sf_i->path, SHFLSTRING_HEADER_SIZE + sf_i->path->u16Size);
    8181            RT_ZERO(pReq->CreateParms);
    8282            pReq->CreateParms.Handle      = SHFL_HANDLE_NIL;
     
    688688
    689689            RT_ZERO(*pReq);
    690             VBOX_LINUX_MEMCPY(&pReq->StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size);
     690            VBSF_UNFORTIFIED_MEMCPY(&pReq->StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size);
    691691            pReq->CreateParms.Handle = SHFL_HANDLE_NIL;
    692692            pReq->CreateParms.CreateFlags = SHFL_CF_LOOKUP | SHFL_CF_ACT_FAIL_IF_NEW;
     
    824824        } *pReq = (union CreateAuxReq *)VbglR0PhysHeapAlloc(RT_UOFFSETOF(VBOXSFCREATEREQ, StrPath.String) + path->u16Size);
    825825        if (pReq) {
    826             VBOX_LINUX_MEMCPY(&pReq->Create.StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size);
     826            VBSF_UNFORTIFIED_MEMCPY(&pReq->Create.StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size);
    827827            RT_ZERO(pReq->Create.CreateParms);
    828828            pReq->Create.CreateParms.Handle                  = SHFL_HANDLE_NIL;
     
    11311131                                                                       + path->u16Size);
    11321132        if (pReq) {
    1133             VBOX_LINUX_MEMCPY(&pReq->StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size);
     1133            VBSF_UNFORTIFIED_MEMCPY(&pReq->StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size);
    11341134            uint32_t fFlags = fDirectory ? SHFL_REMOVE_DIR : SHFL_REMOVE_FILE;
    11351135            if (dentry->d_inode && ((dentry->d_inode->i_mode & S_IFLNK) == S_IFLNK))
     
    12511251                    PSHFLSTRING             pOldPath = sf_file_i->path;
    12521252
    1253                     VBOX_LINUX_MEMCPY(&pReq->StrDstPath, pNewPath, SHFLSTRING_HEADER_SIZE + pNewPath->u16Size);
     1253                    VBSF_UNFORTIFIED_MEMCPY(&pReq->StrDstPath, pNewPath, SHFLSTRING_HEADER_SIZE + pNewPath->u16Size);
    12541254                    rc = VbglR0SfHostReqRenameWithSrcContig(pSuperInfo->map.root, pReq, pOldPath, virt_to_phys(pOldPath), fRename);
    12551255                    VbglR0PhysHeapFree(pReq);
     
    13521352            if (pReq) {
    13531353                RT_ZERO(*pReq);
    1354                 VBOX_LINUX_MEMCPY(&pReq->StrSymlinkPath, pPath, SHFLSTRING_HEADER_SIZE + pPath->u16Size);
     1354                VBSF_UNFORTIFIED_MEMCPY(&pReq->StrSymlinkPath, pPath, SHFLSTRING_HEADER_SIZE + pPath->u16Size);
    13551355
    13561356                rc = VbglR0SfHostReqCreateSymlinkContig(pSuperInfo->map.root, pTarget, virt_to_phys(pTarget), pReq);
  • trunk/src/VBox/Additions/linux/sharedfolders/regops.c

    r99419 r99420  
    30733073        return -ENOMEM;
    30743074    }
    3075     VBOX_LINUX_MEMCPY(&pReq->StrPath, sf_i->path, SHFLSTRING_HEADER_SIZE + sf_i->path->u16Size);
     3075    VBSF_UNFORTIFIED_MEMCPY(&pReq->StrPath, sf_i->path, SHFLSTRING_HEADER_SIZE + sf_i->path->u16Size);
    30763076    RT_ZERO(pReq->CreateParms);
    30773077    pReq->CreateParms.Handle = SHFL_HANDLE_NIL;
  • trunk/src/VBox/Additions/linux/sharedfolders/utils.c

    r99419 r99420  
    193193                pString->u16Length = (uint16_t)cchNls;
    194194                pString->u16Size   = (uint16_t)(cchNls + 1);
    195                 VBOX_LINUX_MEMCPY(pString->String.ach, pszNls, cchNls);
     195                VBSF_UNFORTIFIED_MEMCPY(pString->String.ach, pszNls, cchNls);
    196196                pString->String.ach[cchNls] = '\0';
    197197                rc = 0;
     
    503503    if (pReq) {
    504504        RT_ZERO(*pReq);
    505         VBOX_LINUX_MEMCPY(&pReq->StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size);
     505        VBSF_UNFORTIFIED_MEMCPY(&pReq->StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size);
    506506        pReq->CreateParms.Handle = SHFL_HANDLE_NIL;
    507507        pReq->CreateParms.CreateFlags = SHFL_CF_LOOKUP | SHFL_CF_ACT_FAIL_IF_NEW;
     
    589589                if (pReq) {
    590590                    RT_ZERO(*pReq);
    591                     VBOX_LINUX_MEMCPY(&pReq->StrPath, pPath, SHFLSTRING_HEADER_SIZE + pPath->u16Size);
     591                    VBSF_UNFORTIFIED_MEMCPY(&pReq->StrPath, pPath, SHFLSTRING_HEADER_SIZE + pPath->u16Size);
    592592                    pReq->CreateParms.Handle      = SHFL_HANDLE_NIL;
    593593                    pReq->CreateParms.CreateFlags = SHFL_CF_LOOKUP | SHFL_CF_ACT_FAIL_IF_NEW;
     
    890890                    if (fAttrs & ATTR_SIZE)
    891891                        pReq->Create.CreateParms.CreateFlags |= SHFL_CF_ACCESS_WRITE;
    892                     VBOX_LINUX_MEMCPY(&pReq->Create.StrPath, sf_i->path, SHFLSTRING_HEADER_SIZE + sf_i->path->u16Size);
     892                    VBSF_UNFORTIFIED_MEMCPY(&pReq->Create.StrPath, sf_i->path, SHFLSTRING_HEADER_SIZE + sf_i->path->u16Size);
    893893                    vrc = VbglR0SfHostReqCreate(pSuperInfo->map.root, &pReq->Create);
    894894                    if (RT_SUCCESS(vrc)) {
     
    10281028
    10291029    if (fRoot)
    1030         VBOX_LINUX_MEMCPY(&tmp->String.utf8[0], d_name, d_len + 1);
     1030        VBSF_UNFORTIFIED_MEMCPY(&tmp->String.utf8[0], d_name, d_len + 1);
    10311031    else {
    1032         VBOX_LINUX_MEMCPY(&tmp->String.utf8[0], p_name, p_len);
     1032        VBSF_UNFORTIFIED_MEMCPY(&tmp->String.utf8[0], p_name, p_len);
    10331033        tmp->String.utf8[p_len] = '/';
    1034         VBOX_LINUX_MEMCPY(&tmp->String.utf8[p_len + 1], d_name, d_len);
     1034        VBSF_UNFORTIFIED_MEMCPY(&tmp->String.utf8[p_len + 1], d_name, d_len);
    10351035        tmp->String.utf8[p_len + 1 + d_len] = '\0';
    10361036    }
  • trunk/src/VBox/Additions/linux/sharedfolders/vfsmod.c

    r99419 r99420  
    119119    if ((unsigned)info->length >= RT_UOFFSETOF(struct vbsf_mount_info_new, cMaxIoPages)) {
    120120        AssertCompile(sizeof(pSuperInfo->szTag) >= sizeof(info->szTag));
    121         VBOX_LINUX_MEMCPY(pSuperInfo->szTag, info->szTag, sizeof(info->szTag));
     121        VBSF_UNFORTIFIED_MEMCPY(pSuperInfo->szTag, info->szTag, sizeof(info->szTag));
    122122        pSuperInfo->szTag[sizeof(pSuperInfo->szTag) - 1] = '\0';
    123123    } else {
     
    243243        str_name->u16Length = name_len;
    244244        str_name->u16Size = name_len + 1;
    245         VBOX_LINUX_MEMCPY(str_name->String.utf8, info->name, name_len + 1);
     245        VBSF_UNFORTIFIED_MEMCPY(str_name->String.utf8, info->name, name_len + 1);
    246246
    247247        /*
     
    14901490    if (data) {
    14911491        if (VBSF_IS_MOUNT_VBOXSF_DATA(data)) {
    1492             VBOX_LINUX_MEMCPY(info, data, sizeof(struct vbsf_mount_info_new));
     1492            VBSF_UNFORTIFIED_MEMCPY(info, data, sizeof(struct vbsf_mount_info_new));
    14931493        } else {
    14941494            /* this will call vbsf_parse_param() */
  • trunk/src/VBox/Additions/linux/sharedfolders/vfsmod.h

    r98869 r99420  
    8080
    8181
    82 /* Simmilar workaround for CONFIG_FORTIFY_SOURCE kernel config option as we have for host drivers.
    83  * In Linux 5.18-rc1, memcpy became a wrapper which does fortify checks
    84  * before triggering __underlying_memcpy() call. We do not pass these checks in some places so
    85  * bypass them for now.  */
     82/** Similar workaround for CONFIG_FORTIFY_SOURCE kernel config option as we
     83 * have in the host drivers.
     84 *
     85 * In Linux 5.18-rc1, memcpy became a wrapper which does fortify checks before
     86 * making a call to __underlying_memcpy().  There are a number of places where
     87 * we trigger the "field-spanning write" fortify check, typically when copying
     88 * to SHFLSTRING structure members as these are actually of variable length but
     89 * we don't (cannot with gcc) use RT_FLEXIBLE_ARRAY_NESTED.
     90 *
     91 * Use this when copying to structures or members with a variable length member.
     92 *
     93 * @see @ticketref{21410}, @bugref{10209}
     94 */
    8695#if RTLNX_VER_MIN(5,18,0) && !defined(__NO_FORTIFY) && defined(__OPTIMIZE__) && defined(CONFIG_FORTIFY_SOURCE)
    87 # define VBOX_LINUX_MEMCPY __underlying_memcpy
     96# define VBSF_UNFORTIFIED_MEMCPY __underlying_memcpy
    8897#else
    89 #define VBOX_LINUX_MEMCPY memcpy
     98# define VBSF_UNFORTIFIED_MEMCPY memcpy
    9099#endif
    91100
Note: See TracChangeset for help on using the changeset viewer.

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