Mercurial > vim
view src/proto/hardcopy.pro @ 33864:6e4c686b6b5b v9.0.2142
patch 9.0.2142: [security]: stack-buffer-overflow in option callback functions
Commit: https://github.com/vim/vim/commit/b39b240c386a5a29241415541f1c99e2e6b8ce47
Author: Christian Brabandt <cb@256bit.org>
Date: Wed Nov 29 11:34:05 2023 +0100
patch 9.0.2142: [security]: stack-buffer-overflow in option callback functions
Problem: [security]: stack-buffer-overflow in option callback functions
Solution: pass size of errbuf down the call stack, use snprintf()
instead of sprintf()
We pass the error buffer down to the option callback functions, but in
some parts of the code, we simply use sprintf(buf) to write into the error
buffer, which can overflow.
So let's pass down the length of the error buffer and use sprintf(buf, size)
instead.
Reported by @henices, thanks!
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 10 Dec 2023 15:16:04 +0100 |
parents | ca6bc7c04163 |
children |
line wrap: on
line source
/* hardcopy.c */ char *parse_printoptions(optset_T *args); char *parse_printmbfont(optset_T *args); int prt_header_height(void); int prt_use_number(void); int prt_get_unit(int idx); void ex_hardcopy(exarg_T *eap); void mch_print_cleanup(void); int mch_print_init(prt_settings_T *psettings, char_u *jobname, int forceit); int mch_print_begin(prt_settings_T *psettings); void mch_print_end(prt_settings_T *psettings); int mch_print_end_page(void); int mch_print_begin_page(char_u *str); int mch_print_blank_page(void); void mch_print_start_line(int margin, int page_line); int mch_print_text_out(char_u *textp, int len); void mch_print_set_font(int iBold, int iItalic, int iUnderline); void mch_print_set_bg(long_u bgcol); void mch_print_set_fg(long_u fgcol); /* vim: set ft=c : */