[242] in Kerberos-V5-bugs
Patch for kpasswd, improvement for kdc
daemon@ATHENA.MIT.EDU (Barry Jaspan)
Wed Nov 4 17:52:39 1992
Date: Wed, 4 Nov 92 17:48:02 -0500
From: "Barry Jaspan" <bjaspan@Athena.MIT.EDU>
To: krb5-bugs@Athena.MIT.EDU, kerberos@Athena.MIT.EDU
Cc: yuan@syl.dl.nec.com
Below are two patches. The first fixes a silly bug in kpasswd that
caused it to report "out of memory" every time it is run on some
machines. The second causes the kdc's AS_REP general handler to
include the client and server principal names in error messages. The
latter came in useful when I was trying to get kpasswd to work; I
didn't have a "kadmin/REALM" principal and was getting a "server not
found" error, but I had no way to find out *which* server wasn't
defined.
Barry Jaspan
diff -c -r5.1 kpasswd.c
*** 5.1 1992/09/30 14:33:37
--- kpasswd.c 1992/11/04 21:15:33
***************
*** 150,156 ****
arg = &arg2;
}
my_keyblock = (krb5_keyblock *)malloc(sizeof(**key));
! if (!*key) {
if (f_salt) xfree(salt.data);
if (arg != (struct v4_pwd_keyproc_arg *) keyseed)
memset((char *) arg->password.data, 0, arg->password.length);
--- 150,156 ----
arg = &arg2;
}
my_keyblock = (krb5_keyblock *)malloc(sizeof(**key));
! if (!my_keyblock) {
if (f_salt) xfree(salt.data);
if (arg != (struct v4_pwd_keyproc_arg *) keyseed)
memset((char *) arg->password.data, 0, arg->password.length);
diff -c -r5.32 do_as_req.c
*** 5.32 1992/09/30 14:06:19
--- do_as_req.c 1992/11/04 22:20:52
***************
*** 548,556 ****
krb5_error errpkt;
krb5_error_code retval;
krb5_data *scratch;
! syslog(LOG_INFO, "AS_REQ: %s while processing request",
! error_message(error+KRB5KDC_ERR_NONE));
errpkt.ctime = request->nonce;
errpkt.cusec = 0;
--- 548,581 ----
krb5_error errpkt;
krb5_error_code retval;
krb5_data *scratch;
+ char unparse_failed = 0, *cname = 0, *sname = 0;
! if (retval = krb5_unparse_name(request->client, &cname)) {
! syslog(LOG_INFO, "AS_REQ: %s while unparsing client name for error",
! error_message(retval));
! unparse_failed = 1;
! }
! if (retval = krb5_unparse_name(request->server, &sname)) {
! syslog(LOG_INFO, "AS_REQ: %s while unparsing server name for error",
! error_message(retval));
! unparse_failed = 2;
! }
!
! if (!unparse_failed)
! syslog(LOG_INFO, "AS_REQ: %s while processing request from %s for %s",
! error_message(error+KRB5KDC_ERR_NONE), cname, sname);
! else
! syslog(LOG_INFO, "AS_REQ: %s while processing request",
! error_message(error+KRB5KDC_ERR_NONE));
!
! switch (unparse_failed) {
! case 0:
! free(sname);
! case 2:
! free(cname);
! case 1:
! break;
! }
errpkt.ctime = request->nonce;
errpkt.cusec = 0;