mirror of
https://git.tukaani.org/xz.git
synced 2025-02-23 17:08:13 +00:00
IMPORTANT: This includes a security fix to command line tool argument handling. Some toolchains embed an application manifest by default to declare UAC-compliance. Some also declare compatibility with Vista/8/8.1/10/11 to let the app access features newer than those of Vista. We want all the above but also two more things: - Declare that the app is long path aware to support paths longer than 259 characters (this may also require a registry change). - Force the code page to UTF-8. This allows the command line tools to access files whose names contain characters that don't exist in the current legacy code page (except unpaired surrogates). The UTF-8 code page also fixes security issues in command line argument handling which can be exploited with malicious filenames. See the new file w32_application.manifest.comments.txt. Thanks to Orange Tsai and splitline from DEVCORE Research Team for discovering this issue. Thanks to Vijay Sarvepalli for reporting the issue to me. Thanks to Kelvin Lee for testing with MSVC and helping with the required build system fixes.
58 lines
1.4 KiB
Plaintext
58 lines
1.4 KiB
Plaintext
/* SPDX-License-Identifier: 0BSD */
|
|
|
|
/*
|
|
* Author: Lasse Collin
|
|
*/
|
|
|
|
#include <winresrc.h>
|
|
#ifdef HAVE_CONFIG_H
|
|
# include "config.h"
|
|
#endif
|
|
#define LZMA_H_INTERNAL
|
|
#define LZMA_H_INTERNAL_RC
|
|
#include "lzma/version.h"
|
|
|
|
#ifndef MY_BUILD
|
|
# define MY_BUILD 0
|
|
#endif
|
|
#define MY_VERSION LZMA_VERSION_MAJOR,LZMA_VERSION_MINOR,LZMA_VERSION_PATCH,MY_BUILD
|
|
|
|
#define MY_FILENAME MY_NAME MY_SUFFIX
|
|
#define MY_COMPANY "The Tukaani Project <https://tukaani.org/>"
|
|
#define MY_PRODUCT PACKAGE_NAME " <" PACKAGE_URL ">"
|
|
|
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
|
|
|
VS_VERSION_INFO VERSIONINFO
|
|
FILEVERSION MY_VERSION
|
|
PRODUCTVERSION MY_VERSION
|
|
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
|
|
FILEFLAGS 0
|
|
FILEOS VOS_NT_WINDOWS32
|
|
FILETYPE MY_TYPE
|
|
FILESUBTYPE 0x0L
|
|
BEGIN
|
|
BLOCK "StringFileInfo"
|
|
BEGIN
|
|
BLOCK "040904b0"
|
|
BEGIN
|
|
VALUE "CompanyName", MY_COMPANY
|
|
VALUE "FileDescription", MY_DESC
|
|
VALUE "FileVersion", LZMA_VERSION_STRING
|
|
VALUE "InternalName", MY_NAME
|
|
VALUE "OriginalFilename", MY_FILENAME
|
|
VALUE "ProductName", MY_PRODUCT
|
|
VALUE "ProductVersion", LZMA_VERSION_STRING
|
|
END
|
|
END
|
|
BLOCK "VarFileInfo"
|
|
BEGIN
|
|
VALUE "Translation", 0x409, 1200
|
|
END
|
|
END
|
|
|
|
/* Omit the manifest on Cygwin and MSYS2 (both define __CYGWIN__). */
|
|
#if MY_TYPE == VFT_APP && !defined(__CYGWIN__)
|
|
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "w32_application.manifest"
|
|
#endif
|