PVS-Studio_Cmd.exe utility for the MSBuild project analysis can now save the project analysis configuration in the JSON analyzer report. The fullhtml report format now allows grouping analyzer messages by analysis configuration when an HTML report is generated using the PlogConverter.exe. Learn more about other report formats in the documentation.max-old-space-size setting has been added to the pvs-settings.toml configuration file and to the pvs-js command-line utility. The setting limits the amount of memory used by the analyzer's Node.js server.PVS-Studio_Cmd.exe command-line utility now supports resolving dependency cache paths relative to the .pvsconfig configuration file. Learn more about the update in the documentation.default branches and small enum types, specifying individual values to ignore, and setting the maximum number of constants that can be ignored.100 if Visual Studio plugin installation fails. The /skipVSIXInstallErrorCode flag was added to suppress the non-zero return code in this case.install.sh installation script found in the pvs-studio and pvs-studio-dotnet .tar archives for Linux/macOS. A detailed description of the vulnerability and instructions for the fix are provided at the end of this section.x86_64-pc-linux-gnu-c++) on Linux. Support has also been added for the TI C2000-CGT compiler in the compilation monitoring and compilation trace modes.sourceSets.//V_USE_OLD_PARSER flag in the .pvsconfig file is now ignored. The new C++ parser has advanced enough to be recommended as the default for all analyzed projects. It now applies by default to projects using older Unreal Engine versions as well, regardless of whether the engine source code still contains the //V_USE_OLD_PARSER flag.The install.sh installation script from the pvs-studio and pvs-studio-dotnet .tar archives on Linux/macOS could unintentionally preserve the owner, group, and security context of files when installing PVS-Studio components into system directories.
This could result in the owner, group, and security attributes of system directories and installed components being changed to values corresponding to the user who performed the installation. On systems with SELinux running in enforcing mode, this could also result in incorrect SELinux contexts being set and potentially affect system operation after a reboot.
This vulnerability existed in PVS-Studio versions starting with 7.25 and ending with 7.43, inclusive.
Installations using other distribution methods are not affected by this issue.
We fixed the installation script so that file ownership and security attributes of the source files are not preserved when copying files. The fixed script is included in updated pvs-studio and pvs-studio-dotnet packages starting with version 8.00.
If you previously installed an affected archive, you should check the owners, groups, and security contexts of the affected directories and files. To restore the correct owner and group of system directories, it is recommended to use the values standard for your operating system rather than the owner and group specified in the archive or installation directory.
To obtain a list of all PVS-Studio components installed on the system, as well as subdirectories whose permissions may have been changed as a result of the installation, you can use the script included at the end of this letter. Running it on a system with PVS-Studio installed will output the paths to all components and their subdirectories whose permissions may need to be changed. When the script is run without arguments, it outputs paths relative to the standard installation prefix (/usr on Linux and /usr/local on macOS). If you used an installation prefix other than the default one, you should pass it as the only argument when running the script.
To obtain the paths affected by the vulnerability, simply run the attached script in a terminal:
./find_pvs_paths.sh
You can change the permissions/ownership of the affected components and subdirectories using the following command:
./find_pvs_paths.sh | tee /dev/stderr | \
sudo xargs -r -d '\n' -t chown <user>:<group>
Here, <user>:<group> should be replaced with the user and group that are standard for the specified installation prefix. On most Linux systems, the system directories /usr/bin, /usr/lib, and /usr/share are owned by root:root.
On Linux with SELinux, you can use the following command to restore the standard security contexts:
./find_pvs_paths.sh | tee /dev/stderr | \
sudo xargs -r -d '\n' -t restorecon -Fv
Important: this command should only be run if these directories were actually affected by the PVS-Studio installation. If the system uses a non-standard SELinux configuration, it is recommended to consult the system administrator before running the command.
Script for outputting the paths affected when installing PVS-Studio via a tar archive:
#!/usr/bin/env bash
if [ -n "$1" ]; then
PREFIX="$1"
elif [ -z "$PREFIX" ]; then
case "$OSTYPE" in
darwin*) PREFIX=/usr/local ;;
*) PREFIX=/usr ;;
esac
fi
PREFIX=$(realpath "$PREFIX")
find "$PREFIX" \
-path '*/node_modules/*' -prune -o \
\( \
-name 'plog-converter' -o \
-name 'blame-notifier' -o \
-path '*/pvs-*/*' -o \
-name 'libpvs-*' -o \
-name 'pvs-*' \
\) \
-print 2>/dev/null |
while IFS= read -r file; do
path="$file"
while [ "$path" != "$PREFIX" ]; do
printf '%s\n' "$path"
path="$(dirname "$path")"
done
done |
sort |
Please read release history for old versions here.