File _patchinfo of Package patchinfo.15623
<patchinfo incident="15623">
<category>security</category>
<rating>moderate</rating>
<packager>msmeissn</packager>
<summary>Security update for nasm</summary>
<description>
nasm was updated to version 2.14.02:
* Fix crash due to multiple errors or warnings during the code generation pass if a list file is specified.
* Create all system-defined macros defore processing command-line given preprocessing directives (-p, -d, -u, --pragma, --before).
* If debugging is enabled, define a __DEBUG_FORMAT__ predefined macro. See section 4.11.7.
* Fix an assert for the case in the obj format when a SEG operator refers to an EXTERN symbol declared further down in the code.
* Fix a corner case in the floating-point code where a binary, octal or hexadecimal floating-point having at least 32, 11, or 8 mantissa digits could produce slightly incorrect results under very specific conditions.
* Support -MD without a filename, for gcc compatibility. -MF can be used to set the dependencies output filename. See section 2.1.7.
* Fix -E in combination with -MD. See section 2.1.21.
* Fix missing errors on redefined labels; would cause convergence failure instead which is very slow and not easy to debug.
* Duplicate definitions of the same label with the same value is now explicitly permitted (2.14 would allow it in some circumstances.)
* Add the option --no-line to ignore %line directives in the source. See section 2.1.33 and section 4.10.1.
* Changed -I option semantics by adding a trailing path separator unconditionally.
* Fixed null dereference in corrupted invalid single line macros.
* Fixed division by zero which may happen if source code is malformed.
* Fixed out of bound access in processing of malformed segment override.
* Fixed out of bound access in certain EQU parsing.
* Fixed buffer underflow in float parsing.
* Added SGX (Intel Software Guard Extensions) instructions.
* Added +n syntax for multiple contiguous registers.
* Fixed subsections_via_symbols for macho object format.
* Added the --gprefix, --gpostfix, --lprefix, and --lpostfix command line options, to allow command line base symbol renaming. See section 2.1.28.
* Allow label renaming to be specified by %pragma in addition to from the command line. See section 6.9.
* Supported generic %pragma namespaces, output and debug. See section 6.10.
* Added the --pragma command line option to inject a %pragma directive. See section 2.1.29.
* Added the --before command line option to accept preprocess statement before input. See section 2.1.30.
* Added AVX512 VBMI2 (Additional Bit Manipulation), VNNI (Vector Neural Network), BITALG (Bit Algorithm), and GFNI (Galois Field New Instruction) instructions.
* Added the STATIC directive for local symbols that should be renamed using global-symbol rules. See section 6.8.
* Allow a symbol to be defined as EXTERN and then later overridden as GLOBAL or COMMON. Furthermore, a symbol declared EXTERN and then defined will be treated as GLOBAL. See section 6.5.
* The GLOBAL directive no longer is required to precede the definition of the symbol.
* Support private_extern as macho specific extension to the GLOBAL directive. See section 7.8.5.
* Updated UD0 encoding to match with the specification
* Added the --limit-X command line option to set execution limits. See section 2.1.31.
* Updated the Codeview version number to be aligned with MASM.
* Added the --keep-all command line option to preserve output files. See section 2.1.32.
* Added the --include command line option, an alias to -P (section 2.1.18).
* Added the --help command line option as an alias to -h (section 3.1).
* Added -W, -D, and -Q suffix aliases for RET instructions so the operand sizes of these instructions can be encoded without using o16, o32 or o64.
New upstream version 2.13.03:
* Add flags: AES, VAES, VPCLMULQDQ
* Add VPCLMULQDQ instruction
* elf: Add missing dwarf loc section
* documentation updates
nasm was updated to new upstream version 2.13.02:
* Fix generation of PEXTRW instruction.
* Fix smartalign package which could trigger an error during
optimization if the alignment code expanded too much due to
optimization of the previous code.
* Fix a case where negative value in TIMES directive causes
panic instead of an error.
* Fix the incorrect generation of VEX-encoded instruction
when static mode decorators are specified on scalar instructions,
losing the decorators as they require EVEX encoding.
* Fix generation of dependency lists.
* Fixes macro calls that have the wrong number of arguments
(bsc#1073796, CVE-2017-17810)
* Fixes Heap-based buffer overflow allows related to a strcpy
in paste_tokens (bsc#1073798, CVE-2017-17811)
* Fixes Heap-based buffer over-read in the function detoken()
(bsc#1073799, CVE-2017-17812)
* Fixes Use-after-free in the pp_list_one_macro function
(bsc#1073803, CVE-2017-17813)
* Fixes Use-after-free in do_directive
(bsc#1073808, CVE-2017-17814)
* Fixes Illegal address access in is_mmacro()
(bsc#1073818, CVE-2017-17815)
* Fixes Use-after-free in pp_getline
(bsc#1073823, CVE-2017-17816)
* Fixes Use-after-free in pp_verror
(bsc#1073829, CVE-2017-17817)
* Fixes Heap-based buffer over-read related to a while loop in
paste_tokens (bsc#1073830, CVE-2017-17818)
* Fixes Illegal address access in the function find_cc
(bsc#1073832, CVE-2017-17819)
* Fixes Use-after-free in pp_list_one_macro
(bsc#1073846, CVE-2017-17820)
* Fixes illegal address access in thefunction paste_tokens()
(bsc#1058013, CVE-2017-14228)
nasm was updated to version 2.13.01:
* Fix incorrect output for some types of FAR or SEG references in
the obj output format, and possibly other 16-bit output formats.
* Fix the address in the list file for an instruction containing
a TIMES directive.
* Fix error with TIMES used together with an instruction which
can vary in size, e.g. JMP.
* Fix breakage on some uses of the DZ pseudo-op.
nasm was updated to version 2.13.00:
* Support the official forms of the UD0 and UD1 instructions.
* Allow self-segment-relative expressions in immediates and
displacements
* Handle a 64-bit origin in NDISASM.
* NASM can now generate sparse output files for relevant output
formats, if the underlying operating system supports them.
* Fix a number of bugs related to AVX-512 decorators.
* Fix the {z} decorator on AVX-512 VMOVDQ* instructions.
* Add new warnings for certain dangerous constructs which never
ought to have been allowed.
* Fix the EVEX (AVX-512) versions of the VPBROADCAST, VPEXTR, and
VPINSR instructions.
* Support contracted forms of additional instructions.
* Fix Codeview malformed compiler version record.
* Add the CLWB and PCOMMIT instructions.
* Add the %pragma preprocessor directive for soft-error
directives.
* Add the RDPID instruction.
nasm was updated to version 2.12.02:
* Fix preprocessor errors, especially %error and %warning, inside
if statements.
* Fix relative relocations in 32-bit Mach-O.
* More Codeview debug format fixes.
* If the MASM PTR keyword is encountered, issue a warning. This
is much more likely to indicate a MASM-ism encountered in NASM
than it is a valid label.
* This warning can be suppressed with -w-ptr, the [warning]
directive (see section 2.1.24) or by the macro definition
%idefine ptr %??.
* When an error or a warning comes from the expansion of a
multi-line macro, display the file and line numbers for the
expanded macros.
* Macros defined with .nolist do not get displayed.
* Add macros ilog2fw() and ilog2cw() to the ifunc macro package.
See section 5.4.1.
nasm was updated to version 2.12.01:
* Portability fixes for some platforms.
* Fix error when not specifying a list file.
* Correct the handling of macro-local labels in the Codeview
debugging format.
* Add CLZERO, MONITORX and MWAITX instructions.
nasm was updated to version 2.12:
* Major fixes to the macho backend (section 7.8); earlier
versions would produce invalid symbols and relocations on a
regular basis.
* Support for thread-local storage in Mach-O.
* Support for arbitrary sections in Mach-O.
* Fix wrong negative size treated as a big positive value passed
into backend causing NASM to crash.
* Fix handling of zero-extending unsigned relocations, we have
been printing wrong message and forgot to assign segment with
predefined value before passing it into output format.
* Fix potential write of oversized (with size greater than
allowed in output format) relative relocations.
* Portability fixes for building NASM with LLVM compiler.
* Add support of Codeview version 8 (cv8) debug format for win32
and win64 formats in the COFF backend, see section 7.5.3.
* Allow 64-bit outputs in 16/32-bit only backends. Unsigned
64-bit relocations are zero-extended from 32-bits with a
warning (suppressible via -w-zext-reloc); signed 64-bit
relocations are an arror.
* Line numbers in list files now correspond to the lines in the
source files, instead of simply being sequential.
nasm was updated to version 2.11.09:
* Fix potential stack overwrite in macho32 backend.
* Fix relocation records in macho64 backend.
* Fix symbol lookup computation in macho64 backend.
* Adjust .symtab and .rela.text sections alignments to 8 bytes
in elf64 backed.
* Fix section length computation in bin backend which leaded in
incorrect relocation records.
nasm was updated to version 2.11.08:
* Fix section length computation in bin backend which leaded in
incorrect relocation records.
* Add a warning for numeric preprocessor definitions passed via
command line which might have unexpected results otherwise.
* Add ability to specify a module name record in rdoff linker
</description>
<issue id="1058013" tracker="bnc">VUL-1: CVE-2017-14228: nasm: In Netwide Assembler (NASM) 2.14rc0, there is an illegal address access in thefunction paste_tokens() in preproc.c, aka a NULL pointer dereference. It willlead to remote denial of service.</issue>
<issue id="1073796" tracker="bnc">VUL-1: CVE-2017-17810: nasm: Segfault allows DoS because asm/preproc.c mishandles macro calls that have the wrong number of arguments</issue>
<issue id="1073798" tracker="bnc">VUL-1: CVE-2017-17811: nasm: Heap-based buffer overflow allows for DoS, related to a strcpy in paste_tokens in asm/preproc.c</issue>
<issue id="1073799" tracker="bnc">VUL-1: CVE-2017-17812: nasm: Heap-based buffer over-read in the function detoken() in asm/preproc.c that allows for DoS</issue>
<issue id="1073803" tracker="bnc">VUL-1: CVE-2017-17813: nasm: Use-after-free in the pp_list_one_macro function in asm/preproc.c allowing for DoS</issue>
<issue id="1073808" tracker="bnc">VUL-1: CVE-2017-17814: nasm: Use-after-free in do_directive in asm/preproc.c allowing for DoS</issue>
<issue id="1073818" tracker="bnc">VUL-1: CVE-2017-17815: nasm: Illegal address access in is_mmacro() in asm/preproc.c allowing for DoS</issue>
<issue id="1073823" tracker="bnc">VUL-1: CVE-2017-17816: nasm: Use-after-free in pp_getline in asm/preproc.c allowing for DoS</issue>
<issue id="1073829" tracker="bnc">VUL-1: CVE-2017-17817: nasm: Use-after-free in pp_verror in asm/preproc.c allowing for DoS</issue>
<issue id="1073830" tracker="bnc">VUL-1: CVE-2017-17818: nasm: Heap-based buffer over-read related to a while loop in paste_tokens in asm/preproc.c that allows for DoS</issue>
<issue id="1073832" tracker="bnc">VUL-1: CVE-2017-17819: nasm: Illegal address access in the function find_cc() in asm/preproc.c allowing for DoS</issue>
<issue id="1073846" tracker="bnc">VUL-1: CVE-2017-17820: nasm: Use-after-free in pp_list_one_macro in asm/preproc.c allowing for DoS</issue>
<issue id="1084631" tracker="bnc">GCC 8: nasm build fails</issue>
<issue id="2017-14228" tracker="cve"/>
<issue id="2017-17810" tracker="cve"/>
<issue id="2017-17811" tracker="cve"/>
<issue id="2017-17812" tracker="cve"/>
<issue id="2017-17813" tracker="cve"/>
<issue id="2017-17814" tracker="cve"/>
<issue id="2017-17815" tracker="cve"/>
<issue id="2017-17816" tracker="cve"/>
<issue id="2017-17817" tracker="cve"/>
<issue id="2017-17818" tracker="cve"/>
<issue id="2017-17819" tracker="cve"/>
<issue id="2017-17820" tracker="cve"/>
</patchinfo>