Commit Graph

37 Commits

Author SHA1 Message Date
a19b019b87 patch 9.1.1688: potential buffer overrun in bufwrite.c
Problem:  potential buffer overrun in bufwrite.c
Solution: Use a temporary variable (John Marriott)

In my Windows 11 Pro 64-bit build MAXPATHL is 1024 and IOSIZE is 1025.
In my Archlinux Linux 64-bit build MAXPATHL is 4096 and IOSIZE is 1025.

In funuction buf_write():
There is a check (line 713) that makes sure the length of fname is less
than MAXPATHL. There is a call to STRCPY() (line 1208) which copies the
string at fname into IObuff (which has size IOSIZE). For Unix builds
fname is set to sfname which may or may not be shorter. However, if
sfname is NULL sfname is set to fname.

Therefore, in builds where MAXPATHL > IOSIZE (eg in my linux build), it
is theoretically possible for the STRCPY() call to exceed the bounds of
IObuff.

This PR addresses this by copying fname into a local variable that has
the same maximum size as fname.

In addition:
Given that the filename is unconditionally overwritten in the for loop,
only copy the directory portion of fname. Move variable i closer to
where it is used.

closes: #18095

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-08-26 17:32:18 +02:00
fbe2dd7b4c patch 9.1.1129: missing out-of-memory test in buf_write()
Problem:  missing out-of-memory test in buf_write()
Solution: Check that the returned allocated buffer is not NULL
          (John Marriott)

closes: #16678

Signed-off-by: John Marriott <basilisk@internode.on.net>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2025-02-20 23:17:09 +01:00
242667ae14 patch 9.1.0615: Unnecessary STRLEN() in make_percent_swname()
Problem:  Unnecessary STRLEN() in make_percent_swname()
Solution: Pass the end of "dir" to make_percent_swname()
          (zeertzjq)

closes: #15340

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-07-25 20:58:42 +02:00
aa925eeb97 patch 9.1.0472: Inconsistencies between functions for option flags
Problem:  Inconsistencies between functions for option flags.
Solution: Consistently use "unsigned int" as return type and rename
          get_bkc_value() to get_bkc_flags() (zeertzjq).

closes: #14925

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2024-06-09 18:24:05 +02:00
e085dfda5d patch 9.0.1962: No support for writing extended attributes
Problem:  No support for writing extended attributes
Solution: Add extended attribute support for linux

It's been a long standing issue, that if you write a file with extended
attributes and backupcopy is set to no, the file will loose the extended
attributes.

So this patch adds support for retrieving the extended attributes and
copying it to the new file. It currently only works on linux, mainly
because I don't know the different APIs for other systems (BSD, MacOSX and
Solaris).  On linux, this should be supported since Kernel 2.4 or
something, so this should be pretty safe to use now.

Enable the extended attribute support with normal builds.

I also added it explicitly to the :version output as well as make it
able to check using `:echo has("xattr")`, to have users easily check
that this is available.

In contrast to the similar support for SELINUX and SMACK support (which
also internally uses extended attributes), I have made this a FEAT_XATTR
define, instead of the similar HAVE_XATTR.

Add a test and change CI to include relevant packages so that CI can
test that extended attributes are correctly written.

closes: #306
closes: #13203

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-09-30 12:49:18 +02:00
e76062c078 patch 9.0.0965: using one window for executing autocommands is insufficient
Problem:    Using one window for executing autocommands is insufficient.
Solution:   Use up to five windows for executing autocommands.
2022-11-28 18:51:43 +00:00
c57b5bcd22 patch 9.0.0828: various typos
Problem:    Various typos.
Solution:   Correct typos. (closes #11432)
2022-11-02 13:30:51 +00:00
3af982196b patch 9.0.0826: if 'endofline' is set CTRL-Z may be written in a wrong place
Problem:    If 'endofline' is set the CTRL-Z may be written in the wrong
            place.
Solution:   Write CTRL-Z at the end of the file.  Update the help to explain
            the possibilities better. (Ken Takata, closes #11486)
2022-11-01 20:36:19 +00:00
72c8e3c070 Fix wrong struct access for member. 2022-10-28 16:51:46 +01:00
fb0cf2357e patch 9.0.0817 2022-10-22 11:25:19 +01:00
500a1f9972 patch 9.0.0509: confusing error for "saveas" command with "nofile" buffer
Problem:    Confusing error for "saveas" command with "nofile" buffer.
Solution:   Give a clearer error message. (closes #11171)
2022-09-20 11:49:10 +01:00
074fbd4131 patch 9.0.0278: the +wildignore feature is nearly always available
Problem:    The +wildignore feature is nearly always available.
Solution:   Graduate +wildignore for consistency.
2022-08-26 16:41:14 +01:00
6d4b2f54df patch 9.0.0263: too many #ifdefs
Problem:    Too many #ifdefs.
Solution:   Make some functions always available.
2022-08-25 15:11:15 +01:00
dbdcc79910 patch 9.0.0119: tiny chance that creating a backup file fails
Problem:    Tiny chance that creating a backup file fails.
Solution:   Check for EEXIST error. (Ken Takata, closes #10821)
2022-07-31 11:50:42 +01:00
6ed545e797 patch 8.2.4928: various white space and cosmetic mistakes
Problem:    Various white space and cosmetic mistakes.
Solution:   Change spaces to tabs, improve comments.
2022-05-09 20:09:23 +01:00
74409f6279 patch 8.2.3970: error messages are spread out
Problem:    Error messages are spread out.
Solution:   Move more errors to errors.h.
2022-01-01 15:58:22 +00:00
460ae5dfca patch 8.2.3967: error messages are spread out
Problem:    Error messages are spread out.
Solution:   Move more errors to errors.h.
2022-01-01 14:19:49 +00:00
436b5adc97 patch 8.2.3961: error messages are spread out
Problem:    Error messages are spread out.
Solution:   Move more errors to errors.h.
2021-12-31 22:49:24 +00:00
f1474d801b patch 8.2.3960: error messages are spread out
Problem:    Error messages are spread out.
Solution:   Move more errors to errors.h.
2021-12-31 19:59:55 +00:00
6d0570117a patch 8.2.3959: error messages are spread out
Problem:    Error messages are spread out.
Solution:   Move more errors to errors.h.
2021-12-31 18:49:43 +00:00
1a9922243a patch 8.2.3957: error messages are spread out
Problem:    Error messages are spread out.
Solution:   Move more errors to errors.h.
2021-12-31 17:25:48 +00:00
12f3c1b77f patch 8.2.3749: error messages are everywhere
Problem:    Error messages are everywhere.
Solution:   Move more error messages to errors.h and adjust the names.
2021-12-05 21:46:34 +00:00
651fca85c7 patch 8.2.3699: the +title feature adds a lot of #ifdef but little code
Problem:    The +title feature adds a lot of #ifdef but little code.
Solution:   Graduate the +title feature.
2021-11-29 20:39:38 +00:00
db3b44640d patch 8.2.3517: TextChanged does not trigger after TextChangedI
Problem:    TextChanged does not trigger after TextChangedI.
Solution:   Store the tick separately for TextChangedI. (Christian Brabandt,
            closes #8968, closes #8932)
2021-10-16 11:58:55 +01:00
0a7984af56 patch 8.2.3510: changes are only detected with one second accuracy
Problem:    Changes are only detected with one second accuracy.
Solution:   Use the nanosecond time if possible.  (Leah Neukirchen,
            closes #8873, closes #8875)
2021-10-14 21:27:55 +01:00
8a4c812ede patch 8.2.3218: when using xchaha20 crypt undo file is not removed
Problem:    When using xchaha20 crypt undo file is not removed.
Solution:   Reset 'undofile' and delete the file. (Christian Brabandt,
            closes #8630, closes #8467)
2021-07-25 14:36:05 +02:00
65aee0b714 patch 8.2.3063: crash when switching 'cryptmethod' to xchaha20 with undo file
Problem:    Crash when switching 'cryptmethod' to xchaha20 with an existing
            undo file. (Martin Tournoij)
Solution:   Disable reading undo file when decoding can't be done inplace.
            (issue #8467)
2021-06-27 14:08:24 +02:00
f573c6e1ed patch 8.2.3022: available encryption methods are not strong enough
Problem:    Available encryption methods are not strong enough.
Solution:   Add initial support for xchaha20. (Christian Brabandt,
            closes #8394)
2021-06-20 14:02:16 +02:00
7781ebe50f patch 8.2.2450: MS-Windows: ADS was not preserved if 'backupcopy' is "yes"
Problem:    MS-Windows: ADS was not preserved if 'backupcopy' is "yes".
Solution:   Copy ADS before truncating the file. (Ken Takata, closes #7762)
2021-02-01 20:35:01 +01:00
b3c8b1d254 patch 8.2.2199: first write after setting 'eol' does not have NL added
Problem:    First write after setting 'eol' does not have NL added. (Tomáš
            Janoušek)
Solution:   Only use b_no_eol_lnum when doing a binary write. (closes #7535)
2020-12-23 18:54:57 +01:00
8e7d6223f6 patch 8.2.2160: various typos
Problem:    Various typos.
Solution:   Fix spelling mistakes. (closes #7494)
2020-12-18 19:49:56 +01:00
8e6be34338 patch 8.2.2039: viminfo is not written when creating a new file
Problem:    Viminfo is not written when creating a new file.
Solution:   Set "b_marks_read" in the new buffer. (Christian Brabandt,
            closes #7350)
2020-11-23 22:01:26 +01:00
e100440158 patch 8.2.1898: command modifier parsing always uses global cmdmod
Problem:    Command modifier parsing always uses global cmdmod.
Solution:   Pass in cmdmod_T to use.  Rename struct fields consistently.
2020-10-24 20:49:43 +02:00
722e505d1a patch 8.2.0966: 'shortmess' flag "n" not used in two places
Problem:    'shortmess' flag "n" not used in two places.
Solution:   Make use of the "n" flag consistent. (Nick Jensen, closes #6245,
            closes #6244)
2020-06-12 22:31:00 +02:00
95f0b6e5a5 patch 8.2.0009: VMS: terminal version doesn't build
Problem:    VMS: terminal version doesn't build.
Solution:   Move MIN definition.  Adjust #ifdefs. (Zoltan Arpadffy)
2019-12-15 12:54:18 +01:00
f4a1d1c054 patch 8.1.2302: :lockmarks does not work for '[ and ']
Problem:    :lockmarks does not work for '[ and '].
Solution:   save and restore '[ and '] marks. (James McCoy, closes #5222)
2019-11-16 13:50:25 +01:00
473952e852 patch 8.1.2094: the fileio.c file is too big
Problem:    The fileio.c file is too big.
Solution:   Move buf_write() to bufwrite.c. (Yegappan Lakshmanan,
            closes #4990)
2019-09-28 16:30:04 +02:00