summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKen Raeburn <raeburn@mit.edu>1999-09-01 21:50:32 +0000
committerKen Raeburn <raeburn@mit.edu>1999-09-01 21:50:32 +0000
commit6772cbcb5be8aa088e5bcfbe1db78edb83fd07d7 (patch)
tree4d1bf12074e361422b682fd61f66e0d5ed734c3c /src
parentcdb1b0fc4869d3a6362b6c8f3bed7b6644d9a926 (diff)
downloadkrb5-6772cbcb5be8aa088e5bcfbe1db78edb83fd07d7.tar.gz
krb5-6772cbcb5be8aa088e5bcfbe1db78edb83fd07d7.tar.xz
krb5-6772cbcb5be8aa088e5bcfbe1db78edb83fd07d7.zip
jaltman's principal-name check from 1.1 branch, indentation fixed
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@11776 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/appl/telnet/libtelnet/ChangeLog4
-rw-r--r--src/appl/telnet/libtelnet/kerberos5.c27
2 files changed, 29 insertions, 2 deletions
diff --git a/src/appl/telnet/libtelnet/ChangeLog b/src/appl/telnet/libtelnet/ChangeLog
index c3a779a42f..61e3fc8e31 100644
--- a/src/appl/telnet/libtelnet/ChangeLog
+++ b/src/appl/telnet/libtelnet/ChangeLog
@@ -1,3 +1,7 @@
+1999-08-31 17:28 Jeffrey Altman <jaltman@columbia.edu>
+
+ * kerberos5.c: Ensure that only "host" service tickets are accepted.
+
Wed Feb 3 22:59:27 1999 Theodore Y. Ts'o <tytso@mit.edu>
* kerberos5.c: Increase size of str_data so that we can accept
diff --git a/src/appl/telnet/libtelnet/kerberos5.c b/src/appl/telnet/libtelnet/kerberos5.c
index 73b2c8780f..3fa9ca43b4 100644
--- a/src/appl/telnet/libtelnet/kerberos5.c
+++ b/src/appl/telnet/libtelnet/kerberos5.c
@@ -377,7 +377,7 @@ kerberos5_is(ap, data, cnt)
#ifdef ENCRYPTION
Session_Key skey;
#endif
- char errbuf[128];
+ char errbuf[320];
char *name;
char *getenv();
krb5_data inbuf;
@@ -423,6 +423,29 @@ kerberos5_is(ap, data, cnt)
(void) strcat(errbuf, error_message(r));
goto errout;
}
+
+ /*
+ * 256 bytes should be much larger than any reasonable
+ * first component of a service name especially since
+ * the default is of length 4.
+ */
+ if (krb5_princ_component(telnet_context,ticket->server,0)->length < 256) {
+ char princ[256];
+ strncpy(princ,
+ krb5_princ_component(telnet_context, ticket->server,0)->data,
+ krb5_princ_component(telnet_context, ticket->server,0)->length);
+ princ[krb5_princ_component(telnet_context,
+ ticket->server,0)->length] = '\0';
+ if (strcmp("host", princ)) {
+ (void) sprintf(errbuf, "incorrect service name: \"%s\" != \"%s\"",
+ princ, "host");
+ goto errout;
+ }
+ } else {
+ (void) strcpy(errbuf, "service name too long");
+ goto errout;
+ }
+
r = krb5_auth_con_getauthenticator(telnet_context,
auth_context,
&authenticator);
@@ -557,7 +580,7 @@ kerberos5_is(ap, data, cnt)
errout:
{
- char eerrbuf[128+9];
+ char eerrbuf[329];
strcpy(eerrbuf, "telnetd: ");
strcat(eerrbuf, errbuf);