Mercurial > vim
view src/Make_ming.mak @ 33422:25d250a74bb6 v9.0.1969
patch 9.0.1969: [security] buffer-overflow in trunc_string()
Commit: https://github.com/vim/vim/commit/3bd7fa12e146c6051490d048a4acbfba974eeb04
Author: Christian Brabandt <cb@256bit.org>
Date: Mon Oct 2 20:59:08 2023 +0200
patch 9.0.1969: [security] buffer-overflow in trunc_string()
Problem: buffer-overflow in trunc_string()
Solution: Add NULL at end of buffer
Currently trunc_string() assumes that when the string is too long,
buf[e-1] will always be writeable. But that assumption may not always be
true. The condition currently looks like this
else if (e + 3 < buflen)
[...]
else
{
// can't fit in the "...", just truncate it
buf[e - 1] = NUL;
}
but this means, we may run into the last else clause with e still being
larger than buflen. So a buffer overflow occurs.
So instead of using `buf[e - 1]`, let's just always
truncate at `buf[buflen - 1]` which should always be writable.
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 02 Oct 2023 21:30:04 +0200 |
parents | 626fb8e8bb8a |
children |
line wrap: on
line source
# # Makefile for VIM on Win32, using MinGW # # Also read INSTALLpc.txt! # # The old Make_ming.mak (maintained by Ron Aaron et al.) was merged into # Make_cyg_ming.mak. # This file contains MinGW specific settings. Common settings are contained # in Make_cyg_ming.mak. # # Last updated by Ken Takata. # Last Change: 2014 Oct 21 # uncomment 'PERL' if you want a perl-enabled version #PERL=c:/perl # uncomment 'LUA' if you want a Lua-enabled version #LUA=c:/lua # uncomment 'MZSCHEME' if you want a MzScheme-enabled version #MZSCHEME=d:/plt # uncomment 'PYTHON' if you want a python-enabled version # Put the path to the python distro here. If cross compiling from Linux, you # will also need to convert the header files to unix instead of dos format: # for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil # and also, you will need to make a mingw32 'libpython20.a' to link with: # cd $PYTHON/libs # pexports python20.dll > python20.def # dlltool -d python20.def -l libpython20.a # on my Linux box, I put the Python stuff here: #PYTHON=/home/ron/ActivePython-2.0.0-202/src/Core # on my NT box, it's here: #PYTHON=c:/python20 # uncomment 'PYTHON3' if you want a python3-enabled version #PYTHON3=c:/python31 # uncomment 'TCL' if you want a Tcl-enabled version #TCL=c:/tcl # uncomment 'RUBY' if you want a Ruby-enabled version #RUBY=c:/ruby # Do not change this. UNDER_CYGWIN = no include Make_cyg_ming.mak # vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0: