dnf:remove patch about pidfile

This commit is contained in:
chenhaxing 2023-07-14 11:36:39 +08:00
parent a574a2343e
commit ca82c61220
5 changed files with 7 additions and 153 deletions

View File

@ -1,25 +0,0 @@
From 997310fff83c3701ffc5c3835979732b130679c0 Mon Sep 17 00:00:00 2001
From: zhangrui <zhangrui182@huawei.com>
Date: Wed, 29 Dec 2021 14:59:18 +0800
Subject: [PATCH] adapt-test-another-process
---
tests/test_lock.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/test_lock.py b/tests/test_lock.py
index ce9806b..c075005 100644
--- a/tests/test_lock.py
+++ b/tests/test_lock.py
@@ -112,7 +112,7 @@ class ProcessLockTest(tests.support.TestCase):
with l1:
process.start()
process.join()
- self.assertIsInstance(process.queue.get(), ProcessLockError)
+ self.assertEqual(process.queue.empty(), True)
def test_another_process_blocking(self):
l1 = build_lock(blocking=True)
--
2.27.0

View File

@ -3,18 +3,14 @@
Name: dnf
Version: 4.14.0
Release: 14
Release: 15
Summary: A software package manager that manages packages on Linux distributions.
License: GPLv2+ and GPLv2 and GPL
URL: https://github.com/rpm-software-management/dnf
Source0: https://github.com/rpm-software-management/dnf/archive/%{version}/%{name}-%{version}.tar.gz
Patch9000: unlock-pidfile-if-current-proccess-is-NOT-dnf.patch
Patch9001: fix-pid-file-residue.patch
Patch9002: add-rpm-transaction-debuginfo.patch
Patch9003: adapt-test-another-process.patch
Patch9004: fix-dnf-history-undo-error-when-history-sqlite-missing.patch
Patch9005: huawei-lock-file-add-verify-parameter.patch
%if 0%{?check_target_before_unlink}
Patch9006: get-lockfile-exists-before-unlick.patch
@ -256,6 +252,12 @@ popd
%{_mandir}/man8/%{name}-automatic.8*
%changelog
* Fri Jul 14 2023 chenhaixing <chenhaixing@huawei.com> - 4.14.0-15
- Type:bugfix
- CVE:NA
- SUG:NA
- DESC:dnf:remove patch about pidfile
* Tue Jun 27 2023 chenhaixing <chenhaixing@huawei.com> - 4.14.0-14
- Type:bugfix
- CVE:NA

View File

@ -1,50 +0,0 @@
From 0dfb26f901976a585ed29585d5cae694a11360d7 Mon Sep 17 00:00:00 2001
From: zhangrui <zhangrui182@huawei.com>
Dare: Mon, 21 Feb 2022 11:18:06 +0800
Subject: [PATCH] fix-pid-file-residue
---
dnf/lock.py | 25 ++++++++++++-------------
1 file changed, 12 insertions(+), 13 deletions(-)
diff -urNp a/dnf/lock.py b/dnf/lock.py
--- a/dnf/lock.py 2020-07-14 20:33:25.746000000 +0800
+++ b/dnf/lock.py 2020-07-14 20:51:17.378000000 +0800
@@ -108,26 +108,25 @@ class ProcessLock(object):
# already locked by this process
return pid
+ if not os.access('/proc/%d/stat' % old_pid, os.F_OK):
+ # locked by a dead process, write our pid
+ os.lseek(fd, 0, os.SEEK_SET)
+ os.ftruncate(fd, 0)
+ os.write(fd, str(pid).encode('utf-8'))
+ return pid
+
try:
with open('/proc/%d/status' % old_pid) as f:
- for line in f:
- if not re.match(r'Name:(.*)(dnf|yum)$', line, re.I):
- os.write(fd, str(pid).encode('utf-8'))
- return pid
- except Exception as e:
+ if not re.findall(r'Name:(.*)(dnf|yum)', f.read(), re.I):
+ os.write(fd, str(pid).encode('utf-8'))
+ return pid
+ except OSError as e:
msg = _('Malformed lock file found: %s.\n'
'But pid in lock file is invalid '
'Ensure no other dnf/yum process is running and '
'remove the lock file manually.') % (self.target)
raise LockError(msg)
- if not os.access('/proc/%d/stat' % old_pid, os.F_OK):
- # locked by a dead process, write our pid
- os.lseek(fd, 0, os.SEEK_SET)
- os.ftruncate(fd, 0)
- os.write(fd, str(pid).encode('utf-8'))
- return pid
-
return old_pid
finally:

View File

@ -1,29 +0,0 @@
From ec8644e42ec2e0d0f98ea1aee3859b2c510f0cc0 Mon Sep 17 00:00:00 2001
From: chenhaixing <chenhaixing@huawei.com>
Date: Sat, 4 Jun 2022 17:49:53 +0800
Subject: [PATCH] verify-parameter
---
dnf/lock.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/dnf/lock.py b/dnf/lock.py
index ab05a3b..12378ec 100644
--- a/dnf/lock.py
+++ b/dnf/lock.py
@@ -116,7 +116,12 @@ class ProcessLock(object):
return pid
try:
- with open('/proc/%d/status' % old_pid) as f:
+ old_pid_path = f'/proc/{old_pid}/status'
+ true_old_pid_path = os.path.realpath(old_pid_path)
+ if not true_old_pid_path.startswith("/proc/"):
+ return old_pid
+
+ with open(true_old_pid_path) as f:
if not re.findall(r'Name:(.*)(dnf|yum)', f.read(), re.I):
os.write(fd, str(pid).encode('utf-8'))
return pid
--
2.27.0

View File

@ -1,44 +0,0 @@
From 7438ca37b6e688637a87cbdc87490e70a61e1829 Mon Sep 17 00:00:00 2001
From: fengtao40 <fengtao40@huawei.com>
Date: Sat, 13 Jun 2020 16:54:09 +0800
Subject: [PATCH] unlock-pidfile-if-current-proccess-is-NOT-dnf
---
dnf/lock.py | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/dnf/lock.py b/dnf/lock.py
index 13d8c27..589aa0a 100644
--- a/dnf/lock.py
+++ b/dnf/lock.py
@@ -32,6 +32,7 @@ import logging
import os
import threading
import time
+import re
logger = logging.getLogger("dnf")
@@ -106,6 +107,19 @@ class ProcessLock(object):
if old_pid == pid:
# already locked by this process
return pid
+
+ try:
+ with open('/proc/%d/status' % old_pid) as f:
+ for line in f:
+ if not re.match(r'Name:(.*)(dnf|yum)$', line, re.I):
+ os.write(fd, str(pid).encode('utf-8'))
+ return pid
+ except Exception as e:
+ msg = _('Malformed lock file found: %s.\n'
+ 'But pid in lock file is invalid '
+ 'Ensure no other dnf/yum process is running and '
+ 'remove the lock file manually.') % (self.target)
+ raise LockError(msg)
if not os.access('/proc/%d/stat' % old_pid, os.F_OK):
# locked by a dead process, write our pid
--
2.18.2