sysmaster/backport-fix-check-if-the-message-is-truncated.patch
huyubiao 8936fa02c5 sync patches from upstream,change the path of the unit,modify permissions for some directories and files
(cherry picked from commit ce9ff469b57f60130621bc293783bd3ac1fc92f2)
2023-08-05 18:15:53 +08:00

43 lines
1.4 KiB
Diff

From 403e74d159d0937e5e0f5c67a59483b8fce41890 Mon Sep 17 00:00:00 2001
From: licunlong <licunlong1@huawei.com>
Date: Fri, 14 Jul 2023 15:47:15 +0800
Subject: [PATCH] fix: check if the message is truncated
---
core/sysmaster/unit/notify.rs | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/core/sysmaster/unit/notify.rs b/core/sysmaster/unit/notify.rs
index f35ed91..4f3cc15 100644
--- a/core/sysmaster/unit/notify.rs
+++ b/core/sysmaster/unit/notify.rs
@@ -224,6 +224,12 @@ impl Notify {
let msgs = socket::recvmsg::<()>(self.rawfd(), &mut iov, Some(&mut space), flags)
.context(NixSnafu)?;
+ if msgs.flags.contains(MsgFlags::MSG_CTRUNC) {
+ return Err(Error::Nix {
+ source: nix::Error::EXFULL,
+ });
+ }
+
// check: peek == pop
let (received_cred, received_fds) = notify_trans_recvmsg(&msgs);
if get_pid_from_cred(&received_cred) != pid {
@@ -279,6 +285,12 @@ fn notify_peek_pid(fd: RawFd, flags: MsgFlags) -> Result<libc::pid_t> {
let msgs =
socket::recvmsg::<()>(fd, &mut iov, Some(&mut space), peek_flags).context(NixSnafu)?;
+ if msgs.flags.contains(MsgFlags::MSG_CTRUNC) {
+ return Err(Error::Nix {
+ source: nix::Error::EXFULL,
+ });
+ }
+
// get message information
let (received_cred, received_fds) = notify_trans_recvmsg(&msgs);
for fd in received_fds.iter() {
--
2.33.0