-
Notifications
You must be signed in to change notification settings - Fork 370
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix KDC null dereference on large TGS replies
For TGS requests, dispatch() doesn't set state->active_realm, which leads to a NULL dereference in finish_dispatch() if the reply is too big for UDP. Prior to commit 0a2f14f the active realm was a global and was set when process_tgs_req() called setup_server_realm(). Move TGS decoding out of process_tgs_req() so that we can set state->active_realm before any errors requiring response. Add a test case. [ghudson@mit.edu: edited commit message; added test case; reduced code duplication; removed server handle from process_tgs_req() parameters] ticket: 8666 tags: pullup target_version: 1.16-next target_version: 1.15-next
- Loading branch information
1 parent
90a1569
commit 6afa8b4
Showing
5 changed files
with
55 additions
and
42 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
#!/usr/bin/python | ||
from k5test import * | ||
|
||
# Set the maximum UDP reply size very low, so that all replies go | ||
# through the RESPONSE_TOO_BIG path. | ||
kdc_conf = {'kdcdefaults': {'kdc_max_dgram_reply_size': '10'}} | ||
realm = K5Realm(kdc_conf=kdc_conf, get_creds=False) | ||
|
||
msgs = ('Sending initial UDP request', | ||
'Received answer', | ||
'Request or response is too big for UDP; retrying with TCP', | ||
' to KRBTEST.COM (tcp only)', | ||
'Initiating TCP connection', | ||
'Sending TCP request', | ||
'Terminating TCP connection') | ||
realm.kinit(realm.user_princ, password('user'), expected_trace=msgs) | ||
realm.run([kvno, realm.host_princ], expected_trace=msgs) | ||
|
||
success('Large KDC replies') |