From: Siddhesh Poyarekar Date: Tue, 14 Oct 2014 15:35:33 +0000 (+0530) Subject: Fix infinite loop in check_pf (BZ #12926) X-Git-Tag: glibc-2.21~497 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fda389c8f0311dd5786be91a7b54b9f935fcafa1;p=thirdparty%2Fglibc.git 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 for posting Paul's patch on the list. --- diff --git a/ChangeLog b/ChangeLog index e40ba1f346c..73db0841e14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2014-10-14 Paul Pluzhnikov + + [BZ #12926] + * sysdeps/unix/sysv/linux/check_pf.c (make_request): Avoid + infinite loop when __recvmsg returns 0. + 2014-10-10 Joseph Myers * CANCEL-FCT-WAIVE: Remove file. diff --git a/NEWS b/NEWS index accc1441d6b..987f3066556 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 c7fd9b0376a..976f249e209 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)