Mercurial > vim
view .github/workflows/coverity.yml @ 34379:37b4c89ba420 v9.1.0116
patch 9.1.0116: win_split_ins may not check available room
Commit: https://github.com/vim/vim/commit/0fd44a5ad81ade342cb54d8984965bdedd2272c8
Author: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Date: Tue Feb 20 20:28:15 2024 +0100
patch 9.1.0116: win_split_ins may not check available room
Problem: win_split_ins has no check for E36 when moving an existing
window
Solution: check for room and fix the issues in f_win_splitmove()
(Sean Dewar)
win_split_ins has no check for E36 when moving an existing window,
allowing for layouts with many overlapping zero-sized windows to be
created (which may also cause drawing issues with tablines and such).
f_win_splitmove also has some bugs.
So check for room and fix the issues in f_win_splitmove. Handle failure
in the two relevant win_split_ins callers by restoring the original
layout, and factor the common logic into win_splitmove.
Don't check for room when opening an autocommand window, as it's a
temporary window that's rarely interacted with or drawn anyhow, and is
rather important for some autocommands.
Issues fixed in f_win_splitmove:
- Error if splitting is disallowed.
- Fix heap-use-after-frees if autocommands fired from switching to "targetwin"
close "wp" or "oldwin".
- Fix splitting the wrong window if autocommands fired from switching to
"targetwin" switch to a different window.
- Ensure -1 is returned for all errors.
Also handle allocation failure a bit earlier in make_snapshot (callers,
except win_splitmove, don't really care if a snapshot can't be made, so
just ignore the return value).
Note: Test_smoothscroll_in_zero_width_window failed after these changes with
E36, as it was using the previous behaviour to create a zero-width window.
I've fixed the test such that it fails with UBSAN as expected when v9.0.1367 is
reverted (and simplified it too).
related: #14042
Signed-off-by: Sean Dewar <6256228+seandewar@users.noreply.github.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 20 Feb 2024 22:30:04 +0100 |
parents | db65486d8d75 |
children | f8623bd12e17 |
line wrap: on
line source
name: Coverity on: schedule: - cron: '42 0 * * *' # Run once per day, to avoid Coverity's submission limits workflow_dispatch: permissions: contents: read # to fetch code (actions/checkout) jobs: scan: runs-on: ubuntu-22.04 env: CC: gcc DEBIAN_FRONTEND: noninteractive TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} steps: - name: Checkout repository from github if: env.TOKEN uses: actions/checkout@v4 - name: Download Coverity if: env.TOKEN run: | wget -q https://scan.coverity.com/download/cxx/linux64 --post-data "token=$TOKEN&project=vim" -O coverity_tool.tgz mkdir cov-scan tar ax -f coverity_tool.tgz --strip-components=1 -C cov-scan - name: Install packages if: env.TOKEN run: | sudo apt-get update && sudo apt-get install -y \ autoconf \ gettext \ libcanberra-dev \ libperl-dev \ python2-dev \ python3-dev \ liblua5.4-dev \ lua5.4 \ ruby-dev \ tcl-dev \ libgtk2.0-dev \ desktop-file-utils \ libtool-bin \ libsodium-dev - name: Set up environment if: env.TOKEN run: | echo "$(pwd)/cov-scan/bin" >> $GITHUB_PATH ( echo "NPROC=$(getconf _NPROCESSORS_ONLN)" echo "CONFOPT=--enable-perlinterp --enable-pythoninterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp" ) >> $GITHUB_ENV - name: Configure if: env.TOKEN run: | ./configure --with-features=huge ${CONFOPT} --enable-fail-if-missing # Append various warning flags to CFLAGS. sed -i -f ci/config.mk.sed src/auto/config.mk sed -i -f ci/config.mk.${CC}.sed src/auto/config.mk - name: Build/scan vim if: env.TOKEN run: | cov-build --dir cov-int make -j${NPROC} - name: Submit results if: env.TOKEN run: | tar zcf cov-scan.tgz cov-int curl --form token=$TOKEN \ --form email=$EMAIL \ --form file=@cov-scan.tgz \ --form version="$(git rev-parse HEAD)" \ --form description="Automatic GHA scan" \ 'https://scan.coverity.com/builds?project=vim' env: EMAIL: ${{ secrets.COVERITY_SCAN_EMAIL }}