修复sss_cli_check_socket函数存在的pid回绕问题
修复问题:https://gitee.com/src-openeuler/sssd/issues/I6HZQ8?from=project-issue
This commit is contained in:
parent
aaeb3aec57
commit
4648375407
38
Fix-pid-wrapping-in-sss_cli_check_socket.patch
Normal file
38
Fix-pid-wrapping-in-sss_cli_check_socket.patch
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
diff -Naur sssd-2.8.2/src/sss_client/common.c sssd-2.8.2-b/src/sss_client/common.c
|
||||||
|
--- sssd-2.8.2/src/sss_client/common.c 2023-03-09 14:58:11.000000000 +0800
|
||||||
|
+++ sssd-2.8.2-b/src/sss_client/common.c 2023-03-09 15:02:20.000000000 +0800
|
||||||
|
@@ -664,21 +664,28 @@
|
||||||
|
int timeout)
|
||||||
|
{
|
||||||
|
static pid_t mypid;
|
||||||
|
- struct stat mysb;
|
||||||
|
+ static struct stat selfsb;
|
||||||
|
+ struct stat mypid_sb, myself_sb;
|
||||||
|
int mysd;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
- if (getpid() != mypid) {
|
||||||
|
- ret = fstat(sss_cli_sd, &mysb);
|
||||||
|
+ ret = lstat("/proc/self/", &myself_sb);
|
||||||
|
+
|
||||||
|
+ if (getpid() != mypid || (ret == 0 && myself_sb.st_ino != selfsb.st_ino)) {
|
||||||
|
+ ret = fstat(sss_cli_sd, &mypid_sb);
|
||||||
|
if (ret == 0) {
|
||||||
|
- if (S_ISSOCK(mysb.st_mode) &&
|
||||||
|
- mysb.st_dev == sss_cli_sb.st_dev &&
|
||||||
|
- mysb.st_ino == sss_cli_sb.st_ino) {
|
||||||
|
+ if (S_ISSOCK(mypid_sb.st_mode) &&
|
||||||
|
+ mypid_sb.st_dev == sss_cli_sb.st_dev &&
|
||||||
|
+ mypid_sb.st_ino == sss_cli_sb.st_ino) {
|
||||||
|
sss_cli_close_socket();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sss_cli_sd = -1;
|
||||||
|
mypid = getpid();
|
||||||
|
+ ret = lstat("/proc/self/", &selfsb);
|
||||||
|
+ if (ret) {
|
||||||
|
+ memset(&selfsb, 0, sizeof(selfsb));
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
/* check if the socket has been closed on the other side */
|
||||||
@ -7,6 +7,7 @@ URL: https://pagure.io/SSSD/sssd/
|
|||||||
Source0: https://github.com/SSSD/sssd/releases/download/%{version}/%{name}-%{version}.tar.gz
|
Source0: https://github.com/SSSD/sssd/releases/download/%{version}/%{name}-%{version}.tar.gz
|
||||||
|
|
||||||
Patch6000: MONITOR-fix-socket_activated-flag-initialization.patch
|
Patch6000: MONITOR-fix-socket_activated-flag-initialization.patch
|
||||||
|
Patch6001: Fix-pid-wrapping-in-sss_cli_check_socket.patch
|
||||||
|
|
||||||
Requires: python3-sssd = %{version}-%{release}
|
Requires: python3-sssd = %{version}-%{release}
|
||||||
Requires: libldb
|
Requires: libldb
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user