RHEL-155423 CVE-2026-28421 vim: Vim: Denial of service and information disclosure via crafted swap file
Resolves: RHEL-155423
This commit is contained in:
parent
8203ae04cd
commit
27eba146f1
108
0001-patch-9.0.1477-crash-when-recovering-from-corrupted-.patch
Normal file
108
0001-patch-9.0.1477-crash-when-recovering-from-corrupted-.patch
Normal file
@ -0,0 +1,108 @@
|
||||
diff -up vim82/src/errors.h.check-page-count vim82/src/errors.h
|
||||
--- vim82/src/errors.h.check-page-count 2026-03-19 17:53:51.063638067 +0100
|
||||
+++ vim82/src/errors.h 2026-03-19 17:56:16.144187736 +0100
|
||||
@@ -391,3 +391,5 @@ EXTERN char e_string_or_function_require
|
||||
EXTERN char e_illegal_character_in_word[]
|
||||
INIT(= N_("E1280: Illegal character in word"));
|
||||
#endif
|
||||
+EXTERN char e_warning_pointer_block_corrupted[]
|
||||
+ INIT(= N_("E1364: Warning: Pointer block corrupted"));
|
||||
diff -up vim82/src/memfile.c.check-page-count vim82/src/memfile.c
|
||||
--- vim82/src/memfile.c.check-page-count 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/memfile.c 2026-03-19 18:13:11.196323045 +0100
|
||||
@@ -432,7 +432,9 @@ mf_get(memfile_T *mfp, blocknr_T nr, int
|
||||
* If not, allocate a new block.
|
||||
*/
|
||||
hp = mf_release(mfp, page_count);
|
||||
- if (hp == NULL && (hp = mf_alloc_bhdr(mfp, page_count)) == NULL)
|
||||
+ if (hp == NULL && page_count > 0)
|
||||
+ hp = mf_alloc_bhdr(mfp, page_count);
|
||||
+ if (hp == NULL)
|
||||
return NULL;
|
||||
|
||||
hp->bh_bnum = nr;
|
||||
@@ -813,8 +815,10 @@ mf_release(memfile_T *mfp, int page_coun
|
||||
*/
|
||||
if (hp->bh_page_count != page_count)
|
||||
{
|
||||
- vim_free(hp->bh_data);
|
||||
- if ((hp->bh_data = alloc(mfp->mf_page_size * page_count)) == NULL)
|
||||
+ VIM_CLEAR(hp->bh_data);
|
||||
+ if (page_count > 0)
|
||||
+ hp->bh_data = alloc((size_t)mfp->mf_page_size * page_count);
|
||||
+ if (hp->bh_data == NULL)
|
||||
{
|
||||
vim_free(hp);
|
||||
return NULL;
|
||||
@@ -872,7 +876,7 @@ mf_release_all(void)
|
||||
}
|
||||
|
||||
/*
|
||||
- * Allocate a block header and a block of memory for it
|
||||
+ * Allocate a block header and a block of memory for it.
|
||||
*/
|
||||
static bhdr_T *
|
||||
mf_alloc_bhdr(memfile_T *mfp, int page_count)
|
||||
@@ -892,7 +896,7 @@ mf_alloc_bhdr(memfile_T *mfp, int page_c
|
||||
}
|
||||
|
||||
/*
|
||||
- * Free a block header and the block of memory for it
|
||||
+ * Free a block header and the block of memory for it.
|
||||
*/
|
||||
static void
|
||||
mf_free_bhdr(bhdr_T *hp)
|
||||
@@ -902,7 +906,7 @@ mf_free_bhdr(bhdr_T *hp)
|
||||
}
|
||||
|
||||
/*
|
||||
- * insert entry *hp in the free list
|
||||
+ * Insert entry *hp in the free list.
|
||||
*/
|
||||
static void
|
||||
mf_ins_free(memfile_T *mfp, bhdr_T *hp)
|
||||
diff -up vim82/src/memline.c.check-page-count vim82/src/memline.c
|
||||
--- vim82/src/memline.c.check-page-count 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/memline.c 2026-03-19 18:13:59.116720443 +0100
|
||||
@@ -96,6 +96,9 @@ struct pointer_block
|
||||
// followed by empty space until end of page
|
||||
};
|
||||
|
||||
+// Value for pb_count_max.
|
||||
+#define PB_COUNT_MAX(mfp) (short_u)(((mfp)->mf_page_size - offsetof(PTR_BL, pb_pointer)) / sizeof(PTR_EN))
|
||||
+
|
||||
/*
|
||||
* A data block is a leaf in the tree.
|
||||
*
|
||||
@@ -1505,6 +1508,20 @@ ml_recover(int checkext)
|
||||
pp = (PTR_BL *)(hp->bh_data);
|
||||
if (pp->pb_id == PTR_ID) // it is a pointer block
|
||||
{
|
||||
+ int ptr_block_error = FALSE;
|
||||
+ if (pp->pb_count_max != PB_COUNT_MAX(mfp))
|
||||
+ {
|
||||
+ ptr_block_error = TRUE;
|
||||
+ pp->pb_count_max = PB_COUNT_MAX(mfp);
|
||||
+ }
|
||||
+ if (pp->pb_count > pp->pb_count_max)
|
||||
+ {
|
||||
+ ptr_block_error = TRUE;
|
||||
+ pp->pb_count = pp->pb_count_max;
|
||||
+ }
|
||||
+ if (ptr_block_error)
|
||||
+ emsg(_(e_warning_pointer_block_corrupted));
|
||||
+
|
||||
// check line count when using pointer block first time
|
||||
if (idx == 0 && line_count != 0)
|
||||
{
|
||||
@@ -4040,8 +4057,7 @@ ml_new_ptr(memfile_T *mfp)
|
||||
pp = (PTR_BL *)(hp->bh_data);
|
||||
pp->pb_id = PTR_ID;
|
||||
pp->pb_count = 0;
|
||||
- pp->pb_count_max = (short_u)((mfp->mf_page_size - sizeof(PTR_BL))
|
||||
- / sizeof(PTR_EN) + 1);
|
||||
+ pp->pb_count_max = PB_COUNT_MAX(mfp);
|
||||
|
||||
return hp;
|
||||
}
|
||||
diff -up vim82/src/testdir/test_recover.vim.check-page-count vim82/src/testdir/test_recover.vim
|
||||
456
0001-patch-9.2.0077-security-Crash-when-recovering-a-corr.patch
Normal file
456
0001-patch-9.2.0077-security-Crash-when-recovering-a-corr.patch
Normal file
@ -0,0 +1,456 @@
|
||||
diff -up vim82/src/memline.c.CVE-2026-28421 vim82/src/memline.c
|
||||
--- vim82/src/memline.c.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/memline.c 2026-03-19 10:42:50.113672743 +0100
|
||||
@@ -1536,8 +1536,12 @@ ml_recover(int checkext)
|
||||
if (!cannot_open)
|
||||
{
|
||||
line_count = pp->pb_pointer[idx].pe_line_count;
|
||||
- if (readfile(curbuf->b_ffname, NULL, lnum,
|
||||
- pp->pb_pointer[idx].pe_old_lnum - 1,
|
||||
+ linenr_T pe_old_lnum = pp->pb_pointer[idx].pe_old_lnum;
|
||||
+ // Validate pe_line_count and pe_old_lnum from the
|
||||
+ // untrusted swap file before passing to readfile().
|
||||
+ if (line_count <= 0 || pe_old_lnum < 1 ||
|
||||
+ readfile(curbuf->b_ffname, NULL, lnum,
|
||||
+ pe_old_lnum - 1,
|
||||
line_count, NULL, 0) != OK)
|
||||
cannot_open = TRUE;
|
||||
else
|
||||
@@ -1568,6 +1572,27 @@ ml_recover(int checkext)
|
||||
bnum = pp->pb_pointer[idx].pe_bnum;
|
||||
line_count = pp->pb_pointer[idx].pe_line_count;
|
||||
page_count = pp->pb_pointer[idx].pe_page_count;
|
||||
+ // Validate pe_bnum and pe_page_count from the untrusted
|
||||
+ // swap file before passing to mf_get(), which uses
|
||||
+ // page_count to calculate allocation size. A bogus value
|
||||
+ // (e.g. 0x40000000) would cause a multi-GB allocation.
|
||||
+ // pe_page_count must be >= 1 and bnum + page_count must
|
||||
+ // not exceed the number of pages in the swap file.
|
||||
+ if (page_count < 1
|
||||
+ || bnum + page_count > mfp->mf_blocknr_max + 1)
|
||||
+ {
|
||||
+ ++error;
|
||||
+ ml_append(lnum++,
|
||||
+ (char_u *)_("???ILLEGAL BLOCK NUMBER"),
|
||||
+ (colnr_T)0, TRUE);
|
||||
+ // Skip this entry and pop back up the stack to keep
|
||||
+ // recovering whatever else we can.
|
||||
+ idx = ip->ip_index + 1;
|
||||
+ bnum = ip->ip_bnum;
|
||||
+ page_count = 1;
|
||||
+ --buf->b_ml.ml_stack_top;
|
||||
+ continue;
|
||||
+ }
|
||||
idx = 0;
|
||||
continue;
|
||||
}
|
||||
diff -up vim82/src/po/af.po.CVE-2026-28421 vim82/src/po/af.po
|
||||
--- vim82/src/po/af.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/af.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -5342,3 +5342,6 @@ msgstr "E463: Omgewing is onder bewaking
|
||||
|
||||
#~ msgid "WARNING: tag command changed a buffer!!!"
|
||||
#~ msgstr "WAARSKUWING: etiketbevel het buffer verander!!!"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/ca.po.CVE-2026-28421 vim82/src/po/ca.po
|
||||
--- vim82/src/po/ca.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/ca.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -6928,3 +6928,6 @@ msgid ""
|
||||
msgstr ""
|
||||
"Error en establir el path: sys.path no és una llista\n"
|
||||
"Hauríeu d'afegir vim.VIM_SPECIAL_PATH a sys.path"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/cs.cp1250.po.CVE-2026-28421 vim82/src/po/cs.cp1250.po
|
||||
--- vim82/src/po/cs.cp1250.po.CVE-2026-28421 2021-03-22 10:02:43.000000000 +0100
|
||||
+++ vim82/src/po/cs.cp1250.po 2026-03-19 10:42:50.114884754 +0100
|
||||
@@ -4620,3 +4620,6 @@ msgstr "Nulový poèet"
|
||||
|
||||
msgid "E81: Using <SID> not in a script context"
|
||||
msgstr "E81: Použití <SID> mimo kontext skriptu"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/cs.po.CVE-2026-28421 vim82/src/po/cs.po
|
||||
--- vim82/src/po/cs.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/cs.po 2026-03-19 10:42:50.115102712 +0100
|
||||
@@ -4620,3 +4620,6 @@ msgstr "Nulový poèet"
|
||||
|
||||
msgid "E81: Using <SID> not in a script context"
|
||||
msgstr "E81: Pou¾ití <SID> mimo kontext skriptu"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/da.po.CVE-2026-28421 vim82/src/po/da.po
|
||||
--- vim82/src/po/da.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/da.po 2026-03-19 10:42:50.115354083 +0100
|
||||
@@ -7090,3 +7090,6 @@ msgstr ""
|
||||
"C-kildekode (*.c, *.h)\t*.c;*.h\n"
|
||||
"C++-kildekode (*.cpp, *.hpp)\t*.cpp;*.hpp\n"
|
||||
"Vim-filer (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/de.po.CVE-2026-28421 vim82/src/po/de.po
|
||||
--- vim82/src/po/de.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/de.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -9491,3 +9491,6 @@ msgstr "Name der dynamischen MzScheme Bi
|
||||
|
||||
msgid "name of the MzScheme GC dynamic library"
|
||||
msgstr "Name der dynamischen MzScheme GC Bibliothek"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/en_GB.po.CVE-2026-28421 vim82/src/po/en_GB.po
|
||||
--- vim82/src/po/en_GB.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/en_GB.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -763,3 +763,6 @@ msgid "can't delete OutputObject attribu
|
||||
msgstr "cannot delete OutputObject attributes"
|
||||
|
||||
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/eo.po.CVE-2026-28421 vim82/src/po/eo.po
|
||||
--- vim82/src/po/eo.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/eo.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -7874,3 +7874,6 @@ msgstr "gvim"
|
||||
|
||||
msgid "Vim"
|
||||
msgstr "Vim"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/es.po.CVE-2026-28421 vim82/src/po/es.po
|
||||
--- vim82/src/po/es.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/es.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -6347,3 +6347,6 @@ msgid "search hit BOTTOM, continuing at
|
||||
msgstr "La búsqueda ha llegado al FINAL, continuando desde el PRINCIPIO"
|
||||
|
||||
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/fi.po.CVE-2026-28421 vim82/src/po/fi.po
|
||||
--- vim82/src/po/fi.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/fi.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -6982,3 +6982,6 @@ msgid ""
|
||||
msgstr ""
|
||||
"Ei onnistuttu asettaman polkua: sys.path ei ole list\n"
|
||||
"Lisää vim.VIM_SPECIAL_PATH muuttujaan sys.path"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/fr.po.CVE-2026-28421 vim82/src/po/fr.po
|
||||
--- vim82/src/po/fr.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/fr.po 2026-03-19 10:42:50.117725505 +0100
|
||||
@@ -8227,3 +8227,6 @@ msgstr "nom de la bibliothèque dynamique
|
||||
|
||||
msgid "name of the MzScheme dynamic library"
|
||||
msgstr "nom de la bibliothèque dynamique MzScheme"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/ga.po.CVE-2026-28421 vim82/src/po/ga.po
|
||||
--- vim82/src/po/ga.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/ga.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -7461,3 +7461,6 @@ msgstr ""
|
||||
|
||||
#~ msgid "E363: pattern caused out-of-stack error"
|
||||
#~ msgstr "E363: ghin an patrún earráid as-an-chruach"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/it.po.CVE-2026-28421 vim82/src/po/it.po
|
||||
--- vim82/src/po/it.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/it.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -6718,3 +6718,6 @@ msgstr ""
|
||||
"Sorgenti C (*.c, *.h)\t*.c;*.h\n"
|
||||
"Sorgenti C++ (*.cpp, *.hpp)\t*.cpp;*.hpp\n"
|
||||
"File di Vim (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/ja.euc-jp.po.CVE-2026-28421 vim82/src/po/ja.euc-jp.po
|
||||
--- vim82/src/po/ja.euc-jp.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/ja.euc-jp.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -7350,3 +7350,6 @@ msgstr "¥Æ¥¥¹¥È;¥¨¥Ç¥£¥¿;"
|
||||
|
||||
#~ msgid "Vim"
|
||||
#~ msgstr ""
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/ja.po.CVE-2026-28421 vim82/src/po/ja.po
|
||||
--- vim82/src/po/ja.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/ja.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -7350,3 +7350,6 @@ msgstr "テã‚スト;エディタ;"
|
||||
|
||||
#~ msgid "Vim"
|
||||
#~ msgstr ""
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/ja.sjis.po.CVE-2026-28421 vim82/src/po/ja.sjis.po
|
||||
--- vim82/src/po/ja.sjis.po.CVE-2026-28421 2021-03-22 10:02:43.000000000 +0100
|
||||
+++ vim82/src/po/ja.sjis.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -7350,3 +7350,6 @@ msgstr "ƒeƒLƒXƒg;ƒGƒfƒBƒ^;"
|
||||
|
||||
#~ msgid "Vim"
|
||||
#~ msgstr ""
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/ko.po.CVE-2026-28421 vim82/src/po/ko.po
|
||||
--- vim82/src/po/ko.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/ko.po 2026-03-19 10:42:50.120590463 +0100
|
||||
@@ -7002,3 +7002,6 @@ msgstr ""
|
||||
"C ¼Ò½º (*.c, *.h)\t*.c;*.h\n"
|
||||
"C++ ¼Ò½º (*.cpp, *.hpp)\t*.cpp;*.hpp\n"
|
||||
"Vim ÆÄÀÏ (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/ko.UTF-8.po.CVE-2026-28421 vim82/src/po/ko.UTF-8.po
|
||||
--- vim82/src/po/ko.UTF-8.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/ko.UTF-8.po 2026-03-19 10:42:50.120259142 +0100
|
||||
@@ -7002,3 +7002,6 @@ msgstr ""
|
||||
"C 소스 (*.c, *.h)\t*.c;*.h\n"
|
||||
"C++ 소스 (*.cpp, *.hpp)\t*.cpp;*.hpp\n"
|
||||
"Vim 파ì<C592>¼ (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/lv.po.CVE-2026-28421 vim82/src/po/lv.po
|
||||
--- vim82/src/po/lv.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/lv.po 2026-03-19 10:42:50.120824441 +0100
|
||||
@@ -279,3 +279,6 @@ msgstr "E442: Nevar sadalÄ«t kreiso augÅ
|
||||
#, c-format
|
||||
msgid "E447: Can't find file \"%s\" in path"
|
||||
msgstr "E447: Failu \"%s\" ceļÄ<C2BC> nevar atrast"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/nb.po.CVE-2026-28421 vim82/src/po/nb.po
|
||||
--- vim82/src/po/nb.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/nb.po 2026-03-19 10:42:50.120985413 +0100
|
||||
@@ -6121,3 +6121,6 @@ msgstr "Søket traff TOPPEN, fortsetter f
|
||||
|
||||
msgid "search hit BOTTOM, continuing at TOP"
|
||||
msgstr "Søket traff BUNNEN, fortsetter fra TOPPEN"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/nl.po.CVE-2026-28421 vim82/src/po/nl.po
|
||||
--- vim82/src/po/nl.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/nl.po 2026-03-19 10:42:50.121281247 +0100
|
||||
@@ -5830,3 +5830,6 @@ msgstr "\" Druk op <Enter> op een index
|
||||
|
||||
msgid "\" Hit <Space> on a \"set\" line to refresh it."
|
||||
msgstr "\" Druk op <Spatie> op een \"set\" regel om te verversen."
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/no.po.CVE-2026-28421 vim82/src/po/no.po
|
||||
--- vim82/src/po/no.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/no.po 2026-03-19 10:42:50.121569427 +0100
|
||||
@@ -6121,3 +6121,6 @@ msgstr "Søket traff TOPPEN, fortsetter f
|
||||
|
||||
msgid "search hit BOTTOM, continuing at TOP"
|
||||
msgstr "Søket traff BUNNEN, fortsetter fra TOPPEN"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/pl.cp1250.po.CVE-2026-28421 vim82/src/po/pl.cp1250.po
|
||||
--- vim82/src/po/pl.cp1250.po.CVE-2026-28421 2021-03-22 10:02:43.000000000 +0100
|
||||
+++ vim82/src/po/pl.cp1250.po 2026-03-19 10:42:50.122232088 +0100
|
||||
@@ -6860,3 +6860,6 @@ msgstr ""
|
||||
|
||||
#~ msgid "E569: maximum number of cscope connections reached"
|
||||
#~ msgstr "E569: wyczerpano maksymaln¹ liczbê po³¹czeñ cscope"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/pl.po.CVE-2026-28421 vim82/src/po/pl.po
|
||||
--- vim82/src/po/pl.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/pl.po 2026-03-19 10:42:50.122584749 +0100
|
||||
@@ -6860,3 +6860,6 @@ msgstr ""
|
||||
|
||||
#~ msgid "E569: maximum number of cscope connections reached"
|
||||
#~ msgstr "E569: wyczerpano maksymaln± liczbê po³±czeñ cscope"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/pl.UTF-8.po.CVE-2026-28421 vim82/src/po/pl.UTF-8.po
|
||||
--- vim82/src/po/pl.UTF-8.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/pl.UTF-8.po 2026-03-19 10:42:50.121888304 +0100
|
||||
@@ -6860,3 +6860,6 @@ msgstr ""
|
||||
|
||||
#~ msgid "E569: maximum number of cscope connections reached"
|
||||
#~ msgstr "E569: wyczerpano maksymalną liczbę połączeń cscope"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/pt_BR.po.CVE-2026-28421 vim82/src/po/pt_BR.po
|
||||
--- vim82/src/po/pt_BR.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/pt_BR.po 2026-03-19 10:42:50.122933262 +0100
|
||||
@@ -7005,3 +7005,6 @@ msgid ""
|
||||
msgstr ""
|
||||
"Falha ao definir path: sys.path não é uma lista\n"
|
||||
"Você deve adicionar vim.VIM_SPECIAL_PATH ao sys.path"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/ru.cp1251.po.CVE-2026-28421 vim82/src/po/ru.cp1251.po
|
||||
--- vim82/src/po/ru.cp1251.po.CVE-2026-28421 2021-03-22 10:02:43.000000000 +0100
|
||||
+++ vim82/src/po/ru.cp1251.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -7482,3 +7482,6 @@ msgstr "gvim"
|
||||
|
||||
msgid "Vim"
|
||||
msgstr "Vim"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/ru.po.CVE-2026-28421 vim82/src/po/ru.po
|
||||
--- vim82/src/po/ru.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/ru.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -7482,3 +7482,6 @@ msgstr "gvim"
|
||||
|
||||
msgid "Vim"
|
||||
msgstr "Vim"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/sk.cp1250.po.CVE-2026-28421 vim82/src/po/sk.cp1250.po
|
||||
--- vim82/src/po/sk.cp1250.po.CVE-2026-28421 2021-03-22 10:02:43.000000000 +0100
|
||||
+++ vim82/src/po/sk.cp1250.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -5776,3 +5776,6 @@ msgstr "h¾adanie dosiahlo zaèiatok, pokr
|
||||
msgid "search hit BOTTOM, continuing at TOP"
|
||||
msgstr "h¾adanie dosiahlo koniec, pokraèovanie od zaèiatku"
|
||||
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/sk.po.CVE-2026-28421 vim82/src/po/sk.po
|
||||
--- vim82/src/po/sk.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/sk.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -5776,3 +5776,6 @@ msgstr "hµadanie dosiahlo zaèiatok, pokr
|
||||
msgid "search hit BOTTOM, continuing at TOP"
|
||||
msgstr "hµadanie dosiahlo koniec, pokraèovanie od zaèiatku"
|
||||
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/sr.po.CVE-2026-28421 vim82/src/po/sr.po
|
||||
--- vim82/src/po/sr.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/sr.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -9566,3 +9566,6 @@ msgstr "име MzScheme динамичк
|
||||
|
||||
msgid "name of the MzScheme GC dynamic library"
|
||||
msgstr "име MzScheme GC динамичке библиотеке"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/sv.po.CVE-2026-28421 vim82/src/po/sv.po
|
||||
--- vim82/src/po/sv.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/sv.po 2026-03-19 10:42:50.125487116 +0100
|
||||
@@ -6103,3 +6103,6 @@ msgstr "sökning nådde TOPPEN, fortsätter
|
||||
|
||||
msgid "search hit BOTTOM, continuing at TOP"
|
||||
msgstr "sökning nådde BOTTEN, forsätter vid TOPPEN"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/tr.po.CVE-2026-28421 vim82/src/po/tr.po
|
||||
--- vim82/src/po/tr.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/tr.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -9368,3 +9368,6 @@ msgstr "MzScheme devingen kitaplığınÄ
|
||||
|
||||
msgid "name of the MzScheme GC dynamic library"
|
||||
msgstr "MzScheme GC devingen kitaplığının adı"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/uk.cp1251.po.CVE-2026-28421 vim82/src/po/uk.cp1251.po
|
||||
--- vim82/src/po/uk.cp1251.po.CVE-2026-28421 2021-03-22 10:02:43.000000000 +0100
|
||||
+++ vim82/src/po/uk.cp1251.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -7324,3 +7324,6 @@ msgstr ""
|
||||
"Ïåðøîêîä C (*.c, *.h)\t*.c;*.h\n"
|
||||
"Ïåðøîêîä C++ (*.cpp, *.hpp)\t*.cpp;*.hpp\n"
|
||||
"Ôàéëè Vim (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/uk.po.CVE-2026-28421 vim82/src/po/uk.po
|
||||
--- vim82/src/po/uk.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/uk.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -7324,3 +7324,6 @@ msgstr ""
|
||||
"Першокод C (*.c, *.h)\t*.c;*.h\n"
|
||||
"Першокод C++ (*.cpp, *.hpp)\t*.cpp;*.hpp\n"
|
||||
"Файли Vim (*.vim, _vimrc, _gvimrc)\t*.vim;_vimrc;_gvimrc\n"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/vi.po.CVE-2026-28421 vim82/src/po/vi.po
|
||||
--- vim82/src/po/vi.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/vi.po 2026-03-19 10:42:50.127177964 +0100
|
||||
@@ -5155,3 +5155,6 @@ msgstr "E449: Nháºn được má»™t biá»
|
||||
|
||||
msgid "E463: Region is guarded, cannot modify"
|
||||
msgstr "E463: Không thể thay đổi vùng đã được bảo vệ"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/zh_CN.cp936.po.CVE-2026-28421 vim82/src/po/zh_CN.cp936.po
|
||||
--- vim82/src/po/zh_CN.cp936.po.CVE-2026-28421 2021-03-22 10:02:43.000000000 +0100
|
||||
+++ vim82/src/po/zh_CN.cp936.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -6097,3 +6097,6 @@ msgstr "ÒѲéÕÒµ½Îļþ½á⣬ÔÙ´Ó¿ªÍ·¼ÌÐø²é
|
||||
|
||||
#~ msgid "with BeOS GUI."
|
||||
#~ msgstr "ʹÓà BeOS ͼÐνçÃæ¡£"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/zh_CN.po.CVE-2026-28421 vim82/src/po/zh_CN.po
|
||||
--- vim82/src/po/zh_CN.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/zh_CN.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -6097,3 +6097,6 @@ msgstr "ÒѲéÕÒµ½Îļþ½á⣬ÔÙ´Ó¿ªÍ·¼ÌÐø²é
|
||||
|
||||
#~ msgid "with BeOS GUI."
|
||||
#~ msgstr "ʹÓà BeOS ͼÐνçÃæ¡£"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/zh_CN.UTF-8.po.CVE-2026-28421 vim82/src/po/zh_CN.UTF-8.po
|
||||
--- vim82/src/po/zh_CN.UTF-8.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/zh_CN.UTF-8.po 2026-03-19 10:52:18.095330396 +0100
|
||||
@@ -6097,3 +6097,6 @@ msgstr "已查找到文件结尾,å†<C3A5>ä»
|
||||
|
||||
#~ msgid "with BeOS GUI."
|
||||
#~ msgstr "使用 BeOS 图形界é<C592>¢ã€‚"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/zh_TW.po.CVE-2026-28421 vim82/src/po/zh_TW.po
|
||||
--- vim82/src/po/zh_TW.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/zh_TW.po 2026-03-19 10:42:50.128612401 +0100
|
||||
@@ -5223,3 +5223,6 @@ msgstr "E463: °Ï°ì³Q«OÅ@¡AµLªk×§ï"
|
||||
|
||||
#~ msgid "Retrieve next symbol"
|
||||
#~ msgstr "Ū¨ú: ±q¤UÓ symbol"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
diff -up vim82/src/po/zh_TW.UTF-8.po.CVE-2026-28421 vim82/src/po/zh_TW.UTF-8.po
|
||||
--- vim82/src/po/zh_TW.UTF-8.po.CVE-2026-28421 2021-03-22 10:02:42.000000000 +0100
|
||||
+++ vim82/src/po/zh_TW.UTF-8.po 2026-03-19 10:42:50.128380597 +0100
|
||||
@@ -5230,3 +5230,6 @@ msgstr "E463: å<>€åŸŸè¢«ä¿<C3A4>è·ï¼Œç„¡æ³•ä¿
|
||||
|
||||
#~ msgid "Retrieve next symbol"
|
||||
#~ msgstr "讀å<E282AC>–: 從下個 symbol"
|
||||
+
|
||||
+msgid "???ILLEGAL BLOCK NUMBER"
|
||||
+msgstr ""
|
||||
10
vim.spec
10
vim.spec
@ -164,6 +164,13 @@ Patch3059: 0001-patch-9.1.2133-Another-case-of-buffer-overflow-with-.patch
|
||||
Patch3060: 0001-runtime-netrw-upstream-snapshot-of-v179.patch
|
||||
Patch3061: 0001-patch-9.2.0073-security-possible-command-injection-u.patch
|
||||
Patch3062: 0001-patch-9.2.0089-netrw-does-not-take-port-into-account.patch
|
||||
# RHEL-155423 CVE-2026-28421 vim: Vim: Denial of service and information disclosure via crafted swap file
|
||||
# 0001-patch-9.0.1477-crash-when-recovering-from-corrupted-.patch - adds check for max page count, which fixes
|
||||
# crash which happens after applying 0001-patch-9.2.0077-security-Crash-when-recovering-a-corr.patch
|
||||
# 0001-patch-9.2.0077-security-Crash-when-recovering-a-corr.patch - validates line count and page count from
|
||||
# untrusted swap file before passing it to read and allocation functions
|
||||
Patch3063: 0001-patch-9.0.1477-crash-when-recovering-from-corrupted-.patch
|
||||
Patch3064: 0001-patch-9.2.0077-security-Crash-when-recovering-a-corr.patch
|
||||
|
||||
|
||||
# gcc is no longer in buildroot by default
|
||||
@ -414,6 +421,8 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk
|
||||
%patch -P 3060 -p1 -b .validatehostname
|
||||
%patch -P 3061 -p1 -b .CVE-2026-28417
|
||||
%patch -P 3062 -p1 -b .validateportnum
|
||||
%patch -P 3063 -p1 -b .check-page-count
|
||||
%patch -P 3064 -p1 -b .CVE-2026-28421
|
||||
|
||||
%build
|
||||
cd src
|
||||
@ -968,6 +977,7 @@ touch %{buildroot}/%{_datadir}/%{name}/vimfiles/doc/tags
|
||||
%changelog
|
||||
* Thu Mar 19 2026 Zdenek Dohnal <zdohnal@redhat.com> - 2:8.2.2637-26
|
||||
- RHEL-155438 CVE-2026-28417 vim: Vim: Arbitrary code execution via OS command injection in the netrw plugin
|
||||
- RHEL-155423 CVE-2026-28421 vim: Vim: Denial of service and information disclosure via crafted swap file
|
||||
|
||||
* Tue Feb 10 2026 Zdenek Dohnal <zdohnal@redhat.com> - 2:8.2.2637-25
|
||||
- RHEL-147941 CVE-2026-25749 vim: Heap Overflow in Vim
|
||||
|
||||
Loading…
Reference in New Issue
Block a user