2020-11-20 16:43:18 +00:00
|
|
|
From 35d041e432ea6d4611b232cc9bb72a36552eda27 Mon Sep 17 00:00:00 2001
|
2020-06-15 21:27:59 +00:00
|
|
|
From: Greg Hudson <ghudson@mit.edu>
|
|
|
|
Date: Wed, 4 Mar 2020 17:18:51 -0500
|
|
|
|
Subject: [PATCH] Use two queues for concurrent t_otp.py daemons
|
|
|
|
|
|
|
|
t_otp.py occasionally fails during the #8708 regression test, reading
|
|
|
|
a true answer instead of the expected false answer during the first
|
|
|
|
verify() call. Most likely the daemons are writing their answers to
|
|
|
|
the shared queue out of order. Use a separate queue for the second
|
|
|
|
daemon to ensure correct correlation of results.
|
|
|
|
|
|
|
|
(cherry picked from commit c03f67eefec05db19e84e889fab7c25904929633)
|
|
|
|
---
|
|
|
|
src/tests/t_otp.py | 7 ++++---
|
|
|
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/src/tests/t_otp.py b/src/tests/t_otp.py
|
|
|
|
index cba871a0f..c3b820a41 100755
|
|
|
|
--- a/src/tests/t_otp.py
|
|
|
|
+++ b/src/tests/t_otp.py
|
|
|
|
@@ -256,16 +256,17 @@ verify(daemon, queue, True, realm.user_princ, 'accept')
|
|
|
|
## tokens configured, with the first rejecting and the second
|
|
|
|
## accepting. With the bug, the KDC incorrectly rejects the request
|
|
|
|
## and then performs invalid memory accesses, most likely crashing.
|
|
|
|
+queue2 = Queue()
|
|
|
|
daemon1 = UDPRadiusDaemon(args=(server_addr, secret_file, 'accept1', queue))
|
|
|
|
-daemon2 = UnixRadiusDaemon(args=(socket_file, None, 'accept2', queue))
|
|
|
|
+daemon2 = UnixRadiusDaemon(args=(socket_file, None, 'accept2', queue2))
|
|
|
|
daemon1.start()
|
|
|
|
queue.get()
|
|
|
|
daemon2.start()
|
|
|
|
-queue.get()
|
|
|
|
+queue2.get()
|
|
|
|
oconf = '[' + otpconfig_1('udp') + ', ' + otpconfig_1('unix') + ']'
|
|
|
|
realm.run([kadminl, 'setstr', realm.user_princ, 'otp', oconf])
|
|
|
|
realm.kinit(realm.user_princ, 'accept2', flags=flags)
|
|
|
|
verify(daemon1, queue, False, realm.user_princ.split('@')[0], 'accept2')
|
|
|
|
-verify(daemon2, queue, True, realm.user_princ, 'accept2')
|
|
|
|
+verify(daemon2, queue2, True, realm.user_princ, 'accept2')
|
|
|
|
|
|
|
|
success('OTP tests')
|