]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Fix KDC to drop repeated in-progress requests
authorSarah Day <sarahday@mit.edu>
Mon, 15 Aug 2016 20:11:31 +0000 (16:11 -0400)
committerTom Yu <tlyu@mit.edu>
Fri, 2 Sep 2016 22:30:32 +0000 (18:30 -0400)
When a KDC receives a repeated request while the original request is
still in progress, it is supposed to be to drop the request.  Commit
f07760088b72a11c54dd72efbc5739f231a4d4b0 introduced a bug in this
logic, causing the KDC to instead send an empty reply.  In
kdc_check_lookaside(), return a NULL reply_packet for empty entries,
restoring the expected behavior.

[ghudson@mit.edu: edited commit message, added a comment]

(cherry picked from commit 847fc7b3caa823c219c97cc307ccb8d7d519a20f)

ticket: 8477
version_fixed: 1.13.7

src/kdc/replay.c

index 3eee6e8d4f3590fe30994574416da325ac3130b8..05b51990b4fd4c0fd29a5f1cd195a2c1c33809f8 100644 (file)
@@ -177,6 +177,11 @@ kdc_check_lookaside(krb5_context kcontext, krb5_data *req_packet,
 
     e->num_hits++;
     hits++;
+
+    /* Leave *reply_packet_out as NULL for an in-progress entry. */
+    if (e->reply_packet.length == 0)
+        return TRUE;
+
     return (krb5_copy_data(kcontext, &e->reply_packet,
                            reply_packet_out) == 0);
 }