Changeset 101359 in vbox for trunk/src/VBox/Additions/linux
- Timestamp:
- Oct 5, 2023 3:26:17 PM (16 months ago)
- Location:
- trunk/src/VBox/Additions/linux/sharedfolders
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/linux/sharedfolders/dirops.c
r99739 r101359 78 78 pReq = (VBOXSFCREATEREQ *)VbglR0PhysHeapAlloc(RT_UOFFSETOF(VBOXSFCREATEREQ, StrPath.String) + sf_i->path->u16Size); 79 79 if (pReq) { 80 VBSF_UNFORTIFIED_MEMCPY(&pReq->StrPath, sf_i->path, SHFLSTRING_HEADER_SIZE + sf_i->path->u16Size);80 RT_BCOPY_UNFORTIFIED(&pReq->StrPath, sf_i->path, SHFLSTRING_HEADER_SIZE + sf_i->path->u16Size); 81 81 RT_ZERO(pReq->CreateParms); 82 82 pReq->CreateParms.Handle = SHFL_HANDLE_NIL; … … 688 688 689 689 RT_ZERO(*pReq); 690 VBSF_UNFORTIFIED_MEMCPY(&pReq->StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size);690 RT_BCOPY_UNFORTIFIED(&pReq->StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size); 691 691 pReq->CreateParms.Handle = SHFL_HANDLE_NIL; 692 692 pReq->CreateParms.CreateFlags = SHFL_CF_LOOKUP | SHFL_CF_ACT_FAIL_IF_NEW; … … 824 824 } *pReq = (union CreateAuxReq *)VbglR0PhysHeapAlloc(RT_UOFFSETOF(VBOXSFCREATEREQ, StrPath.String) + path->u16Size); 825 825 if (pReq) { 826 VBSF_UNFORTIFIED_MEMCPY(&pReq->Create.StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size);826 RT_BCOPY_UNFORTIFIED(&pReq->Create.StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size); 827 827 RT_ZERO(pReq->Create.CreateParms); 828 828 pReq->Create.CreateParms.Handle = SHFL_HANDLE_NIL; … … 1131 1131 + path->u16Size); 1132 1132 if (pReq) { 1133 VBSF_UNFORTIFIED_MEMCPY(&pReq->StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size);1133 RT_BCOPY_UNFORTIFIED(&pReq->StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size); 1134 1134 uint32_t fFlags = fDirectory ? SHFL_REMOVE_DIR : SHFL_REMOVE_FILE; 1135 1135 if (dentry->d_inode && ((dentry->d_inode->i_mode & S_IFLNK) == S_IFLNK)) … … 1251 1251 PSHFLSTRING pOldPath = sf_file_i->path; 1252 1252 1253 VBSF_UNFORTIFIED_MEMCPY(&pReq->StrDstPath, pNewPath, SHFLSTRING_HEADER_SIZE + pNewPath->u16Size);1253 RT_BCOPY_UNFORTIFIED(&pReq->StrDstPath, pNewPath, SHFLSTRING_HEADER_SIZE + pNewPath->u16Size); 1254 1254 rc = VbglR0SfHostReqRenameWithSrcContig(pSuperInfo->map.root, pReq, pOldPath, virt_to_phys(pOldPath), fRename); 1255 1255 VbglR0PhysHeapFree(pReq); … … 1352 1352 if (pReq) { 1353 1353 RT_ZERO(*pReq); 1354 VBSF_UNFORTIFIED_MEMCPY(&pReq->StrSymlinkPath, pPath, SHFLSTRING_HEADER_SIZE + pPath->u16Size);1354 RT_BCOPY_UNFORTIFIED(&pReq->StrSymlinkPath, pPath, SHFLSTRING_HEADER_SIZE + pPath->u16Size); 1355 1355 1356 1356 rc = VbglR0SfHostReqCreateSymlinkContig(pSuperInfo->map.root, pTarget, virt_to_phys(pTarget), pReq); -
trunk/src/VBox/Additions/linux/sharedfolders/regops.c
r100799 r101359 3094 3094 return -ENOMEM; 3095 3095 } 3096 VBSF_UNFORTIFIED_MEMCPY(&pReq->StrPath, sf_i->path, SHFLSTRING_HEADER_SIZE + sf_i->path->u16Size);3096 RT_BCOPY_UNFORTIFIED(&pReq->StrPath, sf_i->path, SHFLSTRING_HEADER_SIZE + sf_i->path->u16Size); 3097 3097 RT_ZERO(pReq->CreateParms); 3098 3098 pReq->CreateParms.Handle = SHFL_HANDLE_NIL; -
trunk/src/VBox/Additions/linux/sharedfolders/utils.c
r101081 r101359 193 193 pString->u16Length = (uint16_t)cchNls; 194 194 pString->u16Size = (uint16_t)(cchNls + 1); 195 VBSF_UNFORTIFIED_MEMCPY(pString->String.ach, pszNls, cchNls);195 RT_BCOPY_UNFORTIFIED(pString->String.ach, pszNls, cchNls); 196 196 pString->String.ach[cchNls] = '\0'; 197 197 rc = 0; … … 518 518 if (pReq) { 519 519 RT_ZERO(*pReq); 520 VBSF_UNFORTIFIED_MEMCPY(&pReq->StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size);520 RT_BCOPY_UNFORTIFIED(&pReq->StrPath, path, SHFLSTRING_HEADER_SIZE + path->u16Size); 521 521 pReq->CreateParms.Handle = SHFL_HANDLE_NIL; 522 522 pReq->CreateParms.CreateFlags = SHFL_CF_LOOKUP | SHFL_CF_ACT_FAIL_IF_NEW; … … 604 604 if (pReq) { 605 605 RT_ZERO(*pReq); 606 VBSF_UNFORTIFIED_MEMCPY(&pReq->StrPath, pPath, SHFLSTRING_HEADER_SIZE + pPath->u16Size);606 RT_BCOPY_UNFORTIFIED(&pReq->StrPath, pPath, SHFLSTRING_HEADER_SIZE + pPath->u16Size); 607 607 pReq->CreateParms.Handle = SHFL_HANDLE_NIL; 608 608 pReq->CreateParms.CreateFlags = SHFL_CF_LOOKUP | SHFL_CF_ACT_FAIL_IF_NEW; … … 907 907 if (fAttrs & ATTR_SIZE) 908 908 pReq->Create.CreateParms.CreateFlags |= SHFL_CF_ACCESS_WRITE; 909 VBSF_UNFORTIFIED_MEMCPY(&pReq->Create.StrPath, sf_i->path, SHFLSTRING_HEADER_SIZE + sf_i->path->u16Size);909 RT_BCOPY_UNFORTIFIED(&pReq->Create.StrPath, sf_i->path, SHFLSTRING_HEADER_SIZE + sf_i->path->u16Size); 910 910 vrc = VbglR0SfHostReqCreate(pSuperInfo->map.root, &pReq->Create); 911 911 if (RT_SUCCESS(vrc)) { … … 1045 1045 1046 1046 if (fRoot) 1047 VBSF_UNFORTIFIED_MEMCPY(&tmp->String.utf8[0], d_name, d_len + 1);1047 RT_BCOPY_UNFORTIFIED(&tmp->String.utf8[0], d_name, d_len + 1); 1048 1048 else { 1049 VBSF_UNFORTIFIED_MEMCPY(&tmp->String.utf8[0], p_name, p_len);1049 RT_BCOPY_UNFORTIFIED(&tmp->String.utf8[0], p_name, p_len); 1050 1050 tmp->String.utf8[p_len] = '/'; 1051 VBSF_UNFORTIFIED_MEMCPY(&tmp->String.utf8[p_len + 1], d_name, d_len);1051 RT_BCOPY_UNFORTIFIED(&tmp->String.utf8[p_len + 1], d_name, d_len); 1052 1052 tmp->String.utf8[p_len + 1 + d_len] = '\0'; 1053 1053 } -
trunk/src/VBox/Additions/linux/sharedfolders/vfsmod.c
r99420 r101359 119 119 if ((unsigned)info->length >= RT_UOFFSETOF(struct vbsf_mount_info_new, cMaxIoPages)) { 120 120 AssertCompile(sizeof(pSuperInfo->szTag) >= sizeof(info->szTag)); 121 VBSF_UNFORTIFIED_MEMCPY(pSuperInfo->szTag, info->szTag, sizeof(info->szTag));121 RT_BCOPY_UNFORTIFIED(pSuperInfo->szTag, info->szTag, sizeof(info->szTag)); 122 122 pSuperInfo->szTag[sizeof(pSuperInfo->szTag) - 1] = '\0'; 123 123 } else { … … 243 243 str_name->u16Length = name_len; 244 244 str_name->u16Size = name_len + 1; 245 VBSF_UNFORTIFIED_MEMCPY(str_name->String.utf8, info->name, name_len + 1);245 RT_BCOPY_UNFORTIFIED(str_name->String.utf8, info->name, name_len + 1); 246 246 247 247 /* … … 1490 1490 if (data) { 1491 1491 if (VBSF_IS_MOUNT_VBOXSF_DATA(data)) { 1492 VBSF_UNFORTIFIED_MEMCPY(info, data, sizeof(struct vbsf_mount_info_new));1492 RT_BCOPY_UNFORTIFIED(info, data, sizeof(struct vbsf_mount_info_new)); 1493 1493 } else { 1494 1494 /* this will call vbsf_parse_param() */ -
trunk/src/VBox/Additions/linux/sharedfolders/vfsmod.h
r99433 r101359 77 77 # define SFLOG_ENABLED 1 78 78 # define SFLOGRELBOTH(aArgs) do { RTLogBackdoorPrintf aArgs; printk aArgs; } while (0) 79 #endif80 81 82 /** Similar workaround for CONFIG_FORTIFY_SOURCE kernel config option as we83 * have in the host drivers.84 *85 * In Linux 5.18-rc1, memcpy became a wrapper which does fortify checks before86 * making a call to __underlying_memcpy(). There are a number of places where87 * we trigger the "field-spanning write" fortify check, typically when copying88 * to SHFLSTRING structure members as these are actually of variable length but89 * 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 */95 #if RTLNX_VER_MIN(5,18,0) && !defined(__NO_FORTIFY) && defined(__OPTIMIZE__) && defined(CONFIG_FORTIFY_SOURCE)96 # define VBSF_UNFORTIFIED_MEMCPY __underlying_memcpy97 #else98 # define VBSF_UNFORTIFIED_MEMCPY memcpy99 79 #endif 100 80
Note:
See TracChangeset
for help on using the changeset viewer.