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

@ -1,7 +1,10 @@
[Desktop Entry]
Name=Emacs
Name[ru]=Текстовый редактор Emacs
GenericName=Text Editor
GenericName[ru]=Текстовый редактор
Comment=Edit text
Comment[ru]=Редактирование текста
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++;
Exec=emacs %f

@ -5,7 +5,7 @@ Summary: GNU Emacs text editor
Name: emacs
Epoch: 1
Version: 27.2
Release: 10%{?dist}
Release: 9%{?dist}.inferit
License: GPLv3+ and CC0-1.0
URL: http://www.gnu.org/software/emacs/
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
Patch8: emacs-ruby-mode-local-command-injection-vulnerability.patch
Patch9: emacs-ob-latex-command-injection-vulnerability.patch
Patch10: emacs-org-link-expand-abbrev-unsafe-elisp.patch
BuildRequires: gcc
BuildRequires: atk-devel
BuildRequires: cairo-devel
@ -77,6 +75,7 @@ BuildRequires: jansson-devel
BuildRequires: systemd-devel
BuildRequires: gtk3-devel
BuildRequires: webkit2gtk3-devel
BuildRequires: gnupg2
@ -202,7 +201,6 @@ Development header files for Emacs.
%patch7 -p1 -b .htmlfontify-command-injection-vulnerability
%patch8 -p1 -b .ruby-mode-local-command-injection-vulnerability
%patch9 -p1 -b .ob-latex-command-injection-vulnerability
%patch10 -p1 -b .org-link-expand-abbrev-unsafe-elisp
autoconf
# We prefer our emacs.desktop file
@ -255,7 +253,7 @@ ln -s ../configure .
%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-modules --with-harfbuzz --with-cairo --with-json
--with-xwidgets --with-modules --with-harfbuzz --with-cairo --with-json
make bootstrap
%{setarch} %make_build
cd ..
@ -493,11 +491,14 @@ rm %{buildroot}%{_datadir}/icons/hicolor/scalable/mimetypes/emacs-document23.svg
%{_includedir}/emacs-module.h
%changelog
* Fri Aug 23 2024 Jacek Migacz <jmigacz@redhat.com> - 1:27.2-10
- org-link-expand-abbrev: Do not evaluate arbitrary unsafe Elisp code (CVE-2024-39331)
- Disable xwidgets (RHEL-33447)
* Mon Oct 09 2023 Sergey Cherevko <s.cherevko@msvsphere-os.ru> - 1:27.2-9.inferit
- Added Russian description for ArcMenu and gnome-software
- 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 htmlfontify.el command injection vulnerability (#2175179)
- Fix ruby-mode.el local command injection vulnerability (#2175142)

Loading…
Cancel
Save