Resolves rhbz#2212953 error with handling invalid utf-8 chars

Signed-off-by: Jonathan Wright <jonathan@almalinux.org>
This commit is contained in:
Jonathan Wright 2023-08-14 12:20:50 -05:00
parent b4d5456cc8
commit defb3fb650
2 changed files with 68 additions and 1 deletions

View File

@ -0,0 +1,63 @@
From 7860463eb5ccc844f1d580edd7f12496fb6923b3 Mon Sep 17 00:00:00 2001
From: Jonathan Wright <jonathan@almalinux.org>
Date: Mon, 14 Aug 2023 09:55:12 -0500
Subject: [PATCH] fixes error with handling invalid utf-8 chars in
needs-restarting
---
plugins/needs_restarting.py | 2 +-
tests/test_needs_restarting.py | 13 +++++++++++++
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/plugins/needs_restarting.py b/plugins/needs_restarting.py
index 1fedb73..d8ab0bc 100644
--- a/plugins/needs_restarting.py
+++ b/plugins/needs_restarting.py
@@ -73,7 +73,7 @@ def list_opened_files(uid):
try:
if uid is not None and uid != owner_uid(smaps):
continue
- with open(smaps, 'r') as smaps_file:
+ with open(smaps, 'r', errors='replace') as smaps_file:
lines = smaps_file.readlines()
except EnvironmentError:
logger.warning("Failed to read PID %d's smaps.", pid)
diff --git a/tests/test_needs_restarting.py b/tests/test_needs_restarting.py
index 0ad70a5..c021e06 100644
--- a/tests/test_needs_restarting.py
+++ b/tests/test_needs_restarting.py
@@ -1,3 +1,4 @@
+# coding: utf-8
# Copyright (C) 2014 Red Hat, Inc.
#
# This copyrighted material is made available to anyone wishing to use,
@@ -20,8 +21,10 @@ from __future__ import absolute_import
from __future__ import print_function
from __future__ import unicode_literals
+from unittest.mock import patch
import needs_restarting
import tests.support
+import tempfile
DEL_FILE = '3dcf000000-3dcf032000 r-xp 00000000 08:02 140759 ' \
' /usr/lib64/libXfont.so.1.4.1;5408628d (deleted)'
@@ -46,6 +49,16 @@ class NeedsRestartingTest(tests.support.TestCase):
self.assertTrue(ofile.deleted)
self.assertEqual(ofile.name, '/usr/lib64/libXfont.so.1.4.1;5408628d')
+ def test_list_opened_files_garbage_filename(self):
+ tempObj = tempfile.NamedTemporaryFile()
+ tempFile = tempObj.name
+ with open(tempFile, 'wb') as bogusFile:
+ bogusFile.write(b'151e7f7b7000-151e7f7b8000 r--p 00006000 fd:01 14744 /usr/lib64/lib\xe5Evil-13.37.so')
+ smaps = [[1234,tempObj.name]]
+ with patch("needs_restarting.list_smaps", return_value=smaps):
+ ofiles = list(needs_restarting.list_opened_files(None));
+ self.assertEqual(ofiles[0].presumed_name, '/usr/lib64/lib<69>Evil-13.37.so')
+
class OpenedFileTest(tests.support.TestCase):
def test_presumed_name(self):
--
2.41.0

View File

@ -34,7 +34,7 @@
Name: dnf-plugins-core Name: dnf-plugins-core
Version: 4.3.0 Version: 4.3.0
Release: 5%{?dist} Release: 5%{?dist}.alma.1
Summary: Core Plugins for DNF Summary: Core Plugins for DNF
License: GPLv2+ License: GPLv2+
URL: https://github.com/rpm-software-management/dnf-plugins-core URL: https://github.com/rpm-software-management/dnf-plugins-core
@ -44,6 +44,7 @@ Patch2: 0002-Add-a-warning-when-using-system-upgrade-on-RHEL.patch
Patch3: 0003-offline-upgrade-Add-security-filters.patch Patch3: 0003-offline-upgrade-Add-security-filters.patch
Patch4: 0004-system-upgrade-Show-warning-always-for-a-downstream.patch Patch4: 0004-system-upgrade-Show-warning-always-for-a-downstream.patch
Patch5: 0005-Update-translations.patch Patch5: 0005-Update-translations.patch
Patch6: 0006-Fix-issue-with-invalid-utf8.patch
BuildArch: noarch BuildArch: noarch
@ -820,6 +821,9 @@ ln -sf %{_mandir}/man1/%{yum_utils_subpackage_name}.1.gz %{buildroot}%{_mandir}/
%endif %endif
%changelog %changelog
* Mon Aug 14 2023 Jonathan Wright <jonathan@almalinux.org> - 4.3.0-5.alma.1
- Resolves rhbz#2231923 - Smaps file parsing in DNF's needs-restarting cannot handle garbage UTF-8-ish characters in smaps lines
* Wed Mar 15 2023 Marek Blaha <mblaha@redhat.com> - 4.3.0-5 * Wed Mar 15 2023 Marek Blaha <mblaha@redhat.com> - 4.3.0-5
- Update translations - Update translations