chromium/third_party/unrar/README.chromium

Name: UnRAR source for decompressing .RAR and other files.
Short Name: unrar
URL: https://github.com/aawc/unrar.git
Revision: 12e82f940ab8d2739cbfe839bab548d68ccb1062
Version: 7.0.9
License: UnRAR
License File: src/license.txt
License Android Compatible: No
Security Critical: yes
Shipped: yes

Description:
This library is used to decompress and analyze .RAR and other related files that
have been downloaded by the user to check their Safe Browsing reputation. It is
only for Chromium on desktop.

Warning:
Please note that changes have been made to this library to terminate the current
process in which this library is running, when it encounters some error
conditions. This is acceptable for Chromium because the library executes inside
a sandbox, but may not apply more broadly.

Notable changes from upstream:
- Use CHROMIUM_UNRAR macro to guard Chromium-specific changes.
- Rewrite WinNT() in isnt.cpp to use the new Windows APIs.
- Replace exceptions with terminating the current process. Guarded with the
  macro UNRAR_NO_EXCEPTIONS.
- Pass a file handle to the rar file, instead of trying to open the rar file
  inside the unrar library code. This is done because the unrar library code
  operates inside a sandbox, so it doesn't have the permissions to open files.
- Remove some static initializers.
- Pass a file handle to a temporary file with write permission, so the archive
  can be extracted inside the sandbox for analysis.
- Fix a bug with NOVOLUME implementation (https://crbug.com/949787). This
  should be temporary, until the fix can be pulled from upstream.
- More static initializers removed.
- Changes to support building in -std=c++20 mode.
- Cherry-picked https://github.com/aawc/unrar/pull/35
- Fix alignment errors reported by UBSan by disabling ALLOW_MISALIGNED.
- Fix unportable include name.
- Replace functions that call user32.dll and gdi32.dll on Windows, to avoid
  loading them under win32k lockdown sandbox.
- Disable SSE support.

All these changes are included in one patch file (chromium_changes.patch)