diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 01:47:11 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 01:47:11 +0000 |
commit | ad75ac69416bbdb92964625dc7018b9d0a44debc (patch) | |
tree | ba7ba3da15c2719a518dbcbc854edfe281ae9020 | |
parent | Releasing progress-linux version 7.0.16-dfsg-8~progress7.99u1. (diff) | |
download | virtualbox-ad75ac69416bbdb92964625dc7018b9d0a44debc.tar.xz virtualbox-ad75ac69416bbdb92964625dc7018b9d0a44debc.zip |
Merging upstream version 7.0.18-dfsg.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
95 files changed, 478 insertions, 164 deletions
@@ -1147,6 +1147,9 @@ ifndef VBOX_WITH_HARDENING VBOX_WITH_ORIGIN = 1 endif endif +# Building windows without a kernel code signing certificate (as good as +# impossible to get these days, so enabled by default). +VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT = 1 # Enable the system wide support service/daemon. # Very sketchy work in progress. #VBOX_WITH_SUPSVC = 1 @@ -4057,7 +4060,7 @@ ifdef VBOX_SIGNING_MODE # @param $2 The file to be submitted for signing. # @param $3 The directory to put the signed file in. Defaults to $(dir $2). # @param $4 Additional options. - VBOX_CCS_SIGN_CMD = $(VBOX_RETRY) $(VBOX_JAVA) -jar "$(VBOX_CCS_CLIENT_JAR)" \ + VBOX_CCS_SIGN_CMD = $(VBOX_RETRY) $(VBOX_JAVA) -Xmx256m -jar "$(VBOX_CCS_CLIENT_JAR)" \ sign -user "$(VBOX_CCS_USER)" -global_uid "$(VBOX_CCS_GLOBAL_UID)" \ -job_timeout 90 -server_timeout 75 -server "$(VBOX_CCS_SERVER)" \ -sign_method "$1" -file_to_sign "$2" -signed_location "$(if $3,$3,$(call VBOX_DIRX,$2))" $4 @@ -4163,25 +4166,24 @@ ifdef VBOX_SIGNING_MODE # @param 4 Set to 2 if the expression will be expanded twice before chopped into commands (for _CMDS). # @param 5 Disables dual signing if non-empty, picking the SHA2 signature (since 2022-07-18). # @param 6 non-zero for alternative command separator. This is used for generating repacking scripts. + # @param 7 non-zero for timed execution if possible ifndef VBOX_SIGN_FILE_FN if $(intersects win all 1,$(VBOX_WITH_CORP_CODE_SIGNING)) - VBOX_SIGN_FILE_FN = $(call VBOX_CCS_SIGN_CMD,driver$(if-expr "$3" == "/ph",_pagehash,),$1,,-digest_algo $(if-expr "$5" == "",SHA1,SHA2)) \ - $(if-expr "$5" == "", \ - $(if-expr "$6" == "",$(if-expr "$4" == "2",$$(NLTAB),$(NLTAB)),$6) \ - $(call VBOX_CCS_SIGN_CMD,driver$(if-expr "$3" == "/ph",_pagehash,),$1,,-dual_sign -digest_algo SHA2)) + # CCS has lost the ability to do dual signing a while ago, can do SHA256 only + VBOX_SIGN_FILE_FN = $(if $(strip $7),$(TIME) ,)$(call VBOX_CCS_SIGN_CMD,driver$(if-expr "$3" == "/ph",_pagehash,),$1,,-digest_algo SHA2) else ifdef VBOX_CERTIFICATE_SHA2_SUBJECT_NAME ifdef VBOX_CERTIFICATE_SUBJECT_NAME - VBOX_SIGN_FILE_FN = $(if-expr "$5" == "",$(VBOX_SIGNTOOL_SHA1) \ - sign /fd sha1 \ - $(VBOX_CROSS_CERTIFICATE_FILE_ARGS) \ - $(VBOX_CERTIFICATE_STORE_ARGS) \ - $(VBOX_CERTIFICATE_SUBJECT_NAME_ARGS) \ - $(VBOX_CERTIFICATE_FINGERPRINT_ARGS) \ - $(VBOX_TSA_URL_ARGS) \ - $(if $(strip $(2)),/d "$(strip $(2))",) \ - $(3) \ - "$(1)" \ - $(if-expr "$6" == "",$(if-expr "$4" == "2",$$(NLTAB),$(NLTAB)),$6))$(VBOX_SIGNTOOL_SHA2) \ + VBOX_SIGN_FILE_FN = $(if-expr "$5" == "",$(if $(strip $7),$(TIME) ,)$(VBOX_SIGNTOOL_SHA1) \ + sign /fd sha1 \ + $(VBOX_CROSS_CERTIFICATE_FILE_ARGS) \ + $(VBOX_CERTIFICATE_STORE_ARGS) \ + $(VBOX_CERTIFICATE_SUBJECT_NAME_ARGS) \ + $(VBOX_CERTIFICATE_FINGERPRINT_ARGS) \ + $(VBOX_TSA_URL_ARGS) \ + $(if $(strip $(2)),/d "$(strip $(2))",) \ + $(3) \ + "$(1)" \ + $(if-expr "$6" == "",$(if-expr "$4" == "2",$$(NLTAB),$(NLTAB)),$6))$(if $(strip $7),$(TIME) ,)$(VBOX_SIGNTOOL_SHA2) \ sign $(if-expr "$5" == "",/as,) /fd sha256 \ $(VBOX_CROSS_CERTIFICATE_SHA2_FILE_ARGS) \ $(VBOX_CERTIFICATE_SHA2_STORE_ARGS) \ @@ -4192,7 +4194,7 @@ ifdef VBOX_SIGNING_MODE $(3) \ "$(1)" else - VBOX_SIGN_FILE_FN = $(VBOX_SIGNTOOL_SHA2) \ + VBOX_SIGN_FILE_FN = $(if $(strip $7),$(TIME) ,)$(VBOX_SIGNTOOL_SHA2) \ sign /fd sha256 \ $(VBOX_CROSS_CERTIFICATE_SHA2_FILE_ARGS) \ $(VBOX_CERTIFICATE_SHA2_STORE_ARGS) \ @@ -4204,7 +4206,7 @@ ifdef VBOX_SIGNING_MODE "$(1)" endif else - VBOX_SIGN_FILE_FN = $(VBOX_SIGNTOOL) \ + VBOX_SIGN_FILE_FN = $(if $(strip $7),$(TIME) ,)$(VBOX_SIGNTOOL) \ sign /fd $(firstword $(VBOX_TEST_SIGN_ALGORITHM) sha256) \ $(VBOX_CROSS_CERTIFICATE_FILE_ARGS) \ $(VBOX_CERTIFICATE_STORE_ARGS) \ @@ -4707,7 +4709,8 @@ if defined(VBOX_SIGNING_MODE) && "$(KBUILD_TARGET)" == "win" $(RM) -f -- "$@" $(CP) -- "$(quote-sh-dq $<)" "$@" $(CHMOD) a+rw -- "$@" - $(VBOX_VCC_EDITBIN) /LargeAddressAware /DynamicBase /NxCompat /Release /IntegrityCheck \ + $(VBOX_VCC_EDITBIN) /LargeAddressAware /DynamicBase /NxCompat /Release \ + $(if-expr !defined(VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT),/IntegrityCheck,) \ /Version:$(VBOX_VERSION_MAJOR)0$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \ "$@" $(call VBOX_SIGN_IMAGE_FN,$@) @@ -4729,7 +4732,8 @@ if defined(VBOX_SIGNING_MODE) && "$(KBUILD_TARGET)" == "win" $(RM) -f -- "$@" $(CP) -- "$<" "$@" $(CHMOD) a+rw -- "$@" - $(VBOX_VCC_EDITBIN) /LargeAddressAware /DynamicBase /NxCompat /Release /IntegrityCheck \ + $(VBOX_VCC_EDITBIN) /LargeAddressAware /DynamicBase /NxCompat /Release \ + $(if-expr !defined(VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT),/IntegrityCheck,) \ /Version:$(VBOX_VERSION_MAJOR)0$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \ "$@" $(call VBOX_SIGN_IMAGE_FN,$@) @@ -5247,7 +5251,7 @@ ifdef VBOX_WITH_RAW_MODE -Driver -Subsystem:NATIVE -Incremental:NO -Align:64 -MapInfo:Exports -NoD $(VBOX_VCC_LD_WERR) -Release -Debug -Opt:Ref -Opt:Icf \ -Version:$(VBOX_VERSION_MAJOR)0$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \ -Stub:$(PATH_ROOT)/src/VBox/HostDrivers/Support/win/winstub.com - ifdef VBOX_SIGNING_MODE + if defined(VBOX_SIGNING_MODE) && !defined(VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT) TEMPLATE_VBoxRc_LDFLAGS += -IntegrityCheck endif TEMPLATE_VBoxRc_SDKS.x86 += VBoxWinInt64Lib @@ -6187,7 +6191,7 @@ ifeq ($(KBUILD_TARGET),win) ifdef VBOX_WITH_DTRACE_R3 TEMPLATE_VBoxR3Exe_LDFLAGS += -Merge:VTGPrLc.Data=VTGPrLc.Begin -Merge:VTGPrLc.End=VTGPrLc.Begin -Merge:VTGPrLc.Begin=VTGObj endif - if defined(VBOX_SIGNING_MODE) && defined(VBOX_WITH_HARDENING) + if defined(VBOX_SIGNING_MODE) && defined(VBOX_WITH_HARDENING) && !defined(VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT) TEMPLATE_VBoxR3Exe_LDFLAGS += -IntegrityCheck endif TEMPLATE_VBoxR3Exe_LDFLAGS.win.amd64 = $(VBOX_VCC_LD_HIGH_ENTRYOPY_VA) @@ -6834,7 +6838,8 @@ TEMPLATE_VBoxR3HardenedTstExe_INST = $(INST_TESTCASE) TEMPLATE_VBoxR3HardenedTstDll = VBox Ring-3 Hardened Testcase Dll (currently windows only!) TEMPLATE_VBoxR3HardenedTstDll_EXTENDS = VBoxR3TstDll TEMPLATE_VBoxR3HardenedTstDll_INST = $(INST_TESTCASE) -TEMPLATE_VBoxR3HardenedTstDll_LDFLAGS.win = $(TEMPLATE_VBoxR3TstDll_LDFLAGS.win) -IntegrityCheck +TEMPLATE_VBoxR3HardenedTstDll_LDFLAGS.win = $(TEMPLATE_VBoxR3TstDll_LDFLAGS.win) \ + $(if-expr !defined(VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT),-IntegrityCheck,) ifn1of ($(KBUILD_TARGET), win os2) TEMPLATE_VBoxR3HardenedTstDll_LDFLAGS = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBoxR3TstDll_LDFLAGS)) TEMPLATE_VBoxR3HardenedTstDll_LDFLAGS.linux = $(filter-out $(VBOX_GCC_ORIGIN_OPT),$(TEMPLATE_VBoxR3TstDll_LDFLAGS.linux)) @@ -7135,7 +7140,7 @@ ifeq ($(KBUILD_TARGET),win) /DISALLOWLIB:libvcruntimed.lib \ /DISALLOWLIB:libucrt.lib \ /DISALLOWLIB:libucrtd.lib - if defined(VBOX_SIGNING_MODE) && defined(VBOX_WITH_HARDENING) + if defined(VBOX_SIGNING_MODE) && defined(VBOX_WITH_HARDENING) && !defined(VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT) TEMPLATE_VBoxMainExe_LDFLAGS += -IntegrityCheck endif ifdef VBOX_WITH_DTRACE_R3_MAIN @@ -7795,7 +7800,7 @@ ifdef VBOX_WITH_QTGUI $(VBOX_VCC_LD_GUARD_CF) $(VBOX_VCC_SANITIZER_LDFLAGS) \ /Version:$(VBOX_VERSION_MAJOR)0$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD) \ /STUB:$(PATH_ROOT)/src/VBox/HostDrivers/Support/win/winstub.com - if defined(VBOX_SIGNING_MODE) && defined(VBOX_WITH_HARDENING) + if defined(VBOX_SIGNING_MODE) && defined(VBOX_WITH_HARDENING) && !defined(VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT) TEMPLATE_VBoxQtGuiExe_LDFLAGS += -IntegrityCheck endif if "$(VBOX_VCC_TOOL_STEM)" >= "VCC142" # Don't waste space on x86/amd64-on-arm emulation optimizations. @@ -9006,7 +9011,7 @@ endif SVN ?= svn$(HOSTSUFF_EXE) VBOX_SVN_REV_KMK = $(PATH_OUT)/revision.kmk ifndef VBOX_SVN_REV - VBOX_SVN_REV_CONFIG_FALLBACK := $(patsubst %:,, $Rev: 162738 $ ) + VBOX_SVN_REV_CONFIG_FALLBACK := $(patsubst %:,, $Rev: 162950 $ ) VBOX_SVN_REV_FALLBACK := $(if-expr $(VBOX_SVN_REV_CONFIG_FALLBACK) > $(VBOX_SVN_REV_VERSION_FALLBACK),$(VBOX_SVN_REV_CONFIG_FALLBACK),$(VBOX_SVN_REV_VERSION_FALLBACK)) VBOX_SVN_DEP := $(firstword $(wildcard $(PATH_ROOT)/.svn/wc.db $(abspath $(PATH_ROOT)/../.svn/wc.db) $(abspath $(PATH_ROOT)/../../.svn/wc.db) $(PATH_ROOT)/.svn/entries)) ifeq ($(which $(SVN)),) diff --git a/Version.kmk b/Version.kmk index 1e398438..33c746b6 100644 --- a/Version.kmk +++ b/Version.kmk @@ -34,7 +34,7 @@ VBOX_VERSION_MINOR = 0 # This is the current build number. It should be increased every time we publish a # new build. The define is available in every source file. Only even build numbers # will be published, odd numbers are set during development. -VBOX_VERSION_BUILD = 16 +VBOX_VERSION_BUILD = 18 # This can be overridden in LocalConfig.kmk or elsewhere. # For the convention, see checks near the end of Config.kmk. VBOX_BUILD_PUBLISHER = @@ -55,4 +55,4 @@ if1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), darwin.arm64) endif # Fallback revision when there is no other source. See Config.kmk. -VBOX_SVN_REV_VERSION_FALLBACK := $(patsubst %:,, $Rev: 162802 $ ) +VBOX_SVN_REV_VERSION_FALLBACK := $(patsubst %:,, $Rev: 162988 $ ) diff --git a/doc/manual/en_US/user_Installation.xml b/doc/manual/en_US/user_Installation.xml index 2661b259..4cf6e403 100644 --- a/doc/manual/en_US/user_Installation.xml +++ b/doc/manual/en_US/user_Installation.xml @@ -56,6 +56,50 @@ </sect2> + <sect2 id="install-win-installdir-req"> + + <title>Windows Installation Directory Security Requirements</title> + + <para> + The installation directory on Windows hosts must meet certain security requirements, in + order to be accepted by the Windows installer. + </para> + + <para> + This also applies for upgrades of &product-name;. + </para> + + <para> + For example, when installing &product-name; into a custom location at + X:\Data\MyPrograms\&product-name;, all parent directories of this path + (namely X:\Data and X:\Data\MyPrograms) have to meet the following + Discretionary Access Control List (DACL): + <screen> + Users S-1-5-32-545:(OI)(CI)(RX) + Users S-1-5-32-545:(DE,WD,AD,WEA,WA) + Authenticated Users S-1-5-11:(OI)(CI)(RX) + Authenticated Users S-1-5-11:(DE,WD,AD,WEA,WA) + </screen> + Directory inheritance must also be disabled for all parent directories. + </para> + + <para> + You can use the <command>icacls</command> Windows command line tool + to meet the security requirements. For example: + <screen> + icacls <Directory> /reset /t /c + icacls <Directory> /inheritance:d /t /c + icacls <Directory> /grant *S-1-5-32-545:(OI)(CI)(RX) + icacls <Directory> /deny *S-1-5-32-545:(DE,WD,AD,WEA,WA) + icacls <Directory> /grant *S-1-5-11:(OI)(CI)(RX) + icacls <Directory> /deny *S-1-5-11:(DE,WD,AD,WEA,WA) + </screen> + Note that these commands must be repeated for all parent directories + (X:\Data and X:\Data\MyPrograms in this example). + </para> + + </sect2> + <sect2 id="install-win-performing"> <title>Performing the Installation</title> diff --git a/doc/manual/user_ChangeLogImpl.xml b/doc/manual/user_ChangeLogImpl.xml index ef9aeced..bceaf745 100644 --- a/doc/manual/user_ChangeLogImpl.xml +++ b/doc/manual/user_ChangeLogImpl.xml @@ -73,6 +73,33 @@ Rules for adding a changelog entry to make them look more uniform: So, we use chapter and xpointer="xpointer(/chapter/)" with xi:include. --> <sect1> + <title>Version 7.0.18 (2024-05-07)</title> + + <para>This is a maintenance release. The following items were fixed and/or + added:</para> + + <itemizedlist> + + <listitem> + <para>Networking: Fixed an issue which caused host system crash + when VM was using bridged or host-only network adapter (bug #22045)</para> + </listitem> + + <listitem> + <para>Linux Guest Additions: Added more fixes to prevent UBSAN + warnings (bug #21877)</para> + </listitem> + + <listitem> + <para>Linux Guest Additions: Fixed issue when time stamps were displayed + incorrectly within mounted shared folder (bug #22047)</para> + </listitem> + + </itemizedlist> + </sect1> + + <sect1> + <title>Version 7.0.16 (2024-04-16)</title> <para>This is a maintenance release. The following items were fixed and/or diff --git a/include/VBox/VBoxGuestLibSharedFoldersInline.h b/include/VBox/VBoxGuestLibSharedFoldersInline.h index 6bfdd982..7b8e3e6e 100644 --- a/include/VBox/VBoxGuestLibSharedFoldersInline.h +++ b/include/VBox/VBoxGuestLibSharedFoldersInline.h @@ -1502,10 +1502,11 @@ DECLINLINE(int) VbglR0SfHostReqReadLinkContigSimple(SHFLROOT idRoot, const char + SHFLSTRING_HEADER_SIZE + (uint32_t)cchPath); if (pReq) { + char * const pszReqPath = pReq->StrPath.String.ach; pReq->StrPath.u16Length = (uint16_t)cchPath; pReq->StrPath.u16Size = (uint16_t)cchPath + 1; - RT_BCOPY_UNFORTIFIED(pReq->StrPath.String.ach, pszPath, cchPath); - pReq->StrPath.String.ach[cchPath] = '\0'; + RT_BCOPY_UNFORTIFIED(pszReqPath, pszPath, cchPath); + pszReqPath[cchPath] = '\0'; { int vrc = VbglR0SfHostReqReadLinkContig(idRoot, pvBuf, PhysBuffer, cbBuffer, pReq); diff --git a/include/VBox/intnet.h b/include/VBox/intnet.h index 2e593067..c0708cfe 100644 --- a/include/VBox/intnet.h +++ b/include/VBox/intnet.h @@ -348,7 +348,7 @@ typedef struct INTNETSG uint16_t volatile fFlags; #if ARCH_BITS == 64 /** Alignment padding. */ - uint16_t uPadding; + uint32_t uPadding; #endif /** The number of segments allocated. */ uint16_t cSegsAlloc; diff --git a/src/VBox/Additions/Makefile.kmk b/src/VBox/Additions/Makefile.kmk index a0a90098..9f669393 100644 --- a/src/VBox/Additions/Makefile.kmk +++ b/src/VBox/Additions/Makefile.kmk @@ -333,7 +333,7 @@ if defined(VBOX_WITH_ADDITIONS_ISO.win.amd64) || defined(VBOX_WITH_ADDITIONS_ISO ifdef VBOX_TSA_SHA2_URL_ARGS GUESTADDITIONS_FILESPEC.win += cert/vbox-sha256-timestamp-root.cer=$(VBOX_PATH_ADDITIONS.win)/vbox-sha256-timestamp-root.cer endif - if $(intersects win_planb,$(VBOX_WITH_CORP_CODE_SIGNING)) + if !$(intersects win,$(VBOX_WITH_CORP_CODE_SIGNING)) && $(intersects win_planb,$(VBOX_WITH_CORP_CODE_SIGNING)) GUESTADDITIONS_FILESPEC.win += \ cert/vbox-sha256-r3.cer=$(VBOX_PATH_ADDITIONS.win)/vbox-sha256-r3.cer \ cert/vbox-sha256-r3-root.cer=$(VBOX_PATH_ADDITIONS.win)/vbox-sha256-r3-root.cer \ diff --git a/src/VBox/Additions/linux/sharedfolders/dirops.c b/src/VBox/Additions/linux/sharedfolders/dirops.c index fb8c8d59..2ff10bb0 100644 --- a/src/VBox/Additions/linux/sharedfolders/dirops.c +++ b/src/VBox/Additions/linux/sharedfolders/dirops.c @@ -486,13 +486,14 @@ static int vbsf_dir_read(struct file *dir, void *opaque, filldir_t filldir) uintptr_t const offEntryInBuf = (uintptr_t)pEntry - (uintptr_t)pBuf; uint16_t cbSrcName; uint16_t cchSrcName; + char *pszSrcName = pEntry->name.String.ach; AssertLogRelMsgBreak(offEntryInBuf + RT_UOFFSETOF(SHFLDIRINFO, name.String) <= cbValid, ("%#llx + %#x vs %#x\n", offEntryInBuf, RT_UOFFSETOF(SHFLDIRINFO, name.String), cbValid)); cbSrcName = pEntry->name.u16Size; cchSrcName = pEntry->name.u16Length; AssertLogRelBreak(offEntryInBuf + RT_UOFFSETOF(SHFLDIRINFO, name.String) + cbSrcName <= cbValid); AssertLogRelBreak(cchSrcName < cbSrcName); - AssertLogRelBreak(pEntry->name.String.ach[cchSrcName] == '\0'); + AssertLogRelBreak(pszSrcName[cchSrcName] == '\0'); /* * Filter out '.' and '..' entires. @@ -500,7 +501,7 @@ static int vbsf_dir_read(struct file *dir, void *opaque, filldir_t filldir) if ( cchSrcName > 2 || pEntry->name.String.ach[0] != '.' || ( cchSrcName == 2 - && pEntry->name.String.ach[1] != '.')) { + && pszSrcName[1] != '.')) { int const d_type = vbsf_get_d_type(pEntry->Info.Attr.fMode); ino_t const d_ino = (ino_t)offPos + 0xbeef; /* very fake */ bool fContinue; diff --git a/src/VBox/Additions/linux/sharedfolders/utils.c b/src/VBox/Additions/linux/sharedfolders/utils.c index 7c1fba95..0c57c08a 100644 --- a/src/VBox/Additions/linux/sharedfolders/utils.c +++ b/src/VBox/Additions/linux/sharedfolders/utils.c @@ -298,10 +298,21 @@ DECLINLINE(int) sf_file_mode_to_linux(uint32_t fVBoxMode, int fFixedMode, int fC */ static void vbsf_update_inode_timestamps(struct inode *pInode, PSHFLFSOBJINFO pObjInfo) { -#if RTLNX_VER_MIN(6,6,0) - struct timespec64 ts; - vbsf_time_to_linux(&ts, &pObjInfo->ChangeTime); - inode_set_ctime_to_ts(pInode, ts); +#if RTLNX_VER_MIN(6,7,0) + struct timespec64 tsAccessTime, tsChangeTime, ModificationTime; + + vbsf_time_to_linux(&tsAccessTime, &pObjInfo->AccessTime); + vbsf_time_to_linux(&tsChangeTime, &pObjInfo->ChangeTime); + vbsf_time_to_linux(&ModificationTime, &pObjInfo->ModificationTime); + + inode_set_atime_to_ts(pInode, tsAccessTime); + inode_set_ctime_to_ts(pInode, tsChangeTime); + inode_set_mtime_to_ts(pInode, ModificationTime); + +# elif RTLNX_VER_MIN(6,6,0) + vbsf_time_to_linux(&pInode->i_atime, &pObjInfo->AccessTime); + vbsf_time_to_linux(&pInode->__i_ctime, &pObjInfo->ChangeTime); + vbsf_time_to_linux(&pInode->i_mtime, &pObjInfo->ModificationTime); #else vbsf_time_to_linux(&pInode->i_atime, &pObjInfo->AccessTime); vbsf_time_to_linux(&pInode->i_ctime, &pObjInfo->ChangeTime); @@ -1047,10 +1058,11 @@ static int vbsf_make_path(const char *caller, struct vbsf_inode_info *sf_i, if (fRoot) RT_BCOPY_UNFORTIFIED(&tmp->String.utf8[0], d_name, d_len + 1); else { - RT_BCOPY_UNFORTIFIED(&tmp->String.utf8[0], p_name, p_len); - tmp->String.utf8[p_len] = '/'; - RT_BCOPY_UNFORTIFIED(&tmp->String.utf8[p_len + 1], d_name, d_len); - tmp->String.utf8[p_len + 1 + d_len] = '\0'; + uint8_t *pszPath = tmp->String.utf8; + RT_BCOPY_UNFORTIFIED(&pszPath[0], p_name, p_len); + pszPath[p_len] = '/'; + RT_BCOPY_UNFORTIFIED(&pszPath[p_len + 1], d_name, d_len); + pszPath[p_len + 1 + d_len] = '\0'; } *result = tmp; diff --git a/src/VBox/Additions/linux/sharedfolders/vfsmod.c b/src/VBox/Additions/linux/sharedfolders/vfsmod.c index 0c5c77af..5c4d55c1 100644 --- a/src/VBox/Additions/linux/sharedfolders/vfsmod.c +++ b/src/VBox/Additions/linux/sharedfolders/vfsmod.c @@ -474,8 +474,7 @@ static int vbsf_create_root_inode(struct super_block *sb, struct vbsf_super_info path->u16Length = 1; path->u16Size = 2; - path->String.utf8[0] = '/'; - path->String.utf8[1] = 0; + RTStrCopy(path->String.utf8, path->u16Size, "/"); /* * Stat the root directory (for inode info). diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Scripts/GetUtcDateTime.py b/src/VBox/Devices/EFI/Firmware/BaseTools/Scripts/GetUtcDateTime.py index c23a3a10..c23a3a10 100755..100644 --- a/src/VBox/Devices/EFI/Firmware/BaseTools/Scripts/GetUtcDateTime.py +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Scripts/GetUtcDateTime.py diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Scripts/PackageDocumentTools/plugins/EdkPlugins/basemodel/doxygen.py b/src/VBox/Devices/EFI/Firmware/BaseTools/Scripts/PackageDocumentTools/plugins/EdkPlugins/basemodel/doxygen.py index b3198d5b..b3198d5b 100755..100644 --- a/src/VBox/Devices/EFI/Firmware/BaseTools/Scripts/PackageDocumentTools/plugins/EdkPlugins/basemodel/doxygen.py +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Scripts/PackageDocumentTools/plugins/EdkPlugins/basemodel/doxygen.py diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/Common/BuildToolError.py b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/Common/BuildToolError.py index c0a3269b..c0a3269b 100755..100644 --- a/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/Common/BuildToolError.py +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/Common/BuildToolError.py diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/CommonDataClass/Exceptions.py b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/CommonDataClass/Exceptions.py index c0b5e460..c0b5e460 100755..100644 --- a/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/CommonDataClass/Exceptions.py +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/CommonDataClass/Exceptions.py diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/Logger/ToolError.py b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/Logger/ToolError.py index f4cf1989..f4cf1989 100755..100644 --- a/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/Logger/ToolError.py +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/Logger/ToolError.py diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/UnitTest/InfBinarySectionTest.py b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/UnitTest/InfBinarySectionTest.py index 7f000648..7f000648 100644..100755 --- a/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/UnitTest/InfBinarySectionTest.py +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/UnitTest/InfBinarySectionTest.py diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/tests/Split/test_split.py b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/tests/Split/test_split.py index 4e19e636..4e19e636 100755..100644 --- a/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/tests/Split/test_split.py +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/tests/Split/test_split.py diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/CToolsTests.py b/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/CToolsTests.py index e5e20f41..e5e20f41 100755..100644 --- a/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/CToolsTests.py +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/CToolsTests.py diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/CheckPythonSyntax.py b/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/CheckPythonSyntax.py index 29ed80b4..29ed80b4 100755..100644 --- a/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/CheckPythonSyntax.py +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/CheckPythonSyntax.py diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/PythonTest.py b/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/PythonTest.py index afe58534..afe58534 100755..100644 --- a/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/PythonTest.py +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/PythonTest.py diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/PythonToolsTests.py b/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/PythonToolsTests.py index a287f3a3..a287f3a3 100755..100644 --- a/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/PythonToolsTests.py +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Tests/PythonToolsTests.py diff --git a/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/process_files.pl b/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/process_files.pl index 5b0749fa..5b0749fa 100755..100644 --- a/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/process_files.pl +++ b/src/VBox/Devices/EFI/Firmware/CryptoPkg/Library/OpensslLib/process_files.pl diff --git a/src/VBox/Devices/EFI/Firmware/IntelFsp2Pkg/Tools/Tests/test_yaml.py b/src/VBox/Devices/EFI/Firmware/IntelFsp2Pkg/Tools/Tests/test_yaml.py index a71073ba..a71073ba 100755..100644 --- a/src/VBox/Devices/EFI/Firmware/IntelFsp2Pkg/Tools/Tests/test_yaml.py +++ b/src/VBox/Devices/EFI/Firmware/IntelFsp2Pkg/Tools/Tests/test_yaml.py diff --git a/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd b/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd Binary files differindex 2c689d9b..16789a3b 100644 --- a/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd +++ b/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd diff --git a/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI64.fd b/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI64.fd Binary files differindex e586a195..a11bbd1b 100644 --- a/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI64.fd +++ b/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI64.fd diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.asm b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.asm index 0b83b579..0c156fb2 100644 --- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.asm +++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.asm @@ -8281,7 +8281,7 @@ vesa_pm_end: ; 0xc4754 LB 0x1 section _DATA progbits vstart=0x4780 align=1 ; size=0x374d class=DATA group=DGROUP ; disGetNextSymbol 0xc4780 LB 0x374d -> off=0x0 cb=000000000000002f uValue=00000000000c0000 '_msg_vga_init' _msg_vga_init: ; 0xc4780 LB 0x2f - db 'Oracle VM VirtualBox Version 7.0.16 VGA BIOS', 00dh, 00ah, 000h + db 'Oracle VM VirtualBox Version 7.0.18 VGA BIOS', 00dh, 00ah, 000h ; disGetNextSymbol 0xc47af LB 0x371e -> off=0x0 cb=0000000000000080 uValue=00000000000c002f 'vga_modes' vga_modes: ; 0xc47af LB 0x80 db 000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h @@ -9212,7 +9212,7 @@ _vbebios_product_name: ; 0xc7e34 LB 0x21 db 'Oracle VM VirtualBox VBE Adapter', 000h ; disGetNextSymbol 0xc7e55 LB 0x78 -> off=0x0 cb=0000000000000024 uValue=00000000000c36d5 '_vbebios_product_revision' _vbebios_product_revision: ; 0xc7e55 LB 0x24 - db 'Oracle VM VirtualBox Version 7.0.16', 000h + db 'Oracle VM VirtualBox Version 7.0.18', 000h ; disGetNextSymbol 0xc7e79 LB 0x54 -> off=0x0 cb=000000000000002b uValue=00000000000c36f9 '_vbebios_info_string' _vbebios_info_string: ; 0xc7e79 LB 0x2b db 'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h @@ -9247,4 +9247,4 @@ section CONST2 progbits vstart=0x7ece align=1 ; size=0x0 class=DATA group=DGROUP db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - db 000h, 0deh + db 000h, 0dah diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum index 9d6aad04..5b04df55 100644 --- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum +++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum @@ -1 +1 @@ -852353ec31d0749de1c385e91ab27511 *VBoxVgaBios286.rom +a9f7b007aff3ce32ea3f5295bc1144ed *VBoxVgaBios286.rom diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.asm b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.asm index 12ea3360..b480612b 100644 --- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.asm +++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.asm @@ -7735,7 +7735,7 @@ vesa_pm_end: ; 0xc4754 LB 0x1 section _DATA progbits vstart=0x4780 align=1 ; size=0x374d class=DATA group=DGROUP ; disGetNextSymbol 0xc4780 LB 0x374d -> off=0x0 cb=000000000000002f uValue=00000000000c0000 '_msg_vga_init' _msg_vga_init: ; 0xc4780 LB 0x2f - db 'Oracle VM VirtualBox Version 7.0.16 VGA BIOS', 00dh, 00ah, 000h + db 'Oracle VM VirtualBox Version 7.0.18 VGA BIOS', 00dh, 00ah, 000h ; disGetNextSymbol 0xc47af LB 0x371e -> off=0x0 cb=0000000000000080 uValue=00000000000c002f 'vga_modes' vga_modes: ; 0xc47af LB 0x80 db 000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h @@ -8666,7 +8666,7 @@ _vbebios_product_name: ; 0xc7e34 LB 0x21 db 'Oracle VM VirtualBox VBE Adapter', 000h ; disGetNextSymbol 0xc7e55 LB 0x78 -> off=0x0 cb=0000000000000024 uValue=00000000000c36d5 '_vbebios_product_revision' _vbebios_product_revision: ; 0xc7e55 LB 0x24 - db 'Oracle VM VirtualBox Version 7.0.16', 000h + db 'Oracle VM VirtualBox Version 7.0.18', 000h ; disGetNextSymbol 0xc7e79 LB 0x54 -> off=0x0 cb=000000000000002b uValue=00000000000c36f9 '_vbebios_info_string' _vbebios_info_string: ; 0xc7e79 LB 0x2b db 'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h @@ -8701,4 +8701,4 @@ section CONST2 progbits vstart=0x7ece align=1 ; size=0x0 class=DATA group=DGROUP db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - db 000h, 053h + db 000h, 04fh diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum index 5bbcac9e..62bbb895 100644 --- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum +++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum @@ -1 +1 @@ -5fd5574a01aad6139078230edb9b0545 *VBoxVgaBios386.rom +73c6f655de7140699ff561c5b01f3625 *VBoxVgaBios386.rom diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.asm b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.asm index 695ce11f..fbfc435c 100644 --- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.asm +++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.asm @@ -8439,7 +8439,7 @@ vesa_pm_end: ; 0xc4754 LB 0x1 section _DATA progbits vstart=0x4780 align=1 ; size=0x374d class=DATA group=DGROUP ; disGetNextSymbol 0xc4780 LB 0x374d -> off=0x0 cb=000000000000002f uValue=00000000000c0000 '_msg_vga_init' _msg_vga_init: ; 0xc4780 LB 0x2f - db 'Oracle VM VirtualBox Version 7.0.16 VGA BIOS', 00dh, 00ah, 000h + db 'Oracle VM VirtualBox Version 7.0.18 VGA BIOS', 00dh, 00ah, 000h ; disGetNextSymbol 0xc47af LB 0x371e -> off=0x0 cb=0000000000000080 uValue=00000000000c002f 'vga_modes' vga_modes: ; 0xc47af LB 0x80 db 000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h @@ -9370,7 +9370,7 @@ _vbebios_product_name: ; 0xc7e34 LB 0x21 db 'Oracle VM VirtualBox VBE Adapter', 000h ; disGetNextSymbol 0xc7e55 LB 0x78 -> off=0x0 cb=0000000000000024 uValue=00000000000c36d5 '_vbebios_product_revision' _vbebios_product_revision: ; 0xc7e55 LB 0x24 - db 'Oracle VM VirtualBox Version 7.0.16', 000h + db 'Oracle VM VirtualBox Version 7.0.18', 000h ; disGetNextSymbol 0xc7e79 LB 0x54 -> off=0x0 cb=000000000000002b uValue=00000000000c36f9 '_vbebios_info_string' _vbebios_info_string: ; 0xc7e79 LB 0x2b db 'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h @@ -9405,4 +9405,4 @@ section CONST2 progbits vstart=0x7ece align=1 ; size=0x0 class=DATA group=DGROUP db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - db 000h, 01dh + db 000h, 019h diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum index d19f9c05..1940a52f 100644 --- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum +++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum @@ -1 +1 @@ -4d5fd4aad75f5b2295caecb11ca646b2 *VBoxVgaBios8086.rom +0f0564e36ea2319f2e46b42b53b39e81 *VBoxVgaBios8086.rom diff --git a/src/VBox/Devices/Network/DevVirtioNet.cpp b/src/VBox/Devices/Network/DevVirtioNet.cpp index 66d2cbf1..336b3000 100644 --- a/src/VBox/Devices/Network/DevVirtioNet.cpp +++ b/src/VBox/Devices/Network/DevVirtioNet.cpp @@ -791,7 +791,11 @@ void virtioNetDumpGcPhysRxBuf(PPDMDEVINS pDevIns, PVIRTIONETPKTHDR pRxPktHdr, /** * @callback_method_impl{FNDBGFHANDLERDEV, virtio-net debugger info callback.} */ +#ifdef VIRTIO_REL_INFO_DUMP +DECLCALLBACK(void) virtioNetR3Info(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs) +#else /* !VIRTIO_REL_INFO_DUMP */ static DECLCALLBACK(void) virtioNetR3Info(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs) +#endif /* !VIRTIO_REL_INFO_DUMP */ { PVIRTIONET pThis = PDMDEVINS_2_DATA(pDevIns, PVIRTIONET); PVIRTIONETCC pThisCC = PDMDEVINS_2_DATA_CC(pDevIns, PVIRTIONETCC); @@ -904,7 +908,7 @@ static DECLCALLBACK(void) virtioNetR3Info(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp pHlp->pfnPrintf(pHlp, " cVirtqPairs .,............. %d\n", pThis->cVirtqPairs); pHlp->pfnPrintf(pHlp, " cVirtqs .,................. %d\n", pThis->cVirtqs); pHlp->pfnPrintf(pHlp, " cWorkers .................. %d\n", pThis->cWorkers); - pHlp->pfnPrintf(pHlp, " MMIO mapping name ......... %d\n", pThisCC->Virtio.szMmioName); + pHlp->pfnPrintf(pHlp, " MMIO mapping name ......... %s\n", pThisCC->Virtio.szMmioName); pHlp->pfnPrintf(pHlp, "\n"); } @@ -923,7 +927,7 @@ static DECLCALLBACK(void) virtioNetR3Info(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp pHlp->pfnPrintf(pHlp, " Suppress multicast: ....... %s\n", pThis->fNoMulticast ? "true" : "false"); pHlp->pfnPrintf(pHlp, " Promiscuous: .............. %s\n", pThis->fPromiscuous ? "true" : "false"); pHlp->pfnPrintf(pHlp, "\n"); - pHlp->pfnPrintf(pHlp, " Default Rx MAC filter: .... %RTmac\n", pThis->rxFilterMacDefault); + pHlp->pfnPrintf(pHlp, " Default Rx MAC filter: .... %RTmac\n", &pThis->rxFilterMacDefault); pHlp->pfnPrintf(pHlp, "\n"); pHlp->pfnPrintf(pHlp, " Unicast filter MACs:\n"); @@ -3675,7 +3679,7 @@ static DECLCALLBACK(int) virtioNetR3Construct(PPDMDEVINS pDevIns, int iInstance, * Register the debugger info callback (ignore errors). */ char szTmp[128]; - rc = PDMDevHlpDBGFInfoRegister(pDevIns, "virtio-net", "Display virtio-net info (help, net, features, state, pointers, queues, all)", virtioNetR3Info); + rc = PDMDevHlpDBGFInfoRegister(pDevIns, "virtionet", "Display virtionet info (help, net, features, state, pointers, queues, all)", virtioNetR3Info); if (RT_FAILURE(rc)) LogRel(("Failed to register DBGF info for device %s\n", szTmp)); return rc; diff --git a/src/VBox/Devices/Network/SrvIntNetR0.cpp b/src/VBox/Devices/Network/SrvIntNetR0.cpp index 728cd25a..9e9d1757 100644 --- a/src/VBox/Devices/Network/SrvIntNetR0.cpp +++ b/src/VBox/Devices/Network/SrvIntNetR0.cpp @@ -2935,7 +2935,7 @@ static int intnetR0TrunkIfSendGsoFallback(PINTNETTRUNKIF pThis, PINTNETIF pIfSen union { - uint8_t abBuf[sizeof(INTNETSG) + sizeof(INTNETSEG)]; + uint8_t abBuf[sizeof(INTNETSG) + 2 * sizeof(INTNETSEG)]; INTNETSG SG; } u; diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm index 5b6da227..96b8e631 100644 --- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm @@ -1621,7 +1621,7 @@ section CONST progbits vstart=0xf0 align=1 ; size=0xcda class=DATA group=DGROUP section CONST2 progbits vstart=0xdca align=1 ; size=0x3fa class=DATA group=DGROUP ; disGetNextSymbol 0xf0dca LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0dca 'bios_cvs_version_string' bios_cvs_version_string: ; 0xf0dca LB 0x12 - db 'VirtualBox 7.0.16', 000h + db 'VirtualBox 7.0.18', 000h ; disGetNextSymbol 0xf0ddc LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0ddc '_bios_prefix_string' _bios_prefix_string: ; 0xf0ddc LB 0x8 db 'BIOS: ', 000h, 000h @@ -19429,4 +19429,4 @@ biosorg_check_before_or_at_0FFEEh: ; 0xfff80 LB 0x70 cpu_reset: ; 0xffff0 LB 0x10 jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xffff0 orgs.asm:2114 ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000' - db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0d6h + db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0d4h diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum index 556bdbe3..8fb531ac 100644 --- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum @@ -1 +1 @@ -574c2c72048d5a5c9c079fbf47683b0f *VBoxPcBios286.rom +ad4d1a253850bc31cfa497722faafa3a *VBoxPcBios286.rom diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm index a3231d00..85af1d40 100644 --- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm @@ -1566,7 +1566,7 @@ section CONST progbits vstart=0xf0 align=1 ; size=0xd14 class=DATA group=DGROUP section CONST2 progbits vstart=0xe04 align=1 ; size=0x3fa class=DATA group=DGROUP ; disGetNextSymbol 0xf0e04 LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0e04 'bios_cvs_version_string' bios_cvs_version_string: ; 0xf0e04 LB 0x12 - db 'VirtualBox 7.0.16', 000h + db 'VirtualBox 7.0.18', 000h ; disGetNextSymbol 0xf0e16 LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0e16 '_bios_prefix_string' _bios_prefix_string: ; 0xf0e16 LB 0x8 db 'BIOS: ', 000h, 000h @@ -19195,4 +19195,4 @@ biosorg_check_before_or_at_0FFEEh: ; 0xfff80 LB 0x70 cpu_reset: ; 0xffff0 LB 0x10 jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xffff0 orgs.asm:2114 ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000' - db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 034h + db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 032h diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum index 80cc8e0a..9cb9bea8 100644 --- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum @@ -1 +1 @@ -951bc82dd1a8482863248e9157928f1b *VBoxPcBios386.rom +79eeb980dd6104d8bc534c8c7c4e877a *VBoxPcBios386.rom diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm index 92665f77..80829ed2 100644 --- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm @@ -1621,7 +1621,7 @@ section CONST progbits vstart=0xf0 align=1 ; size=0xcda class=DATA group=DGROUP section CONST2 progbits vstart=0xdca align=1 ; size=0x3fa class=DATA group=DGROUP ; disGetNextSymbol 0xf0dca LB 0x3fa -> off=0x0 cb=0000000000000012 uValue=00000000000f0dca 'bios_cvs_version_string' bios_cvs_version_string: ; 0xf0dca LB 0x12 - db 'VirtualBox 7.0.16', 000h + db 'VirtualBox 7.0.18', 000h ; disGetNextSymbol 0xf0ddc LB 0x3e8 -> off=0x0 cb=0000000000000008 uValue=00000000000f0ddc '_bios_prefix_string' _bios_prefix_string: ; 0xf0ddc LB 0x8 db 'BIOS: ', 000h, 000h @@ -19906,4 +19906,4 @@ biosorg_check_before_or_at_0FFEEh: ; 0xfff80 LB 0x70 cpu_reset: ; 0xffff0 LB 0x10 jmp far 0f000h:0e05bh ; ea 5b e0 00 f0 ; 0xffff0 orgs.asm:2114 ; disGetNextSymbol 0xffff5 LB 0xb -> off=0xb cb=0000000000000000 uValue=0000000000100000 '_dummy_addr_0x100000' - db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 0bbh + db 030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 0b9h diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum index 95f06271..fc4dd6b7 100644 --- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum +++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum @@ -1 +1 @@ -0704d20fb86b2ca3eba57b2ca2f9e135 *VBoxPcBios8086.rom +bd634fab26a7c7e944a845a9415c8623 *VBoxPcBios8086.rom diff --git a/src/VBox/Devices/VirtIO/VirtioCore.cpp b/src/VBox/Devices/VirtIO/VirtioCore.cpp index 23ecf30c..f0ed6e42 100644 --- a/src/VBox/Devices/VirtIO/VirtioCore.cpp +++ b/src/VBox/Devices/VirtIO/VirtioCore.cpp @@ -618,6 +618,42 @@ bool virtioCoreR3VirtqIsEnabled(PVIRTIOCORE pVirtio, uint16_t uVirtqNbr) return (bool)pVirtq->uEnable && pVirtq->GCPhysVirtqDesc; } +DECLINLINE(void) virtioCoreR3DescInfo(PCDBGFINFOHLP pHlp, PVIRTQ_DESC_T pDesc, uint16_t iDesc, const char *cszTail) +{ + if (pDesc->fFlags & VIRTQ_DESC_F_NEXT) + pHlp->pfnPrintf(pHlp, " [%4d]%c%c %5d bytes @ %p [%4d] %s\n", + iDesc, pDesc->fFlags & VIRTQ_DESC_F_INDIRECT ? 'I' : ' ', + pDesc->fFlags & VIRTQ_DESC_F_WRITE ? 'W' : 'R', + pDesc->cb, pDesc->GCPhysBuf, pDesc->uDescIdxNext, cszTail); + else + pHlp->pfnPrintf(pHlp, " [%4d]%c%c %5d bytes @ %p %s\n", + iDesc, pDesc->fFlags & VIRTQ_DESC_F_INDIRECT ? 'I' : ' ', + pDesc->fFlags & VIRTQ_DESC_F_WRITE ? 'W' : 'R', + pDesc->cb, pDesc->GCPhysBuf, cszTail); +} + +#ifdef VIRTIO_REL_INFO_DUMP +DECLHIDDEN(void) virtioCoreR3DumpAvailRing(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, PVIRTIOCORE pVirtio, PVIRTQUEUE pVirtq) +{ + uint16_t auTmp[VIRTQ_SIZE]; + virtioCoreGCPhysRead(pVirtio, pDevIns, + pVirtq->GCPhysVirtqAvail + RT_UOFFSETOF_DYN(VIRTQ_AVAIL_T, auRing[0]), + auTmp, pVirtq->uQueueSize * sizeof(uint16_t)); + pHlp->pfnPrintf(pHlp, " avail ring dump:\n%.*RhXd\n", pVirtq->uQueueSize * sizeof(uint16_t), auTmp, + pVirtq->GCPhysVirtqAvail + RT_UOFFSETOF_DYN(VIRTQ_AVAIL_T, auRing[0])); +} + +DECLHIDDEN(void) virtioCoreR3DumpUsedRing(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, PVIRTIOCORE pVirtio, PVIRTQUEUE pVirtq) +{ + VIRTQ_USED_ELEM_T aTmp[VIRTQ_SIZE]; + virtioCoreGCPhysRead(pVirtio, pDevIns, + pVirtq->GCPhysVirtqUsed + RT_UOFFSETOF_DYN(VIRTQ_USED_T, aRing[0]), + aTmp, pVirtq->uQueueSize * sizeof(VIRTQ_USED_ELEM_T)); + pHlp->pfnPrintf(pHlp, " used ring dump:\n%.*RhXd\n", pVirtq->uQueueSize * sizeof(VIRTQ_USED_ELEM_T), aTmp, + pVirtq->GCPhysVirtqUsed + RT_UOFFSETOF_DYN(VIRTQ_USED_T, aRing[0])); +} +#endif /* VIRTIO_REL_INFO_DUMP */ + /** API Fuunction: See header file */ void virtioCoreR3VirtqInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs, int uVirtq) { @@ -634,9 +670,23 @@ void virtioCoreR3VirtqInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *p uint16_t uUsedIdx = virtioReadUsedRingIdx(pDevIns, pVirtio, pVirtq); uint16_t uUsedIdxShadow = pVirtq->uUsedIdxShadow; + uint16_t uAvailEventIdx = 0; + uint16_t uUsedEventIdx = 0; + bool fNotify = !!(pVirtio->uDriverFeatures & VIRTIO_F_EVENT_IDX); + if (fNotify) + { + uUsedEventIdx = virtioReadAvailUsedEvent(pDevIns, pVirtio, pVirtq); + /* There is no helper for reading AvailEvent since the device is not supposed to read it. */ + virtioCoreGCPhysRead(pVirtio, pDevIns, + pVirtq->GCPhysVirtqUsed + + RT_UOFFSETOF_DYN(VIRTQ_USED_T, aRing[pVirtq->uQueueSize]), + &uAvailEventIdx, sizeof(uAvailEventIdx)); + } + #ifdef VIRTIO_VBUF_ON_STACK VIRTQBUF_T VirtqBuf; PVIRTQBUF pVirtqBuf = &VirtqBuf; + RT_ZERO(VirtqBuf); /* Make sure pSgPhysSend and pSgPhysReturn are initialized. */ #else /* !VIRTIO_VBUF_ON_STACK */ PVIRTQBUF pVirtqBuf = NULL; #endif /* !VIRTIO_VBUF_ON_STACK */ @@ -667,19 +717,19 @@ void virtioCoreR3VirtqInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *p pHlp->pfnPrintf(pHlp, " MSIX vector: ....... %4.4x\n", pVirtq->uMsixVector); pHlp->pfnPrintf(pHlp, "\n"); pHlp->pfnPrintf(pHlp, " avail ring (%d entries):\n", uAvailIdx - uAvailIdxShadow); - pHlp->pfnPrintf(pHlp, " index: ................ %d\n", uAvailIdx); - pHlp->pfnPrintf(pHlp, " shadow: ............... %d\n", uAvailIdxShadow); + pHlp->pfnPrintf(pHlp, " index: ................ %d (%d)\n", pVirtq->uQueueSize ? uAvailIdx % pVirtq->uQueueSize : uAvailIdx, uAvailIdx); + pHlp->pfnPrintf(pHlp, " shadow: ............... %d (%d)\n", pVirtq->uQueueSize ? uAvailIdxShadow % pVirtq->uQueueSize : uAvailIdxShadow, uAvailIdxShadow); pHlp->pfnPrintf(pHlp, " flags: ................ %s\n", fAvailNoInterrupt ? "NO_INTERRUPT" : ""); pHlp->pfnPrintf(pHlp, "\n"); - pHlp->pfnPrintf(pHlp, " used ring (%d entries):\n", uUsedIdx - uUsedIdxShadow); - pHlp->pfnPrintf(pHlp, " index: ................ %d\n", uUsedIdx); - pHlp->pfnPrintf(pHlp, " shadow: ............... %d\n", uUsedIdxShadow); + pHlp->pfnPrintf(pHlp, " used ring (%d entries):\n", uUsedIdxShadow - uUsedIdx); + pHlp->pfnPrintf(pHlp, " index: ................ %d (%d)\n", pVirtq->uQueueSize ? uUsedIdx % pVirtq->uQueueSize : uUsedIdx, uUsedIdx); + pHlp->pfnPrintf(pHlp, " shadow: ............... %d (%d)\n", pVirtq->uQueueSize ? uUsedIdxShadow % pVirtq->uQueueSize : uUsedIdxShadow, uUsedIdxShadow); pHlp->pfnPrintf(pHlp, " flags: ................ %s\n", fUsedNoNotify ? "NO_NOTIFY" : ""); pHlp->pfnPrintf(pHlp, "\n"); if (!fEmpty) { pHlp->pfnPrintf(pHlp, " desc chain:\n"); - pHlp->pfnPrintf(pHlp, " head idx: ............. %d\n", uUsedIdx); + pHlp->pfnPrintf(pHlp, " head idx: ............. %d (%d)\n", pVirtq->uQueueSize ? uUsedIdx % pVirtq->uQueueSize : uUsedIdx, uUsedIdx); pHlp->pfnPrintf(pHlp, " segs: ................. %d\n", cSendSegs + cReturnSegs); pHlp->pfnPrintf(pHlp, " refCnt ................ %d\n", pVirtqBuf->cRefs); pHlp->pfnPrintf(pHlp, "\n"); @@ -691,7 +741,7 @@ void virtioCoreR3VirtqInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *p pHlp->pfnPrintf(pHlp, " unsent ............. %d\n", pVirtqBuf->pSgPhysSend->cbSegLeft); } pHlp->pfnPrintf(pHlp, "\n"); - pHlp->pfnPrintf(pHlp, " guest-to-host (%d bytes)\n", pVirtqBuf->cbPhysReturn); + pHlp->pfnPrintf(pHlp, " guest-to-host (%d bytes):\n", pVirtqBuf->cbPhysReturn); pHlp->pfnPrintf(pHlp, " segs: .............. %d\n", cReturnSegs); if (cReturnSegs) { @@ -699,8 +749,77 @@ void virtioCoreR3VirtqInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *p pHlp->pfnPrintf(pHlp, " unsent ............. %d\n", pVirtqBuf->pSgPhysReturn->cbSegLeft); } } else - pHlp->pfnPrintf(pHlp, " No desc chains available\n"); + pHlp->pfnPrintf(pHlp, " no desc chains available\n"); + pHlp->pfnPrintf(pHlp, "\n"); + + /* Avoid handling zero-sized queues, there is nothing to show anyway. */ + if (pVirtq->uQueueSize == 0) + return; + + pHlp->pfnPrintf(pHlp, " desc table:\n"); + /* + * Each line in the descriptor table output consists of two parts: a fixed part and a variable "tail". + * The fixed part shows the descriptor index, its writability, size, physical address, and optionally + * which descriptor is next the chain. The tail shows which elements of avail/used rings point to + * this descriptor. + */ + VIRTQ_DESC_T descTable[VIRTQ_SIZE]; + char aszTails[VIRTQ_SIZE][32]; + virtioCoreGCPhysRead(pVirtio, pDevIns, pVirtq->GCPhysVirtqDesc, + &descTable, sizeof(VIRTQ_DESC_T) * pVirtq->uQueueSize); + RT_BZERO(aszTails, sizeof(aszTails)); /* No tails by default */ + + /* Fill avail tail fields. */ + + /* The first available descriptor gets outer reverse angle brackets. */ + char chOuterLeft = '>', chOuterRight = '<'; + char chLeft = '[', chRight = ']'; + /* Use 'not-equal' instead of 'less' because of uint16_t wrapping! */ + for (uint16_t i = uAvailIdxShadow; i != uAvailIdx; i++) + { + /* The last descriptor gets inner curly braces, inner square brackets for the rest. */ + if (i + 1 == uAvailIdx) { chLeft = '{'; chRight = '}'; } + uint16_t uDescIdx = virtioReadAvailDescIdx(pDevIns, pVirtio, pVirtq, i); + /* Print an exclamation sign instead of outer right bracket if this descriptor triggers notification. */ + RTStrPrintf(aszTails[uDescIdx], sizeof(aszTails[0]), "%c%c%4d%c%c ", + chOuterLeft, chLeft, i % pVirtq->uQueueSize, chRight, + fNotify ? ((i % pVirtq->uQueueSize) == (uAvailEventIdx % pVirtq->uQueueSize) ? '!' : chOuterRight) : chOuterRight); + chOuterLeft = chOuterRight = ' '; + } + + /* Fill used tail fields, see comments in the similar loop above. */ + + chOuterLeft = '>'; chOuterRight = '<'; + chLeft = '['; chRight = ']'; + for (uint16_t i = uUsedIdx; i != uUsedIdxShadow; i++) + { + VIRTQ_USED_ELEM_T elem; + virtioCoreGCPhysRead(pVirtio, pDevIns, + pVirtq->GCPhysVirtqUsed + + RT_UOFFSETOF_DYN(VIRTQ_USED_T, aRing[i % pVirtq->uQueueSize]), + &elem, sizeof(elem)); + if (i + 1 == uUsedIdxShadow) { chLeft = '{'; chRight = '}'; } + char *szTail = aszTails[elem.uDescIdx % pVirtq->uQueueSize]; + /* Add empty avail field if none is present, 9 spaces + terminating zero. */ + if (*szTail == '\0') + RTStrCopy(szTail, 10, " "); + RTStrPrintf(szTail + 9, sizeof(aszTails[0]) - 9, " %c%c%4d%c%c %d bytes", + chOuterLeft, chLeft, i % pVirtq->uQueueSize, chRight, + fNotify ? ((i % pVirtq->uQueueSize) == (uUsedEventIdx % pVirtq->uQueueSize) ? '!' : chOuterRight) : chOuterRight, + elem.cbElem); + chOuterLeft = chOuterRight = ' '; + } + + pHlp->pfnPrintf(pHlp, " index w/r size phys addr next @avail @used\n"); + pHlp->pfnPrintf(pHlp, " ------ - ----------- ---------------- ------- -------- ------------------\n"); + for (uint16_t i = 0; i < pVirtq->uQueueSize; i++) + virtioCoreR3DescInfo(pHlp, &descTable[i], i, aszTails[i]); +#ifdef VIRTIO_REL_INFO_DUMP pHlp->pfnPrintf(pHlp, "\n"); + virtioCoreR3DumpAvailRing(pDevIns, pHlp, pVirtio, pVirtq); + pHlp->pfnPrintf(pHlp, "\n"); + virtioCoreR3DumpUsedRing(pDevIns, pHlp, pVirtio, pVirtq); +#endif /* VIRTIO_REL_INFO_DUMP */ } #ifdef VIRTIO_VBUF_ON_STACK @@ -819,6 +938,46 @@ int virtioCoreR3VirtqAvailBufNext(PVIRTIOCORE pVirtio, uint16_t uVirtq) return VINF_SUCCESS; } +#ifdef VIRTIO_REL_INFO_DUMP +DECLCALLBACK(void) virtioNetR3Info(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs); + +static DECLCALLBACK(void) dbgVirtio_Printf(PCDBGFINFOHLP pHlp, const char *pszFormat, ...) +{ + RT_NOREF(pHlp); + va_list va; + va_start(va, pszFormat); + RTLogRelPrintfV(pszFormat, va); + va_end(va); +} + + +static DECLCALLBACK(void) dbgVirtio_PrintfV(PCDBGFINFOHLP pHlp, const char *pszFormat, va_list args) +{ + RT_NOREF(pHlp); + RTLogRelPrintfV(pszFormat, args); +} + + +/** + * @interface_method_impl{DBGCCMDHLP,pfnGetDbgfOutputHlp} + */ +static void dbgVirtioDump(PPDMDEVINS pDevIns) +{ + PVIRTIOCORE pVirtio = PDMDEVINS_2_DATA(pDevIns, PVIRTIOCORE); + LogRel(("dbgVirtioDump(%s)", pVirtio->szInstance)); + if (RTStrNCmp("virtio-net", pVirtio->szInstance, 10) == 0) + { + DBGFINFOHLP DbgHlp; + + DbgHlp.pfnPrintf = dbgVirtio_Printf; + DbgHlp.pfnPrintfV = dbgVirtio_PrintfV; + DbgHlp.pfnGetOptError = NULL; + + virtioNetR3Info(pDevIns, &DbgHlp, "a"); // Print everything! + } +} + +#endif /* VIRTIO_REL_INFO_DUMP */ /** API Function: See header file */ #ifdef VIRTIO_VBUF_ON_STACK int virtioCoreR3VirtqAvailBufGet(PPDMDEVINS pDevIns, PVIRTIOCORE pVirtio, uint16_t uVirtq, @@ -889,11 +1048,14 @@ int virtioCoreR3VirtqAvailBufGet(PPDMDEVINS pDevIns, PVIRTIOCORE pVirtio, uint16 static volatile uint32_t s_cThreshold = 1; if (ASMAtomicIncU32(&s_cMessages) == ASMAtomicReadU32(&s_cThreshold)) { - LogRelMax(64, ("Too many linked descriptors; check if the guest arranges descriptors in a loop (cSegsIn=%u cSegsOut=%u uQueueSize=%u).\n", - cSegsIn, cSegsOut, pVirtq->uQueueSize)); + LogRelMax(64, ("Too many linked descriptors; check if the guest arranges descriptors in a loop (cSegsIn=%u cSegsOut=%u uQueueSize=%u uDescIdx=%u queue=%s).\n", + cSegsIn, cSegsOut, pVirtq->uQueueSize, uDescIdx, pVirtq->szName)); if (ASMAtomicReadU32(&s_cMessages) != 1) LogRelMax(64, ("(the above error has occured %u times so far)\n", ASMAtomicReadU32(&s_cMessages))); ASMAtomicWriteU32(&s_cThreshold, ASMAtomicReadU32(&s_cThreshold) * 10); +#ifdef VIRTIO_REL_INFO_DUMP + dbgVirtioDump(pDevIns); +#endif /* VIRTIO_REL_INFO_DUMP */ } break; } diff --git a/src/VBox/Devices/VirtIO/VirtioCore.h b/src/VBox/Devices/VirtIO/VirtioCore.h index 00bcb43c..776ac969 100644 --- a/src/VBox/Devices/VirtIO/VirtioCore.h +++ b/src/VBox/Devices/VirtIO/VirtioCore.h @@ -32,6 +32,9 @@ # pragma once #endif +/* Some temporary printouts to release log in descriptor chain handling */ +//#define VIRTIO_REL_INFO_DUMP 1 + /* Do not allocate VIRTQBUF from the heap when possible */ #define VIRTIO_VBUF_ON_STACK 1 diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/ip/tcprst.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/ip/tcprst.d index a2d88e1c..a2d88e1c 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/ip/tcprst.d +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/ip/tcprst.d diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/mkdemo.pl b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/mkdemo.pl index f2bc3ec7..f2bc3ec7 100755..100644 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/mkdemo.pl +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/mkdemo.pl diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpbytesstat.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpbytesstat.d index ecd9b044..ecd9b044 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpbytesstat.d +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpbytesstat.d diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpioflags.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpioflags.d index cdfbd2aa..cdfbd2aa 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpioflags.d +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpioflags.d diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpsnoop.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpsnoop.d index 9d44519e..9d44519e 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpsnoop.d +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpsnoop.d diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpstate.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpstate.d index 38f0470a..38f0470a 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpstate.d +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcpstate.d diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcptop.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcptop.d index 450f496e..450f496e 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcptop.d +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/tcp/tcptop.d diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/udp/udpbytesstat.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/udp/udpbytesstat.d index 58fa826a..58fa826a 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/udp/udpbytesstat.d +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/udp/udpbytesstat.d diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/udp/udpsnoop.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/udp/udpsnoop.d index fffc2904..fffc2904 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/udp/udpsnoop.d +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/udp/udpsnoop.d diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/udp/udptop.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/udp/udptop.d index a626e571..a626e571 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/udp/udptop.d +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/demo/udp/udptop.d diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/docsExamples/specopen.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/docsExamples/specopen.d index dff3e622..dff3e622 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/docsExamples/specopen.d +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/docsExamples/specopen.d diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/docsExamples/userfunc.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/docsExamples/userfunc.d index 0d83465d..0d83465d 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/docsExamples/userfunc.d +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/docsExamples/userfunc.d diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv4localicmp.ksh b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv4localicmp.ksh index 0965040e..0965040e 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv4localicmp.ksh +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv4localicmp.ksh diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv4remoteicmp.ksh b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv4remoteicmp.ksh index efe0d30f..efe0d30f 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv4remoteicmp.ksh +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv4remoteicmp.ksh diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv6localicmp.ksh b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv6localicmp.ksh index 5912ee7c..5912ee7c 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv6localicmp.ksh +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv6localicmp.ksh diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv6remoteicmp.ksh b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv6remoteicmp.ksh index b94b7843..b94b7843 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv6remoteicmp.ksh +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/ip/tst.ipv6remoteicmp.ksh diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/safety/tst.vahole.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/safety/tst.vahole.d index 2ef40a5a..2ef40a5a 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/safety/tst.vahole.d +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/safety/tst.vahole.d diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/scripting/err.D_SYNTAX.concat.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/scripting/err.D_SYNTAX.concat.d index 00a29969..00a29969 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/scripting/err.D_SYNTAX.concat.d +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/scripting/err.D_SYNTAX.concat.d diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/scripting/err.D_SYNTAX.desc.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/scripting/err.D_SYNTAX.desc.d index 3dfa2b26..3dfa2b26 100644..100755 --- a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/scripting/err.D_SYNTAX.desc.d +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/scripting/err.D_SYNTAX.desc.d diff --git a/src/VBox/Frontends/VBoxShell/vboxshell.py b/src/VBox/Frontends/VBoxShell/vboxshell.py index bd0222c7..f1083dd1 100755 --- a/src/VBox/Frontends/VBoxShell/vboxshell.py +++ b/src/VBox/Frontends/VBoxShell/vboxshell.py @@ -1,7 +1,28 @@ -#!/usr/bin/env python +#!/bin/sh # -*- coding: utf-8 -*- # $Id: vboxshell.py $ +# The following checks for the right (i.e. most recent) Python binary available +# and re-starts the script using that binary (like a shell wrapper). +# +# Using a shebang like "#!/bin/env python" on newer Fedora/Debian distros is banned [1] +# and also won't work on other newer distros (Ubuntu >= 23.10), as those only ship +# python3 without a python->python3 symlink anymore. +# +# Note: As Python 2 is EOL, we consider this last (and hope for the best). +# +# [1] https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/2PD5RNJRKPN2DVTNGJSBHR5RUSVZSDZI/ +''':' +for python_bin in python3 python python2 +do + type "$python_bin" > /dev/null 2>&1 && exec "$python_bin" "$0" "$@" +done +echo >&2 "ERROR: Python not found! Please install this first in order to run this program." +exit 1 +':''' + +from __future__ import print_function + """ VirtualBox Python Shell. @@ -19,8 +40,6 @@ Finally, shell allows arbitrary custom extensions, just create P.S. Our apologies for the code quality. """ -from __future__ import print_function - __copyright__ = \ """ Copyright (C) 2009-2023 Oracle and/or its affiliates. @@ -43,7 +62,7 @@ along with this program; if not, see <https://www.gnu.org/licenses>. SPDX-License-Identifier: GPL-3.0-only """ -__version__ = "$Revision: 155244 $" +__version__ = "$Revision: 162975 $" import gc diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts index 8b92199e..1e3150da 100644 --- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts +++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts @@ -4843,7 +4843,7 @@ <message> <source>Dynamically allocated storage</source> <comment>MediumVariant</comment> - <translation>Almacenamiento resevado dinámicamente</translation> + <translation>Almacenamiento reservado dinámicamente</translation> </message> <message> <source>New dynamically allocated storage</source> @@ -4853,7 +4853,7 @@ <message> <source>Dynamically allocated differencing storage</source> <comment>MediumVariant</comment> - <translation>Almacenamiento diferenciado resevado dinámicamente</translation> + <translation>Almacenamiento diferenciado reservado dinámicamente</translation> </message> <message> <source>Fixed size storage</source> @@ -4878,7 +4878,7 @@ <message> <source>Dynamically allocated compressed storage</source> <comment>MediumVariant</comment> - <translation>Almacenamiento comprimido resevado dinámicamente</translation> + <translation>Almacenamiento comprimido reservado dinámicamente</translation> </message> <message> <source>Dynamically allocated differencing compressed storage</source> @@ -31727,7 +31727,7 @@ Versión %1</translation> </message> <message> <source>Dynamically allocated storage</source> - <translation type="obsolete">Almacenamiento resevado dinámicamente</translation> + <translation type="obsolete">Almacenamiento reservado dinámicamente</translation> </message> <message> <source>Fixed size storage</source> @@ -31833,12 +31833,12 @@ Versión %1</translation> <message> <source>Dynamically allocated storage</source> <comment>MediumVariant</comment> - <translation type="vanished">Almacenamiento resevado dinámicamente</translation> + <translation type="vanished">Almacenamiento reservado dinámicamente</translation> </message> <message> <source>Dynamically allocated differencing storage</source> <comment>MediumVariant</comment> - <translation type="vanished">Almacenamiento diferenciado resevado dinámicamente</translation> + <translation type="vanished">Almacenamiento diferenciado reservado dinámicamente</translation> </message> <message> <source>Fixed size storage</source> @@ -31863,7 +31863,7 @@ Versión %1</translation> <message> <source>Dynamically allocated compressed storage</source> <comment>MediumVariant</comment> - <translation type="vanished">Almacenamiento comprimido resevado dinámicamente</translation> + <translation type="vanished">Almacenamiento comprimido reservado dinámicamente</translation> </message> <message> <source>Dynamically allocated differencing compressed storage</source> diff --git a/src/VBox/HostDrivers/Support/Makefile.kmk b/src/VBox/HostDrivers/Support/Makefile.kmk index 6543b624..46c2784c 100644 --- a/src/VBox/HostDrivers/Support/Makefile.kmk +++ b/src/VBox/HostDrivers/Support/Makefile.kmk @@ -237,6 +237,7 @@ SUPR3HardenedStatic_DEFS += \ $(if $(VBOX_WITH_RAW_MODE),VBOX_WITH_RAW_MODE,) \ $(if $(VBOX_WITH_DRIVERLESS_NEM_FALLBACK),VBOX_WITH_DRIVERLESS_NEM_FALLBACK,) \ $(if $(VBOX_WITHOUT_DEBUGGER_CHECKS),VBOX_WITHOUT_DEBUGGER_CHECKS,) \ + $(if $(VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT),VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT,) \ $(if $(VBOX_PERMIT_VISUAL_STUDIO_PROFILING),VBOX_PERMIT_VISUAL_STUDIO_PROFILING,) \ VBOX_PERMIT_MORE \ VBOX_PERMIT_EVEN_MORE @@ -780,6 +781,9 @@ if !defined(VBOX_ONLY_DOCS) \ win/SUPHardenedVerifyImage-win.cpp \ win/SUPHardenedVerifyProcess-win.cpp \ $(VBOX_SUP_WIN_CERTS_FILE) + ifdef VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT + VBoxDrv_DEFS.win += VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT + endif endif VBoxDrv_SOURCES = \ SUPDrv.d \ diff --git a/src/VBox/HostDrivers/Support/win/SUPHardenedVerify-win.h b/src/VBox/HostDrivers/Support/win/SUPHardenedVerify-win.h index 0f953e38..a14ee4a7 100644 --- a/src/VBox/HostDrivers/Support/win/SUPHardenedVerify-win.h +++ b/src/VBox/HostDrivers/Support/win/SUPHardenedVerify-win.h @@ -151,8 +151,9 @@ DECLHIDDEN(int) supHardenedWinVerifyImageByLdrMod(RTLDRMOD hLdrMod, PCRTUTF16 p # define SUPHNTVI_F_REQUIRE_SIGNATURE_ENFORCEMENT RT_BIT(2) /** Whether to allow image verification by catalog file. */ # define SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION RT_BIT(3) -/** The file owner must be TrustedInstaller on Vista+. */ -# define SUPHNTVI_F_TRUSTED_INSTALLER_OWNER RT_BIT(4) +/** The file owner must be TrustedInstaller, Builtin\\Administrators + * (S-1-5-32-544) or local system (S-1-5-21) on Vista+. */ +# define SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER RT_BIT(4) /** Ignore the image architecture (otherwise it must match the verification * code). Used with resource images and such. */ # define SUPHNTVI_F_IGNORE_ARCHITECTURE RT_BIT(30) diff --git a/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyImage-win.cpp b/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyImage-win.cpp index 747d975e..c05d0210 100644 --- a/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyImage-win.cpp +++ b/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyImage-win.cpp @@ -807,7 +807,7 @@ static int supHardNtViCheckIfNotSignedOk(RTLDRMOD hLdrMod, PCRTUTF16 pwszName, u pwsz = pwszName + cwcOther + 1; /* Must be owned by trusted installer. (This test is superfuous, thus no relaxation here.) */ - if ( !(fFlags & SUPHNTVI_F_TRUSTED_INSTALLER_OWNER) + if ( !(fFlags & SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER) && !supHardNtViCheckIsOwnedByTrustedInstallerOrSimilar(hFile, pwszName)) return rc; @@ -868,7 +868,7 @@ static int supHardNtViCheckIfNotSignedOk(RTLDRMOD hLdrMod, PCRTUTF16 pwszName, u return rc; /* Must be owned by trusted installer. */ - if ( !(fFlags & SUPHNTVI_F_TRUSTED_INSTALLER_OWNER) + if ( !(fFlags & SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER) && !supHardNtViCheckIsOwnedByTrustedInstallerOrSimilar(hFile, pwszName)) return rc; return VINF_LDRVI_NOT_SIGNED; @@ -885,7 +885,7 @@ static int supHardNtViCheckIfNotSignedOk(RTLDRMOD hLdrMod, PCRTUTF16 pwszName, u cwcOther = g_System32NtPath.UniStr.Length / sizeof(WCHAR); /* ASSUMES System32 is called System32. */ pwsz = pwszName + cwcOther + 1; - if ( !(fFlags & SUPHNTVI_F_TRUSTED_INSTALLER_OWNER) + if ( !(fFlags & SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER) && !supHardNtViCheckIsOwnedByTrustedInstallerOrSimilar(hFile, pwszName)) return rc; @@ -933,7 +933,7 @@ static int supHardNtViCheckIfNotSignedOk(RTLDRMOD hLdrMod, PCRTUTF16 pwszName, u # endif ) { - if ( !(fFlags & SUPHNTVI_F_TRUSTED_INSTALLER_OWNER) + if ( !(fFlags & SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER) && !supHardNtViCheckIsOwnedByTrustedInstallerOrSimilar(hFile, pwszName)) return rc; return VINF_LDRVI_NOT_SIGNED; @@ -943,7 +943,7 @@ static int supHardNtViCheckIfNotSignedOk(RTLDRMOD hLdrMod, PCRTUTF16 pwszName, u /* * Anything that's owned by the trusted installer. */ - if ( (fFlags & SUPHNTVI_F_TRUSTED_INSTALLER_OWNER) + if ( (fFlags & SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER) || supHardNtViCheckIsOwnedByTrustedInstallerOrSimilar(hFile, pwszName)) return VINF_LDRVI_NOT_SIGNED; @@ -1379,7 +1379,7 @@ DECLHIDDEN(int) supHardenedWinVerifyImageByLdrMod(RTLDRMOD hLdrMod, PCRTUTF16 pw */ /** @todo Since we're now allowing Builtin\\Administrators after all, perhaps we * could drop these system32 + winsxs hacks?? */ - if ( (pNtViRdr->fFlags & SUPHNTVI_F_TRUSTED_INSTALLER_OWNER) + if ( (pNtViRdr->fFlags & SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER) && !supHardNtViCheckIsOwnedByTrustedInstallerOrSimilar(pNtViRdr->hFile, pwszName)) { if (supHardViUtf16PathStartsWithEx(pwszName, (uint32_t)RTUtf16Len(pwszName), diff --git a/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyProcess-win.cpp b/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyProcess-win.cpp index ec6b6a0a..f7ef4408 100644 --- a/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyProcess-win.cpp +++ b/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyProcess-win.cpp @@ -2147,7 +2147,7 @@ static int supHardNtLdrCacheNewEntry(PSUPHNTLDRCACHEENTRY pEntry, const char *ps * for this image. */ uint32_t fFlags = fDll - ? SUPHNTVI_F_TRUSTED_INSTALLER_OWNER | SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION + ? SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER | SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION : SUPHNTVI_F_REQUIRE_BUILD_CERT; if (f32bitResourceDll) fFlags |= SUPHNTVI_F_IGNORE_ARCHITECTURE; @@ -2394,10 +2394,12 @@ static int supHardNtVpCheckExe(PSUPHNTVPSTATE pThis) "NtQueryInformationProcess/ProcessImageInformation failed: %#x hProcess=%#x", rcNt, pThis->hProcess); } +#ifndef VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT /* A kernel code signing cert is only via way to use /IntegrityCheck. */ if ( !(ImageInfo.DllCharacteristics & IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY)) return supHardNtVpSetInfo2(pThis, VERR_SUP_VP_EXE_MISSING_FORCE_INTEGRITY, "EXE DllCharacteristics=%#x, expected IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY to be set.", ImageInfo.DllCharacteristics); +#endif if (!(ImageInfo.DllCharacteristics & IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE)) return supHardNtVpSetInfo2(pThis, VERR_SUP_VP_EXE_MISSING_DYNAMIC_BASE, "EXE DllCharacteristics=%#x, expected IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE to be set.", diff --git a/src/VBox/HostDrivers/Support/win/SUPR3HardenedMain-win.cpp b/src/VBox/HostDrivers/Support/win/SUPR3HardenedMain-win.cpp index a7dccfd9..ada99ee5 100644 --- a/src/VBox/HostDrivers/Support/win/SUPR3HardenedMain-win.cpp +++ b/src/VBox/HostDrivers/Support/win/SUPR3HardenedMain-win.cpp @@ -1477,33 +1477,46 @@ supR3HardenedScreenImage(HANDLE hFile, bool fImage, bool fIgnoreArch, PULONG pfA #ifndef VBOX_PERMIT_EVEN_MORE /* * Check the path. We don't allow DLLs to be loaded from just anywhere: - * 1. System32 - normal code or cat signing, owner TrustedInstaller. - * 2. WinSxS - normal code or cat signing, owner TrustedInstaller. - * 3. VirtualBox - kernel code signing and integrity checks. - * 4. AppPatchDir - normal code or cat signing, owner TrustedInstaller. - * 5. Program Files - normal code or cat signing, owner TrustedInstaller. - * 6. Common Files - normal code or cat signing, owner TrustedInstaller. + * 1. System32 - normal code or cat signing, owner TrustedInstaller/Administrators/LocalSystem. + * 2. WinSxS - normal code or cat signing, owner TrustedInstaller/Administrators/LocalSystem. + * 3. VirtualBox - build with: + * - regular code signing cert: build cert code signing, owner TrustedInstaller/Administrators/LocalSystem. + * - kernel code signing cert: kernel code signing and integrity checks. + * 4. AppPatchDir - normal code or cat signing, owner TrustedInstaller/Administrators/LocalSystem. + * 5. Program Files - normal code or cat signing, owner TrustedInstaller/Administrators/LocalSystem. + * 6. Common Files - normal code or cat signing, owner TrustedInstaller/Administrators/LocalSystem. * 7. x86 variations of 4 & 5 - ditto. + * + * Note! VBOX_WITHOUT_KERNEL_CODE_SIGNING_CERT means the /IntegrityCheck does + * work as it doesn't seems like MS has come up with a generally accessible + * alternative to the expired kernel code signing scheme for using this + * securty enhancement. */ uint32_t fFlags = 0; if (supHardViUniStrPathStartsWithUniStr(&uBuf.UniStr, &g_System32NtPath.UniStr, true /*fCheckSlash*/)) - fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OWNER; + fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER; else if (supHardViUniStrPathStartsWithUniStr(&uBuf.UniStr, &g_WinSxSNtPath.UniStr, true /*fCheckSlash*/)) - fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OWNER; + fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER; else if (supHardViUniStrPathStartsWithUniStr(&uBuf.UniStr, &g_SupLibHardenedAppBinNtPath.UniStr, true /*fCheckSlash*/)) +# ifdef VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT + /** @todo r=bird: See SUPHNTVI_F_REQUIRE_BUILD_CERT comment below (in the + * code that's actually used). */ + fFlags |= SUPHNTVI_F_REQUIRE_BUILD_CERT | SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER; +# else fFlags |= SUPHNTVI_F_REQUIRE_KERNEL_CODE_SIGNING | SUPHNTVI_F_REQUIRE_SIGNATURE_ENFORCEMENT; +# endif # ifdef VBOX_PERMIT_MORE else if (supHardViIsAppPatchDir(uBuf.UniStr.Buffer, uBuf.UniStr.Length / sizeof(WCHAR))) - fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OWNER; + fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER; else if (supHardViUniStrPathStartsWithUniStr(&uBuf.UniStr, &g_ProgramFilesNtPath.UniStr, true /*fCheckSlash*/)) - fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OWNER; + fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER; else if (supHardViUniStrPathStartsWithUniStr(&uBuf.UniStr, &g_CommonFilesNtPath.UniStr, true /*fCheckSlash*/)) - fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OWNER; + fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER; # ifdef RT_ARCH_AMD64 else if (supHardViUniStrPathStartsWithUniStr(&uBuf.UniStr, &g_ProgramFilesX86NtPath.UniStr, true /*fCheckSlash*/)) - fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OWNER; + fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER; else if (supHardViUniStrPathStartsWithUniStr(&uBuf.UniStr, &g_CommonFilesX86NtPath.UniStr, true /*fCheckSlash*/)) - fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OWNER; + fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER; # endif # endif # ifdef VBOX_PERMIT_VISUAL_STUDIO_PROFILING @@ -1531,14 +1544,27 @@ supR3HardenedScreenImage(HANDLE hFile, bool fImage, bool fIgnoreArch, PULONG pfA #else /* VBOX_PERMIT_EVEN_MORE */ /* * Require trusted installer + some kind of signature on everything, except - * for the VBox bits where we require kernel code signing and special - * integrity checks. + * for the VBox bits where we have extra requirements depending on the signing + * certificate used: + * - regular code signing cert: build cert code signing, owner TrustedInstaller/Administrators/LocalSystem. + * - kernel code signing cert: kernel code signing and integrity checks. */ uint32_t fFlags = 0; if (supHardViUniStrPathStartsWithUniStr(&uBuf.UniStr, &g_SupLibHardenedAppBinNtPath.UniStr, true /*fCheckSlash*/)) +# ifdef VBOX_WITHOUT_WINDOWS_KERNEL_CODE_SIGNING_CERT + /** @todo r=bird: Since extension packs are installed under + * g_SupLibHardenedAppBinNtPath and I'm pretty sure that everything loaded into + * a VBox VM process goes thru this validation step at DLL load time, this means + * only we can now sign extension packs. + * + * I suspect we have to relax the signing restrictions on the ExtensionPacks + * subdirectory to keep 3rd party extensions working. */ + fFlags |= SUPHNTVI_F_REQUIRE_BUILD_CERT | SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER; +# else fFlags |= SUPHNTVI_F_REQUIRE_KERNEL_CODE_SIGNING | SUPHNTVI_F_REQUIRE_SIGNATURE_ENFORCEMENT; +# endif else - fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OWNER; + fFlags |= SUPHNTVI_F_ALLOW_CAT_FILE_VERIFICATION | SUPHNTVI_F_TRUSTED_INSTALLER_OR_SIMILAR_OWNER; #endif /* VBOX_PERMIT_EVEN_MORE */ /* diff --git a/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetFltRt-win.cpp b/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetFltRt-win.cpp index 5913697b..d6ed6bb1 100644 --- a/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetFltRt-win.cpp +++ b/src/VBox/HostDrivers/VBoxNetFlt/win/drv/VBoxNetFltRt-win.cpp @@ -1134,17 +1134,16 @@ DECLHIDDEN(void) vboxNetFltWinQuFiniPacketQueue(PVBOXNETFLTINS pInstance) */ DECLHIDDEN(NDIS_STATUS) vboxNetFltWinAllocSG(UINT cbPacket, PINTNETSG *ppSG) { - NDIS_STATUS Status; - PINTNETSG pSG; - /* allocation: * 1. SG_PACKET - with one aSegs pointing to * 2. buffer of cbPacket containing the entire packet */ AssertCompileSizeAlignment(INTNETSG, sizeof(PVOID)); - Status = vboxNetFltWinMemAlloc((PVOID*)&pSG, cbPacket + RT_UOFFSETOF_DYN(INTNETSG, aSegs[1])); + PINTNETSG pSG = NULL; + UINT const cbSg = RT_UOFFSETOF_DYN(INTNETSG, aSegs[1]); + NDIS_STATUS Status = vboxNetFltWinMemAlloc((PVOID *)&pSG, cbSg + cbPacket); if (Status == NDIS_STATUS_SUCCESS) { - IntNetSgInitTemp(pSG, pSG + 1, cbPacket); + IntNetSgInitTemp(pSG, (uint8_t *)pSG + cbSg, cbPacket); LogFlow(("pSG created (%p)\n", pSG)); *ppSG = pSG; } diff --git a/src/VBox/Installer/linux/distributions_rpm b/src/VBox/Installer/linux/distributions_rpm index cb33dbd0..cded6168 100644 --- a/src/VBox/Installer/linux/distributions_rpm +++ b/src/VBox/Installer/linux/distributions_rpm @@ -2,6 +2,7 @@ openSUSETW = OPENSUSE_TW openSUSE155 = OPENSUSE_15_5 openSUSE154 = OPENSUSE_15_4 openSUSE153 = OPENSUSE_15_3 +fedora40 = FEDORA_40 fedora38 = FEDORA_38 fedora37 = FEDORA_37 fedora36 = FEDORA_36 diff --git a/src/VBox/Installer/linux/rpm/rules b/src/VBox/Installer/linux/rpm/rules index 21cf35ea..023fbf09 100755 --- a/src/VBox/Installer/linux/rpm/rules +++ b/src/VBox/Installer/linux/rpm/rules @@ -124,7 +124,7 @@ ifneq ($(MAKECMDGOALS),clean) $(error Cannot detect package distribution (rpmrel=$(rpmrel))) endif - ifeq ($(filter-out el5 el6 el7 el8 el9 fedora18 fedora19 fedora20 fedora21 fedora22 fedora24 fedora25 fedora26 fedora29 fedora31 fedora32 fedora33 fedora35 fedora36,$(rpmrel)),) + ifeq ($(filter-out el5 el6 el7 el8 el9 fedora18 fedora19 fedora20 fedora21 fedora22 fedora24 fedora25 fedora26 fedora29 fedora31 fedora32 fedora33 fedora35 fedora36 fedora40,$(rpmrel)),) rpmspec := rpm_redhat endif ifeq ($(filter-out openSUSE110 openSUSE111 openSUSE112 openSUSE113 openSUSE114 openSUSE123 openSUSE131 openSUSE132 openSUSE150 openSUSE153 openSUSETW,$(rpmrel)),) diff --git a/src/VBox/Installer/win/Makefile.kmk b/src/VBox/Installer/win/Makefile.kmk index 4b91b460..962f3966 100644 --- a/src/VBox/Installer/win/Makefile.kmk +++ b/src/VBox/Installer/win/Makefile.kmk @@ -595,7 +595,7 @@ endef ifdef VBOX_WITH_MSM_INSTALL $(foreach module,$(VBOX_INSTALLER_MERGE_MODULES), \ $(foreach lang,$(VBOX_INSTALLER_MERGE_LANGUAGES), \ - $(eval $(def_vbox_link_msm)))),) + $(eval $(def_vbox_link_msm)))) endif @@ -1215,12 +1215,12 @@ else $(QUIET)$(RM) -f -- $(wildcard $(subst r$(VBOX_SVN_REV),r*, \ $@ \ $(VBOX_WIN_INST_REPACK_DIR)/4-multiarch-$(PACKAGE_NAME_MULTIARCH_FINAL).cmd ) ) - $(REDIRECT) -C $(@D) -- \ + $(REDIRECT) -C "$(@D)" -- \ $(VBoxStubBld_1_TARGET) -out $@ \ -target-$(KBUILD_TARGET_ARCH) $(PACKAGE_NAME_FINAL) \ -stub $(PATH_STAGE_BIN)/VBoxStub.exe $(VBOX_VCC_EDITBIN) /IntegrityCheck:NO $@ - $(call VBOX_SIGN_FILE_FN,$@) + $(call VBOX_SIGN_FILE_FN,$@,,,,,,timed) # Create repack script for this step. $(APPEND) -nt "$(VBOX_WIN_INST_REPACK_DIR)/4-multiarch-$(@F).cmd" \ 'if ".%KBUILD_DEVTOOLS%" == "." (echo KBUILD_DEVTOOLS is not set & exit /b1)' \ @@ -1238,27 +1238,31 @@ else echo "Repacking HERE" $(RM) -f $(VBOX_WIN_INST_REPACK_DIR)/*.ddf cd $(PATH_OUT)/repack && $(RM) -f *.ddf - $(RM) -f $(VBOX_WIN_INST_REPACK_DIR)/$(PACKAGE_NAME_LANG)-$(KBUILD_TARGET_ARCH).cab - $(RM) -f $(VBOX_WIN_INST_REPACK_DIR)/PackDriversForSubmission_internal.cmd + $(RM) -f -- \ + "$(VBOX_WIN_INST_REPACK_DIR)/$(PACKAGE_NAME_LANG)-$(KBUILD_TARGET_ARCH).cab" \ + "$(VBOX_WIN_INST_REPACK_DIR)/$(PACKAGE_NAME_LANG)-$(KBUILD_TARGET_ARCH).cab.ddf" \ + "$(VBOX_WIN_INST_REPACK_DIR)/PackDriversForSubmission_internal.cmd" + cd $(VBOX_WIN_INST_REPACK_DIR) && ls -la $(APPEND) -nt "$(VBOX_WIN_INST_REPACK_DIR)/PackDriversForSubmission_internal.cmd" \ - "SET KBUILD_BIN_PATH=$(KBUILD_BIN_PATH)" \ - "call PackDriversForSubmission.cmd -b $(PATH_STAGE_BIN) -a $(KBUILD_TARGET_ARCH) \ + "SET KBUILD_BIN_PATH=$(KBUILD_BIN_PATH)" \ + "call PackDriversForSubmission.cmd -b $(PATH_STAGE_BIN) -a $(KBUILD_TARGET_ARCH) \ -x -n --no-extpack -o $(VBOX_WIN_INST_REPACK_DIR)/$(PACKAGE_NAME_LANG)-$(KBUILD_TARGET_ARCH).cab" - cd $(VBOX_WIN_INST_REPACK_DIR) && $(EXEC_X86_WIN32) cmd.exe /c PackDriversForSubmission_internal.cmd - cd $(VBOX_WIN_INST_REPACK_DIR) && $(VBOX_RETRY) $(VBOX_WIN_ATTESTATION_SIGNING_EXE) "Oracle VM VirtualBox Base drivers $(KBUILD_TARGET_ARCH) $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD)r$(VBOX_SVN_REV)" "$(KBUILD_TARGET_ARCH)" "r$(VBOX_SVN_REV)" "$(PACKAGE_NAME_LANG)-$(KBUILD_TARGET_ARCH).cab" + $(TIME_EXT) $(REDIRECT_EXT) -C "$(VBOX_WIN_INST_REPACK_DIR)" -- $(EXEC_X86_WIN32) cmd.exe /c PackDriversForSubmission_internal.cmd + $(TIME_EXT) $(REDIRECT_EXT) -C "$(VBOX_WIN_INST_REPACK_DIR)" -- $(VBOX_RETRY) $(VBOX_WIN_ATTESTATION_SIGNING_EXE) "Oracle VM VirtualBox Base drivers $(KBUILD_TARGET_ARCH) $(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD)r$(VBOX_SVN_REV)" "$(KBUILD_TARGET_ARCH)" "r$(VBOX_SVN_REV)" "$(PACKAGE_NAME_LANG)-$(KBUILD_TARGET_ARCH).cab" - $(RM) -f $(VBOX_WIN_INST_REPACK_DIR)/Single-3-Repack_internal.cmd + $(RM) -f -- "$(VBOX_WIN_INST_REPACK_DIR)/Single-3-Repack_internal.cmd" $(APPEND) -nt "$(VBOX_WIN_INST_REPACK_DIR)/Single-3-Repack_internal.cmd" \ - "SET KBUILD_BIN_PATH=$(KBUILD_BIN_PATH)" \ - "SET KBUILD_DEVTOOLS=$(KBUILD_DEVTOOLS)" \ - "call Single-3-Repack.cmd --no-extpack --signed "$(PACKAGE_NAME_LANG)-$(KBUILD_TARGET_ARCH).cab.Signed.zip" - cd $(VBOX_WIN_INST_REPACK_DIR) && $(EXEC_X86_WIN32) cmd.exe /c Single-3-Repack_internal.cmd - - $(RM) -f $(PATH_STAGE_BIN)/$(PACKAGE_NAME_MULTIARCH_FINAL) - $(RM) -f $(PATH_STAGE_BIN)/$(PACKAGE_NAME_LANG).msi - $(CP) $(VBOX_WIN_INST_REPACK_DIR)/$(PACKAGE_NAME_MULTIARCH_FINAL) $(PATH_STAGE_BIN)/ - $(CP) $(VBOX_WIN_INST_REPACK_DIR)/$(PACKAGE_NAME_LANG).msi $(PATH_STAGE_BIN)/ + "SET KBUILD_BIN_PATH=$(KBUILD_BIN_PATH)" \ + "SET KBUILD_DEVTOOLS=$(KBUILD_DEVTOOLS)" \ + "call Single-3-Repack.cmd --no-extpack --signed "$(PACKAGE_NAME_LANG)-$(KBUILD_TARGET_ARCH).cab.Signed.zip" + $(TIME_EXT) $(REDIRECT_EXT) -C "$(VBOX_WIN_INST_REPACK_DIR)" -- $(EXEC_X86_WIN32) cmd.exe /c Single-3-Repack_internal.cmd + + $(RM) -f -- \ + "$(PATH_STAGE_BIN)/$(PACKAGE_NAME_MULTIARCH_FINAL)" \ + "$(PATH_STAGE_BIN)/$(PACKAGE_NAME_LANG).msi" + $(CP) -- "$(VBOX_WIN_INST_REPACK_DIR)/$(PACKAGE_NAME_MULTIARCH_FINAL)" "$(PATH_STAGE_BIN)/" + $(CP) -- "$(VBOX_WIN_INST_REPACK_DIR)/$(PACKAGE_NAME_LANG).msi" "$(PATH_STAGE_BIN)/" endif endif diff --git a/src/VBox/Installer/win/NLS/de_DE.wxl b/src/VBox/Installer/win/NLS/de_DE.wxl index d4b004f1..e177e190 100644 --- a/src/VBox/Installer/win/NLS/de_DE.wxl +++ b/src/VBox/Installer/win/NLS/de_DE.wxl @@ -74,7 +74,7 @@ <String Id="Only64Bit">Diese Applikation läuft nur auf 64-bit Windows-Systemen. Bitte installieren Sie die 32-bit Version von [ProductName]!</String> <String Id="SunFound">Eine alte Sun Version von VirtualBox wurde auf diesem Computer gefunden. Bitte deinstallieren Sie diese Version zuerst. Danach können Sie [ProductName] installieren!</String> <String Id="InnotekFound">Eine alte innotek Version von VirtualBox wurde auf diesem Computer gefunden. Bitte deinstallieren Sie diese Version zuerst. Danach können Sie [ProductName] installieren!</String> - <String Id="InvalidTargetDir">Ungültiges Installationsverzeichnis angegeben. Bitte ein anderes Installationsverzeichnis wählen, um [ProductName] zu installieren.</String> + <String Id="InvalidTargetDir">Ungültiges Installationsverzeichnis angegeben. Bitte ein anderes Installationsverzeichnis wählen, um [ProductName] zu installieren. Für mehr Informationen bitte im [ProductName] Handbuch nachschlagen.</String> <!----> @@ -94,7 +94,7 @@ <!----> <String Id="InvalidTargetDirDlg_Header">Ungültiges Installationsverzeichnis</String> - <String Id="InvalidTargetDirDlg_Desc1">Das gewählte Installationsverzeichnis is ungültig, da dieses nicht den Sicherheitsrichtlinien entspricht.</String> + <String Id="InvalidTargetDirDlg_Desc1">Das gewählte Installationsverzeichnis is ungültig, da dieses nicht den Sicherheitsrichtlinien entspricht. Für mehr Informationen bitte im [ProductName] Handbuch nachschlagen.</String> <String Id="InvalidTargetDirDlg_Desc2">Bitte ein anderes Installationsverzeichnis wählen um [ProductName] zu installieren.</String> <!----> diff --git a/src/VBox/Installer/win/NLS/el_GR.wxl b/src/VBox/Installer/win/NLS/el_GR.wxl index 071a61e0..fb40cf55 100644 --- a/src/VBox/Installer/win/NLS/el_GR.wxl +++ b/src/VBox/Installer/win/NLS/el_GR.wxl @@ -74,7 +74,7 @@ <String Id="Only64Bit">Αυτή η εφαρμογή τρέχει μόνο σε συστήματα Windows 64 bit. Εγκαταστήστε την έκδοση 32-bit του [ProductName]!</String> <String Id="SunFound">Βρέθηκε μία παλιότερη εγκατάσταση του Sun VirtualBox στον υπολογιστή. Καταργήστε πρώτα την εγκατάσταση αυτού του πακέτου και μετά εγκαταστήστε το [ProductName]!</String> <String Id="InnotekFound">Βρέθηκε μία παλιότερη εγκατάσταση του innotek VirtualBox στον υπολογιστή. Καταργήστε πρώτα την εγκατάσταση αυτού του πακέτου και μετά εγκαταστήστε το [ProductName]!</String> - <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName].</String> + <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName]. Refer to the [ProductName] manual for more information.</String> <!----> @@ -95,7 +95,7 @@ <!----> <String Id="InvalidTargetDirDlg_Header">Invalid installation directory</String> - <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements.</String> + <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements. Refer to the [ProductName] manual for more information.</String> <String Id="InvalidTargetDirDlg_Desc2">Please choose another directory for installing [ProductName].</String> <!----> diff --git a/src/VBox/Installer/win/NLS/en_US.wxl b/src/VBox/Installer/win/NLS/en_US.wxl index 3eac3530..532e6067 100644 --- a/src/VBox/Installer/win/NLS/en_US.wxl +++ b/src/VBox/Installer/win/NLS/en_US.wxl @@ -74,7 +74,7 @@ <String Id="Only64Bit">This application only runs on 64-bit Windows systems. Please install the 32-bit version of [ProductName]!</String> <String Id="SunFound">An old Sun VirtualBox installation has been found on this machine. Please uninstall this package first and then install [ProductName]!</String> <String Id="InnotekFound">An old innotek VirtualBox installation has been found on this machine. Please uninstall this package first and then install [ProductName]!</String> - <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName].</String> + <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName]. Refer to the [ProductName] manual for more information.</String> <!----> @@ -95,7 +95,7 @@ <!----> <String Id="InvalidTargetDirDlg_Header">Invalid installation directory</String> - <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements.</String> + <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements. Refer to the [ProductName] manual for more information.</String> <String Id="InvalidTargetDirDlg_Desc2">Please choose another directory for installing [ProductName].</String> <!----> diff --git a/src/VBox/Installer/win/NLS/fa_IR.wxl b/src/VBox/Installer/win/NLS/fa_IR.wxl index 1eeedf8a..21e65775 100644 --- a/src/VBox/Installer/win/NLS/fa_IR.wxl +++ b/src/VBox/Installer/win/NLS/fa_IR.wxl @@ -67,7 +67,7 @@ <String Id="Only64Bit">این برنامه فقط روی ویندوز 64 بیتی اِجرا میشود. لطفا نسخه 32 بیتی [ProductName] را نصب کنید!</String> <String Id="SunFound">یک نصب قدیمی ویرچوال باکس روی این رایانه یافت شد. لطفا اول این بسته را حذف سپس [ProductName] را نصب کنید!</String> <String Id="InnotekFound">یک نسخه قدیمی نصب ویرچوال باکس در این ماشین یافت شد. لطفا اول این بسته را حذف و سپس [ProductName] را نصب کنید!</String> - <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName].</String> + <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName]. Refer to the [ProductName] manual for more information.</String> <!----> <String Id="CancelDlg_Question">آیا میخواهید نصب [ProductName] را لغو کنید؟</String> <!----> @@ -80,7 +80,7 @@ <String Id="LicenseAgreementDlg_Decline">&من ضوابط را در توافقنامه مجوز نمی پذیرم</String> <!----> <String Id="InvalidTargetDirDlg_Header">Invalid installation directory</String> - <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements.</String> + <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements. Refer to the [ProductName] manual for more information.</String> <String Id="InvalidTargetDirDlg_Desc2">Please choose another directory for installing [ProductName].</String> <!----> <String Id="CheckSerialDlg_Header">شماره سریال</String> diff --git a/src/VBox/Installer/win/NLS/fr_FR.wxl b/src/VBox/Installer/win/NLS/fr_FR.wxl index 2624925b..efdeb242 100644 --- a/src/VBox/Installer/win/NLS/fr_FR.wxl +++ b/src/VBox/Installer/win/NLS/fr_FR.wxl @@ -73,7 +73,7 @@ <String Id="Only32Bit">Cette application ne marche que sur des systèmes Windows 32-bit. Veuillez installer la version 64-bit de [ProductName]!</String> <String Id="Only64Bit">Cette application ne marche que sur des systèmes Windows 64-bit. Veuillez installer la version 32-bit de [ProductName]!</String> <String Id="InnotekFound">Vous avez une ancienne installation de innotek VirtualBox sur cette machine. Il vous faudra la désinstaller avant de pouvoir installer [ProductName].</String> - <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName].</String> + <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName]. Refer to the [ProductName] manual for more information.</String> <!----> @@ -94,7 +94,7 @@ <!----> <String Id="InvalidTargetDirDlg_Header">Invalid installation directory</String> - <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements.</String> + <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements. Refer to the [ProductName] manual for more information.</String> <String Id="InvalidTargetDirDlg_Desc2">Please choose another directory for installing [ProductName].</String> <!----> diff --git a/src/VBox/Installer/win/NLS/it_IT.wxl b/src/VBox/Installer/win/NLS/it_IT.wxl index ef0b25d5..47754d9a 100644 --- a/src/VBox/Installer/win/NLS/it_IT.wxl +++ b/src/VBox/Installer/win/NLS/it_IT.wxl @@ -67,7 +67,7 @@ <String Id="Only64Bit">Questa applicazione può essere eseguita solo su sistemi Windows a 64 bit. Installa la versione a 32 bit di [ProductName]!</String> <String Id="SunFound">Una vecchia installazione di Sun VirtualBox è stata trovata su questa macchina. Disinstalla prima questo pacchetto e poi installa [ProductName]!</String> <String Id="InnotekFound">Una vecchia installazione di innotek VirtualBox è stata trovata su questa macchina. Disinstalla prima questo pacchetto e poi installa [ProductName]!</String> - <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName].</String> + <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName]. Refer to the [ProductName] manual for more information.</String> <!----> <String Id="CancelDlg_Question">Sei sicuro di voler annullare l'installazione di [ProductName]?</String> <!----> @@ -80,7 +80,7 @@ <String Id="LicenseAgreementDlg_Decline">&Non accetto i termini dell'accordo di licenza</String> <!----> <String Id="InvalidTargetDirDlg_Header">Invalid installation directory</String> - <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements.</String> + <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements. Refer to the [ProductName] manual for more information.</String> <String Id="InvalidTargetDirDlg_Desc2">Please choose another directory for installing [ProductName].</String> <!----> <String Id="CheckSerialDlg_Header">Numero di serie</String> diff --git a/src/VBox/Installer/win/NLS/ru_RU.wxl b/src/VBox/Installer/win/NLS/ru_RU.wxl index 3eac3530..532e6067 100644 --- a/src/VBox/Installer/win/NLS/ru_RU.wxl +++ b/src/VBox/Installer/win/NLS/ru_RU.wxl @@ -74,7 +74,7 @@ <String Id="Only64Bit">This application only runs on 64-bit Windows systems. Please install the 32-bit version of [ProductName]!</String> <String Id="SunFound">An old Sun VirtualBox installation has been found on this machine. Please uninstall this package first and then install [ProductName]!</String> <String Id="InnotekFound">An old innotek VirtualBox installation has been found on this machine. Please uninstall this package first and then install [ProductName]!</String> - <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName].</String> + <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName]. Refer to the [ProductName] manual for more information.</String> <!----> @@ -95,7 +95,7 @@ <!----> <String Id="InvalidTargetDirDlg_Header">Invalid installation directory</String> - <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements.</String> + <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements. Refer to the [ProductName] manual for more information.</String> <String Id="InvalidTargetDirDlg_Desc2">Please choose another directory for installing [ProductName].</String> <!----> diff --git a/src/VBox/Installer/win/NLS/tr_TR.wxl b/src/VBox/Installer/win/NLS/tr_TR.wxl index ff7a3b89..185199f3 100644 --- a/src/VBox/Installer/win/NLS/tr_TR.wxl +++ b/src/VBox/Installer/win/NLS/tr_TR.wxl @@ -74,7 +74,7 @@ <String Id="Only64Bit">Bu uygulama yalnızca 64-bit Windows sistemlerinde çalışır. Lütfen [ProductName] 32-bit sürümünü yükleyin!</String> <String Id="SunFound">Bu makinede eski bir Sun VirtualBox kurulumu bulundu. Lütfen önce bu paketi kaldırın ve sonra [ProductName] yükleyin!</String> <String Id="InnotekFound">Bu makinede eski bir innotek VirtualBox kurulumu bulundu. Lütfen önce bu paketi kaldırın ve sonra [ProductName] yükleyin!</String> - <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName].</String> + <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName]. Refer to the [ProductName] manual for more information.</String> <!----> @@ -95,7 +95,7 @@ <!----> <String Id="InvalidTargetDirDlg_Header">Invalid installation directory</String> - <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements.</String> + <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements. Refer to the [ProductName] manual for more information.</String> <String Id="InvalidTargetDirDlg_Desc2">Please choose another directory for installing [ProductName].</String> <!----> diff --git a/src/VBox/Installer/win/NLS/zh_CN.wxl b/src/VBox/Installer/win/NLS/zh_CN.wxl index 2d57834a..c4b157d2 100644 --- a/src/VBox/Installer/win/NLS/zh_CN.wxl +++ b/src/VBox/Installer/win/NLS/zh_CN.wxl @@ -74,7 +74,7 @@ <String Id="Only64Bit">此应用程序只能运行在 64 位 Windows 系统。 请安装 [ProductName] 的 32 位版本!</String> <String Id="SunFound">在此计算机发现旧的 Sun VirtualBox 安装。 请先卸载此组件然后安装 [ProductName]!</String> <String Id="InnotekFound">在此计算机发现旧的 innotek VirtualBox 安装。 请先卸载此组件然后安装 [ProductName]!</String> -<String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName].</String> +<String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName]. Refer to the [ProductName] manual for more information.</String> <!----> @@ -95,7 +95,7 @@ <!----> <String Id="InvalidTargetDirDlg_Header">Invalid installation directory</String> -<String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements.</String> +<String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements. Refer to the [ProductName] manual for more information.</String> <String Id="InvalidTargetDirDlg_Desc2">Please choose another directory for installing [ProductName].</String> <!----> diff --git a/src/VBox/Installer/win/NLS/zh_TW.wxl b/src/VBox/Installer/win/NLS/zh_TW.wxl index c30e8113..952e1ebe 100644 --- a/src/VBox/Installer/win/NLS/zh_TW.wxl +++ b/src/VBox/Installer/win/NLS/zh_TW.wxl @@ -74,7 +74,7 @@ <String Id="Only64Bit">此應用程式只能執行在 64 位元的 Windows 系統。 請安裝 [ProductName] 的 32 位元版本!</String> <String Id="SunFound">在此電腦發現舊的 Sun VirtualBox 安裝。 請先解除安裝此套件然後安裝 [ProductName]!</String> <String Id="InnotekFound">在此電腦發現舊的 innotek VirtualBox 安裝。 請先解除安裝此套件然後安裝 [ProductName]!</String> - <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName].</String> + <String Id="InvalidTargetDir">Invalid installation directory specified! Please use another installation directory to install [ProductName]. Refer to the [ProductName] manual for more information.</String> <!----> @@ -95,7 +95,7 @@ <!----> <String Id="InvalidTargetDirDlg_Header">Invalid installation directory</String> - <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements.</String> + <String Id="InvalidTargetDirDlg_Desc1">The chosen installation directory is invalid, as it does not meet the security requirements. Refer to the [ProductName] manual for more information.</String> <String Id="InvalidTargetDirDlg_Desc2">Please choose another directory for installing [ProductName].</String> <!----> diff --git a/src/VBox/Installer/win/Stub/Makefile.kmk b/src/VBox/Installer/win/Stub/Makefile.kmk index 1bf99706..13c21c67 100644 --- a/src/VBox/Installer/win/Stub/Makefile.kmk +++ b/src/VBox/Installer/win/Stub/Makefile.kmk @@ -88,7 +88,7 @@ ifdef VBOX_SIGNING_MODE $(VBOX_BIN2C) -ascii --append VBoxStubTrustedCert1 "$@.cer1" $@ $(APPEND) "$@.array" " { g_abVBoxStubTrustedCert1, sizeof(g_abVBoxStubTrustedCert1) }, " endif - if $(intersects win_planb,$(VBOX_WITH_CORP_CODE_SIGNING)) + if !$(intersects win,$(VBOX_WITH_CORP_CODE_SIGNING)) && $(intersects win_planb,$(VBOX_WITH_CORP_CODE_SIGNING)) $(VBOX_RTSIGNTOOL) extract-exe-signer-cert --signature-index 1 --exe "$(VBOX_RTSIGNTOOL)" --output "$@.cer2" --der $(VBOX_BIN2C) -ascii --append VBoxStubTrustedCert2 "$@.cer2" $@ $(APPEND) "$@.array" " { g_abVBoxStubTrustedCert2, sizeof(g_abVBoxStubTrustedCert2) }, " diff --git a/src/VBox/Installer/win/UserInterface.wxi b/src/VBox/Installer/win/UserInterface.wxi index c3bbab13..cd4c2660 100644 --- a/src/VBox/Installer/win/UserInterface.wxi +++ b/src/VBox/Installer/win/UserInterface.wxi @@ -222,7 +222,7 @@ <Text>!(loc.InvalidTargetDirDlg_Desc1)</Text> </Control> - <Control Id="Description2" Type="Text" X="135" Y="95" Width="220" Height="130" Transparent="yes" NoPrefix="yes"> + <Control Id="Description2" Type="Text" X="135" Y="105" Width="220" Height="130" Transparent="yes" NoPrefix="yes"> <Text>!(loc.InvalidTargetDirDlg_Desc2)</Text> </Control> diff --git a/src/VBox/Installer/win/VirtualBox.wxs b/src/VBox/Installer/win/VirtualBox.wxs index beccd815..f9d2f95d 100644 --- a/src/VBox/Installer/win/VirtualBox.wxs +++ b/src/VBox/Installer/win/VirtualBox.wxs @@ -277,8 +277,8 @@ <CustomAction Id="ca_UninstallBranding" BinaryKey="VBoxInstallHelper" DllEntry="UninstallBranding" Execute="deferred" Return="check" Impersonate="no"/> <CustomAction Id="ca_UninstallBrandingArgs" Property="ca_UninstallBranding" Value="[INSTALLDIR]" Execute="immediate"/> -<?if $(env.VBOX_WITH_MSM_INSTALL) = "no" ?> <?include VBoxMergeAppCA.wxi ?> +<?if $(env.VBOX_WITH_MSM_INSTALL) = "no" ?> <?if $(env.VBOX_WITH_32_ON_64_MAIN_API) = "yes" ?> <?include VBoxMergeCOM32On64CA.wxi ?> <?endif ?> diff --git a/src/VBox/Main/webservice/websrv-python.xsl b/src/VBox/Main/webservice/websrv-python.xsl index c49677b5..c49677b5 100755..100644 --- a/src/VBox/Main/webservice/websrv-python.xsl +++ b/src/VBox/Main/webservice/websrv-python.xsl diff --git a/src/VBox/Runtime/r3/ftp-server.cpp b/src/VBox/Runtime/r3/ftp-server.cpp index 425aad03..7a6814fc 100644 --- a/src/VBox/Runtime/r3/ftp-server.cpp +++ b/src/VBox/Runtime/r3/ftp-server.cpp @@ -2269,7 +2269,7 @@ static int rtFtpServerCmdArgsParse(const char *pszCmdParms, uint8_t *pcArgs, cha int rc = RTGetOptArgvFromString(ppapszArgs, &cArgs, pszCmdParms, RTGETOPTARGV_CNV_QUOTE_MS_CRT, " " /* Separators */); if (RT_SUCCESS(rc)) { - if (cArgs <= UINT8_MAX) + if ((unsigned int)cArgs <= (unsigned int)UINT8_MAX) { *pcArgs = (uint8_t)cArgs; } diff --git a/src/VBox/VMM/testcase/Instructions/itgTableDaa.py b/src/VBox/VMM/testcase/Instructions/itgTableDaa.py index 2606d99b..2606d99b 100755..100644 --- a/src/VBox/VMM/testcase/Instructions/itgTableDaa.py +++ b/src/VBox/VMM/testcase/Instructions/itgTableDaa.py diff --git a/src/VBox/VMM/testcase/Instructions/itgTableDas.py b/src/VBox/VMM/testcase/Instructions/itgTableDas.py index 96557cfd..96557cfd 100755..100644 --- a/src/VBox/VMM/testcase/Instructions/itgTableDas.py +++ b/src/VBox/VMM/testcase/Instructions/itgTableDas.py diff --git a/src/VBox/ValidationKit/common/pathutils.py b/src/VBox/ValidationKit/common/pathutils.py index 6787f1aa..6787f1aa 100755..100644 --- a/src/VBox/ValidationKit/common/pathutils.py +++ b/src/VBox/ValidationKit/common/pathutils.py diff --git a/src/VBox/ValidationKit/testmanager/config.py b/src/VBox/ValidationKit/testmanager/config.py index b4ef94cc..b4ef94cc 100755..100644 --- a/src/VBox/ValidationKit/testmanager/config.py +++ b/src/VBox/ValidationKit/testmanager/config.py diff --git a/src/VBox/ValidationKit/testmanager/core/schedqueue.py b/src/VBox/ValidationKit/testmanager/core/schedqueue.py index f49c4ad3..f49c4ad3 100644..100755 --- a/src/VBox/ValidationKit/testmanager/core/schedqueue.py +++ b/src/VBox/ValidationKit/testmanager/core/schedqueue.py diff --git a/src/VBox/ValidationKit/testmanager/webui/wuivcshistory.py b/src/VBox/ValidationKit/testmanager/webui/wuivcshistory.py index 1df9bbb2..1df9bbb2 100644..100755 --- a/src/VBox/ValidationKit/testmanager/webui/wuivcshistory.py +++ b/src/VBox/ValidationKit/testmanager/webui/wuivcshistory.py diff --git a/src/VBox/ValidationKit/tests/serial/loopback.py b/src/VBox/ValidationKit/tests/serial/loopback.py index b5ad831a..b5ad831a 100644..100755 --- a/src/VBox/ValidationKit/tests/serial/loopback.py +++ b/src/VBox/ValidationKit/tests/serial/loopback.py diff --git a/src/libs/xpcom18a4/nsprpub/config/Makefile.in b/src/libs/xpcom18a4/nsprpub/config/Makefile.in index 1b83ffa5..1b83ffa5 100644..100755 --- a/src/libs/xpcom18a4/nsprpub/config/Makefile.in +++ b/src/libs/xpcom18a4/nsprpub/config/Makefile.in diff --git a/src/libs/xpcom18a4/python/test/regrtest.py b/src/libs/xpcom18a4/python/test/regrtest.py index 90d07948..90d07948 100755..100644 --- a/src/libs/xpcom18a4/python/test/regrtest.py +++ b/src/libs/xpcom18a4/python/test/regrtest.py |