Compare commits

...

No commits in common. 'c9' and 'i9-beta' have entirely different histories.
c9 ... i9-beta

@ -1,68 +0,0 @@
From f4cc61636947b5c2f0afc67174dd369fe3277aa8 Mon Sep 17 00:00:00 2001
From: Ihor Radchenko <yantar92@posteo.net>
Date: Tue, 18 Jun 2024 13:06:44 +0200
Subject: org-link-expand-abbrev: Do not evaluate arbitrary unsafe Elisp code
* lisp/org/ol.el (org-link-expand-abbrev): Refuse expanding %(...) link
abbrevs that specify unsafe function. Instead, display a warning, and
do not expand the abbrev. Clear all the text properties from the
returned link, to avoid any potential vulnerabilities caused by
properties that may contain arbitrary Elisp.
---
lisp/org/ol.el | 40 +++++++++++++++++++++++++++++-----------
1 file changed, 29 insertions(+), 11 deletions(-)
diff --git a/lisp/org/ol.el b/lisp/org/ol.el
index 7a7f4f5..8a556c7 100644
--- a/lisp/org/ol.el
+++ b/lisp/org/ol.el
@@ -1152,17 +1152,35 @@ Abbreviations are defined in `org-link-abbrev-alist'."
(if (not as)
link
(setq rpl (cdr as))
- (cond
- ((symbolp rpl) (funcall rpl tag))
- ((string-match "%(\\([^)]+\\))" rpl)
- (replace-match
- (save-match-data
- (funcall (intern-soft (match-string 1 rpl)) tag))
- t t rpl))
- ((string-match "%s" rpl) (replace-match (or tag "") t t rpl))
- ((string-match "%h" rpl)
- (replace-match (url-hexify-string (or tag "")) t t rpl))
- (t (concat rpl tag)))))))
+ ;; Drop any potentially dangerous text properties like
+ ;; `modification-hooks' that may be used as an attack vector.
+ (substring-no-properties
+ (cond
+ ((symbolp rpl) (funcall rpl tag))
+ ((string-match "%(\\([^)]+\\))" rpl)
+ (let ((rpl-fun-symbol (intern-soft (match-string 1 rpl))))
+ ;; Using `unsafep-function' is not quite enough because
+ ;; Emacs considers functions like `genenv' safe, while
+ ;; they can potentially be used to expose private system
+ ;; data to attacker if abbreviated link is clicked.
+ (if (or (eq t (get rpl-fun-symbol 'org-link-abbrev-safe))
+ (eq t (get rpl-fun-symbol 'pure)))
+ (replace-match
+ (save-match-data
+ (funcall (intern-soft (match-string 1 rpl)) tag))
+ t t rpl)
+ (org-display-warning
+ (format "Disabling unsafe link abbrev: %s
+You may mark function safe via (put '%s 'org-link-abbrev-safe t)"
+ rpl (match-string 1 rpl)))
+ (setq org-link-abbrev-alist-local (delete as org-link-abbrev-alist-local)
+ org-link-abbrev-alist (delete as org-link-abbrev-alist))
+ link
+ )))
+ ((string-match "%s" rpl) (replace-match (or tag "") t t rpl))
+ ((string-match "%h" rpl)
+ (replace-match (url-hexify-string (or tag "")) t t rpl))
+ (t (concat rpl tag))))))))
(defun org-link-open (link &optional arg)
"Open a link object LINK.
--
cgit v1.1

@ -5,7 +5,9 @@
<metadata_license>CC0-1.0</metadata_license> <metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0+</project_license> <project_license>GPL-3.0+</project_license>
<name>GNU Emacs</name> <name>GNU Emacs</name>
<name xml:lang="ru">Текстовый редактор GNU Emacs</name>
<summary>Edit text files, view pictures and binary files</summary> <summary>Edit text files, view pictures and binary files</summary>
<summary xml:lang="ru">Редактируйте текстовые файлы, просматривайте изображения и двоичные файлы</summary>
<description> <description>
<p> <p>
Emacs is a powerful, customizable, self-documenting, modeless Emacs is a powerful, customizable, self-documenting, modeless
@ -13,6 +15,12 @@
documents, source code of programs, web pages and XML documents, documents, source code of programs, web pages and XML documents,
but can also be used to display and edit binary files. but can also be used to display and edit binary files.
</p> </p>
<p xml:lang="ru">
Emacs - это мощный, настраиваемый, самодокументирующийся, немодальный
редактор. Он используется в основном для редактирования текста, включая текстовые
документы, исходный код программ, веб-страницы и XML-документы,
но также может использоваться для отображения и редактирования двоичных файлов.
</p>
<p> <p>
Emacs allows efficient editing of text with shortcuts which Emacs allows efficient editing of text with shortcuts which
allow operating on letters, words, sentences, and paragraphs as allow operating on letters, words, sentences, and paragraphs as
@ -23,6 +31,16 @@
(elisp) which can also be used to define further functions (elisp) which can also be used to define further functions
extending existing capabilities. extending existing capabilities.
</p> </p>
<p xml:lang="ru">
Emacs позволяет эффективно редактировать текст с помощью ярлыков, которые
позволяет работать с буквами, словами, предложениями и абзацами как
с едиными элементами. Это включает в себя как перемещение, так и операции
например, копирование, удаление, перемещение и вставка. Макросы могут быть
удобно определены для повторения последовательностей команд. Кроме
того, Emacs (частично) построен на языке сценариев
(elisp), который также может быть использован для определения дополнительных функций
расширение существующих возможностей.
</p>
<p> <p>
Emacs has extensive support for editing source code, including Emacs has extensive support for editing source code, including
programmable syntax highlighting, automatic indentation, source programmable syntax highlighting, automatic indentation, source
@ -31,12 +49,25 @@
invoke the compiler from within Emacs and easily move between invoke the compiler from within Emacs and easily move between
compiler output and corresponding positions in the source. compiler output and corresponding positions in the source.
</p> </p>
<p xml:lang="ru">
Emacs обладает обширной поддержкой редактирования исходного кода, включая
программируемую подсветку синтаксиса, автоматические отступы,
индексацию исходного кода, обзорные режимы и навигацию на основе языковых единиц,
таких как функции и блоки. Также можно вызвать компилятор из Emacs и легко перемещаться
между выводами компилятора и соответствующими позициями в исходном коде.
</p>
<p> <p>
Emacs has multiple modules which provide further functionality. Emacs has multiple modules which provide further functionality.
This provides the capability to read mail, news, browse This provides the capability to read mail, news, browse
pictures, read man and info pages, browse the web, execute pictures, read man and info pages, browse the web, execute
arbitrary programs, and more, without leaving the editor. arbitrary programs, and more, without leaving the editor.
</p> </p>
<p xml:lang="ru">
Emacs имеет несколько модулей, которые обеспечивают дополнительную функциональность.
Это обеспечивает возможность читать почту, новости, просматривать
фотографии, читайть справочные и информационные страницы, просматривайть веб-страницы, выполнять
произвольные программы и многое другое, не выходя из редактора.
</p>
</description> </description>
<screenshots> <screenshots>
<screenshot type="default" height="888" width="1595"> <screenshot type="default" height="888" width="1595">

@ -1,7 +1,10 @@
[Desktop Entry] [Desktop Entry]
Name=Emacs Name=Emacs
Name[ru]=Текстовый редактор Emacs
GenericName=Text Editor GenericName=Text Editor
GenericName[ru]=Текстовый редактор
Comment=Edit text Comment=Edit text
Comment[ru]=Редактирование текста
Comment[zh_TW]=編輯文字 Comment[zh_TW]=編輯文字
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++; MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=emacs %f Exec=emacs %f

@ -5,7 +5,7 @@ Summary: GNU Emacs text editor
Name: emacs Name: emacs
Epoch: 1 Epoch: 1
Version: 27.2 Version: 27.2
Release: 10%{?dist} Release: 9%{?dist}.inferit
License: GPLv3+ and CC0-1.0 License: GPLv3+ and CC0-1.0
URL: http://www.gnu.org/software/emacs/ URL: http://www.gnu.org/software/emacs/
Source0: https://ftp.gnu.org/gnu/emacs/emacs-%{version}.tar.xz Source0: https://ftp.gnu.org/gnu/emacs/emacs-%{version}.tar.xz
@ -33,8 +33,6 @@ Patch6: emacs-etags-local-command-injection-vulnerability.patch
Patch7: emacs-htmlfontify-command-injection-vulnerability.patch Patch7: emacs-htmlfontify-command-injection-vulnerability.patch
Patch8: emacs-ruby-mode-local-command-injection-vulnerability.patch Patch8: emacs-ruby-mode-local-command-injection-vulnerability.patch
Patch9: emacs-ob-latex-command-injection-vulnerability.patch Patch9: emacs-ob-latex-command-injection-vulnerability.patch
Patch10: emacs-org-link-expand-abbrev-unsafe-elisp.patch
BuildRequires: gcc BuildRequires: gcc
BuildRequires: atk-devel BuildRequires: atk-devel
BuildRequires: cairo-devel BuildRequires: cairo-devel
@ -77,6 +75,7 @@ BuildRequires: jansson-devel
BuildRequires: systemd-devel BuildRequires: systemd-devel
BuildRequires: gtk3-devel BuildRequires: gtk3-devel
BuildRequires: webkit2gtk3-devel
BuildRequires: gnupg2 BuildRequires: gnupg2
@ -202,7 +201,6 @@ Development header files for Emacs.
%patch7 -p1 -b .htmlfontify-command-injection-vulnerability %patch7 -p1 -b .htmlfontify-command-injection-vulnerability
%patch8 -p1 -b .ruby-mode-local-command-injection-vulnerability %patch8 -p1 -b .ruby-mode-local-command-injection-vulnerability
%patch9 -p1 -b .ob-latex-command-injection-vulnerability %patch9 -p1 -b .ob-latex-command-injection-vulnerability
%patch10 -p1 -b .org-link-expand-abbrev-unsafe-elisp
autoconf autoconf
# We prefer our emacs.desktop file # We prefer our emacs.desktop file
@ -255,7 +253,7 @@ ln -s ../configure .
%configure --with-dbus --with-gif --with-jpeg --with-png --with-rsvg \ %configure --with-dbus --with-gif --with-jpeg --with-png --with-rsvg \
--with-tiff --with-xft --with-xpm --with-x-toolkit=gtk3 --with-gpm=no \ --with-tiff --with-xft --with-xpm --with-x-toolkit=gtk3 --with-gpm=no \
--with-modules --with-harfbuzz --with-cairo --with-json --with-xwidgets --with-modules --with-harfbuzz --with-cairo --with-json
make bootstrap make bootstrap
%{setarch} %make_build %{setarch} %make_build
cd .. cd ..
@ -493,11 +491,14 @@ rm %{buildroot}%{_datadir}/icons/hicolor/scalable/mimetypes/emacs-document23.svg
%{_includedir}/emacs-module.h %{_includedir}/emacs-module.h
%changelog %changelog
* Fri Aug 23 2024 Jacek Migacz <jmigacz@redhat.com> - 1:27.2-10 * Mon Oct 09 2023 Sergey Cherevko <s.cherevko@msvsphere-os.ru> - 1:27.2-9.inferit
- org-link-expand-abbrev: Do not evaluate arbitrary unsafe Elisp code (CVE-2024-39331) - Added Russian description for ArcMenu and gnome-software
- Disable xwidgets (RHEL-33447) - Rebuilt for MSVSphere 9.3
* Fri Apr 14 2023 MSVSphere Packaging Team <packager@msvsphere.ru> - 1:27.2-9
- Rebuilt for MSVSphere 9.2 beta
* Sun Apr 02 2023 Jacek Migacz <jmigacz@redhat.com> - 1:27.2-9 * Sun Apr 2 2023 Jacek Migacz <jmigacz@redhat.com> - 1:27.2-9
- Fix etags local command injection vulnerability (#2175190) - Fix etags local command injection vulnerability (#2175190)
- Fix htmlfontify.el command injection vulnerability (#2175179) - Fix htmlfontify.el command injection vulnerability (#2175179)
- Fix ruby-mode.el local command injection vulnerability (#2175142) - Fix ruby-mode.el local command injection vulnerability (#2175142)

Loading…
Cancel
Save