summaryrefslogtreecommitdiffstats
path: root/contrib/ntp/libntp/ntp_worker.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2016-01-22 15:55:21 +0000
committerdelphij <delphij@FreeBSD.org>2016-01-22 15:55:21 +0000
commit0e1dba9a0aa72f6f27001a50552a8c67575da336 (patch)
treedbb1c1e8cb8058b52ef547a1f18b9751613aeb04 /contrib/ntp/libntp/ntp_worker.c
parent7a67cba86b1ced9982ebb0dd11a9a987829efe9e (diff)
downloadFreeBSD-src-0e1dba9a0aa72f6f27001a50552a8c67575da336.zip
FreeBSD-src-0e1dba9a0aa72f6f27001a50552a8c67575da336.tar.gz
MFC r294554: MFV r294491: ntp 4.2.8p6.
Security: CVE-2015-7973, CVE-2015-7974, CVE-2015-7975 Security: CVE-2015-7976, CVE-2015-7977, CVE-2015-7978 Security: CVE-2015-7979, CVE-2015-8138, CVE-2015-8139 Security: CVE-2015-8140, CVE-2015-8158 With hat: so
Diffstat (limited to 'contrib/ntp/libntp/ntp_worker.c')
-rw-r--r--contrib/ntp/libntp/ntp_worker.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/contrib/ntp/libntp/ntp_worker.c b/contrib/ntp/libntp/ntp_worker.c
index f5642e1..087f06c 100644
--- a/contrib/ntp/libntp/ntp_worker.c
+++ b/contrib/ntp/libntp/ntp_worker.c
@@ -27,6 +27,8 @@ blocking_child ** blocking_children;
size_t blocking_children_alloc;
int worker_per_query; /* boolean */
int intres_req_pending;
+volatile u_int blocking_child_ready_seen;
+volatile u_int blocking_child_ready_done;
#ifndef HAVE_IO_COMPLETION_PORT
@@ -262,6 +264,31 @@ process_blocking_resp(
req_child_exit(c);
}
+void
+harvest_blocking_responses(void)
+{
+ int idx;
+ blocking_child* cp;
+ u_int scseen, scdone;
+
+ scseen = blocking_child_ready_seen;
+ scdone = blocking_child_ready_done;
+ if (scdone != scseen) {
+ blocking_child_ready_done = scseen;
+ for (idx = 0; idx < blocking_children_alloc; idx++) {
+ cp = blocking_children[idx];
+ if (NULL == cp)
+ continue;
+ scseen = cp->resp_ready_seen;
+ scdone = cp->resp_ready_done;
+ if (scdone != scseen) {
+ cp->resp_ready_done = scseen;
+ process_blocking_resp(cp);
+ }
+ }
+ }
+}
+
/*
* blocking_child_common runs as a forked child or a thread
OpenPOWER on IntegriCloud