Sophie

Sophie

distrib > Mageia > 5 > x86_64 > by-pkgid > 004fd25eb1d89e31fc9cddb571328f7f > files > 53

glibc-2.20-21.mga5.src.rpm

commit fda389c8f0311dd5786be91a7b54b9f935fcafa1
Author: Siddhesh Poyarekar <siddhesh@redhat.com>
Date:   Tue Oct 14 21:05:33 2014 +0530

    Fix infinite loop in check_pf (BZ #12926)
    
    The recvmsg could return 0 under some conditions and cause the
    make_request function to be stuck in an infinite loop.
    
    Thank you Jim King <jim.king@simplivity.com> for posting Paul's patch
    on the list.
---
 ChangeLog                          | 6 ++++++
 NEWS                               | 2 +-
 sysdeps/unix/sysv/linux/check_pf.c | 2 +-
 3 files changed, 8 insertions(+), 2 deletions(-)

#diff --git a/ChangeLog b/ChangeLog
#index e40ba1f..73db084 100644
#--- a/ChangeLog
#+++ b/ChangeLog
#@@ -1,3 +1,9 @@
#+2014-10-14  Paul Pluzhnikov  <ppluzhnikov@google.com>
#+
#+	[BZ #12926]
#+	* sysdeps/unix/sysv/linux/check_pf.c (make_request): Avoid
#+	infinite loop when __recvmsg returns 0.
#+
# 2014-10-10  Joseph Myers  <joseph@codesourcery.com>
# 
# 	* CANCEL-FCT-WAIVE: Remove file.
#diff --git a/NEWS b/NEWS
#index accc144..987f306 100644
#--- a/NEWS
#+++ b/NEWS
#@@ -9,7 +9,7 @@ Version 2.21
# 
# * The following bugs are resolved with this release:
# 
#-  6652, 14171, 17266, 17363, 17370, 17371, 17411, 17460.
#+  6652, 12926, 14171, 17266, 17363, 17370, 17371, 17411, 17460.
# 
# Version 2.20
# 
diff --git a/sysdeps/unix/sysv/linux/check_pf.c b/sysdeps/unix/sysv/linux/check_pf.c
index c7fd9b0..976f249 100644
--- a/sysdeps/unix/sysv/linux/check_pf.c
+++ b/sysdeps/unix/sysv/linux/check_pf.c
@@ -180,7 +180,7 @@ make_request (int fd, pid_t pid)
 	};
 
       ssize_t read_len = TEMP_FAILURE_RETRY (__recvmsg (fd, &msg, 0));
-      if (read_len < 0)
+      if (read_len <= 0)
 	goto out_fail2;
 
       if (msg.msg_flags & MSG_TRUNC)