[729] in Kerberos-V5-bugs
the following diffs are needed to compile krb5b4p2 under BSDI 1.1
daemon@ATHENA.MIT.EDU (Brian Kantor)
Fri Sep 9 13:13:38 1994
Date: Fri, 9 Sep 1994 10:13:12 -0700
From: brian@nothing.ucsd.edu (Brian Kantor)
To: krb5-bugs@MIT.EDU
diff -b -w -c -r refsrc/admin/create/kdb5_create.c src/admin/create/kdb5_create.c
*** refsrc/admin/create/kdb5_create.c Tue Jul 19 20:58:56 1994
--- src/admin/create/kdb5_create.c Thu Sep 8 13:37:09 1994
***************
*** 299,305 ****
entry.kvno = 1;
entry.max_life = pblock->max_life;
entry.max_renewable_life = pblock->max_rlife;
! entry.mkvno = 1;
entry.expiration = pblock->expiration;
entry.mod_name = &db_create_princ;
--- 299,305 ----
entry.kvno = 1;
entry.max_life = pblock->max_life;
entry.max_renewable_life = pblock->max_rlife;
! entry.mkvno = 0;
entry.expiration = pblock->expiration;
entry.mod_name = &db_create_princ;
diff -b -w -c -r refsrc/appl/bsd/krlogin.c src/appl/bsd/krlogin.c
*** refsrc/appl/bsd/krlogin.c Sat Aug 6 21:45:32 1994
--- src/appl/bsd/krlogin.c Wed Sep 7 15:40:16 1994
***************
*** 127,132 ****
--- 127,138 ----
#include <sgtty.h>
#endif /* POSIX_TERMIOS */
+ #ifdef bsdi
+ #define ONOCR 0
+ #define TAB3 OXTABS
+ #define TABDLY OXTABS
+ #endif
+
#ifndef roundup
#define roundup(x,y) ((((x)+(y)-1)/(y))*(y))
#endif
***************
*** 703,708 ****
--- 709,718 ----
struct tchars notc = { -1, -1, -1, -1, -1, -1 };
struct ltchars defltc;
struct ltchars noltc = { -1, -1, -1, -1, -1, -1 };
+ #endif
+
+ #ifdef bsdi
+ int exit();
#endif
doit(oldmask)
diff -b -w -c -r refsrc/appl/bsd/krlogind.c src/appl/bsd/krlogind.c
*** refsrc/appl/bsd/krlogind.c Sun Aug 7 17:39:59 1994
--- src/appl/bsd/krlogind.c Thu Sep 8 10:47:23 1994
***************
*** 108,113 ****
--- 108,114 ----
#include <sys/socket.h>
#include <sys/wait.h>
#include <sys/file.h>
+ #include <sys/ioctl.h>
#include <ctype.h>
#ifdef NEED_SYS_FCNTL_H
#include <sys/fcntl.h>
diff -b -w -c -r refsrc/appl/bsd/login.c src/appl/bsd/login.c
*** refsrc/appl/bsd/login.c Sun Aug 7 17:01:43 1994
--- src/appl/bsd/login.c Thu Sep 8 10:48:58 1994
***************
*** 1278,1284 ****
tp->c_lflag |= ECHOKE;
#endif
tp->c_iflag |= ICRNL|BRKINT;
! tp->c_oflag |= ONLCR|OPOST|TAB3;
#else /* !POSIX_TERMIOS */
tp->sg_flags = ECHO|CRMOD|ANYP|XTABS;
#endif
--- 1278,1284 ----
tp->c_lflag |= ECHOKE;
#endif
tp->c_iflag |= ICRNL|BRKINT;
! tp->c_oflag |= ONLCR|OPOST|OXTABS;
#else /* !POSIX_TERMIOS */
tp->sg_flags = ECHO|CRMOD|ANYP|XTABS;
#endif
diff -b -w -c -r refsrc/appl/bsd/loginpaths.h src/appl/bsd/loginpaths.h
*** refsrc/appl/bsd/loginpaths.h Thu Aug 4 16:06:44 1994
--- src/appl/bsd/loginpaths.h Wed Sep 7 15:42:47 1994
***************
*** 53,58 ****
--- 53,63 ----
#define RPATH "/usr/bin:/bin"
#endif
+ #ifdef bsdi
+ #define LPATH "/usr/bin:/bin"
+ #define RPATH "/usr/bin:/bin"
+ #endif
+
#ifdef __alpha
#ifdef __osf__
#define LPATH "/usr/bin:."
diff -b -w -c -r refsrc/appl/telnet/telnetd/sys_term.c src/appl/telnet/telnetd/sys_term.c
*** refsrc/appl/telnet/telnetd/sys_term.c Sun Aug 7 22:09:31 1994
--- src/appl/telnet/telnetd/sys_term.c Thu Sep 8 11:11:00 1994
***************
*** 106,120 ****
--- 106,123 ----
#ifdef STREAMS
#include <sys/stream.h>
#endif
+
#ifdef __hpux
#include <sys/resource.h>
#include <sys/proc.h>
#endif
+
#ifndef linux
#include <sys/tty.h>
#else
#include <linux/tty.h>
#endif
+
#ifdef t_erase
#undef t_erase
#undef t_kill
***************
*** 1233,1239 ****
* Hangup anybody else using this ttyp, then reopen it for
* ourselves.
*/
! # if !(defined(CRAY) || defined(__hpux)) && (BSD <= 43) && !defined(STREAMSPTY)
(void) signal(SIGHUP, SIG_IGN);
vhangup();
(void) signal(SIGHUP, SIG_DFL);
--- 1236,1242 ----
* Hangup anybody else using this ttyp, then reopen it for
* ourselves.
*/
! # if !(defined(CRAY) || defined(__hpux)) && (BSD <= 43) && !defined(STREAMSPTY) && !defined(bsdi)
(void) signal(SIGHUP, SIG_IGN);
vhangup();
(void) signal(SIGHUP, SIG_DFL);
***************
*** 1281,1287 ****
}
#endif /* !defined(CRAY) || !defined(NEWINIT) */
! #if BSD <= 43
int
login_tty(t)
--- 1284,1290 ----
}
#endif /* !defined(CRAY) || !defined(NEWINIT) */
! #if (BSD <= 43) || defined(bsdi)
int
login_tty(t)
***************
*** 1766,1777 ****
int sig;
{
#ifndef PARENT_DOES_UTMP
! # if (BSD > 43) || defined(convex)
char *p;
p = line + sizeof("/dev/") - 1;
if (logout(p))
logwtmp(p, "", "");
(void)chmod(line, 0666);
(void)chown(line, 0, 0);
*p = 'p';
--- 1769,1782 ----
int sig;
{
#ifndef PARENT_DOES_UTMP
! # if (BSD > 43) || defined(convex) || defined(bsdi)
char *p;
p = line + sizeof("/dev/") - 1;
+ # ifndef bsdi
if (logout(p))
logwtmp(p, "", "");
+ # endif
(void)chmod(line, 0666);
(void)chown(line, 0, 0);
*p = 'p';
diff -b -w -c -r refsrc/include/krb5/autoconf.h.in src/include/krb5/autoconf.h.in
*** refsrc/include/krb5/autoconf.h.in Wed Aug 10 10:07:44 1994
--- src/include/krb5/autoconf.h.in Wed Sep 7 11:04:17 1994
***************
*** 13,18 ****
--- 13,19 ----
#undef HAS_ANSI_VOLATILE
#undef HAS_STDLIB_H
#undef HAS_STRDUP
+ #undef HAS_SETSID
#undef HAS_VOID_TYPE
#undef KRB5_PROVIDE_PROTOTYPES
#undef NEED_SYS_FCNTL_H
diff -b -w -c -r refsrc/include/krb5/configure src/include/krb5/configure
*** refsrc/include/krb5/configure Wed Aug 10 10:01:40 1994
--- src/include/krb5/configure Wed Sep 7 11:07:59 1994
***************
*** 509,514 ****
--- 509,547 ----
"
}
+ fi
+ rm -f conftest*
+
+ test -n "$silent" || echo "checking for setsid"
+ cat > conftest.${ac_ext} <<EOF
+ #include "confdefs.h"
+ #include <ctype.h>
+ int main() { return 0; }
+ int t() {
+ /* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+ #if defined (__stub_setsid) || defined (__stub___setsid)
+ choke me
+ #else
+ /* Override any gcc2 internal prototype to avoid an error. */
+ extern char setsid(); setsid();
+ #endif
+ ; return 0; }
+ EOF
+ if eval $ac_compile; then
+ rm -rf conftest*
+ {
+ test -n "$verbose" && \
+ echo " defining HAS_SETSID"
+ echo "#define" HAS_SETSID "1" >> confdefs.h
+ DEFS="$DEFS -DHAS_SETSID=1"
+ ac_sed_defs="${ac_sed_defs}\${ac_dA}HAS_SETSID\${ac_dB}HAS_SETSID\${ac_dC}1\${ac_dD}
+ \${ac_uA}HAS_SETSID\${ac_uB}HAS_SETSID\${ac_uC}1\${ac_uD}
+ \${ac_eA}HAS_SETSID\${ac_eB}HAS_SETSID\${ac_eC}1\${ac_eD}
+ "
+ }
+
fi
rm -f conftest*
diff -b -w -c -r refsrc/include/krb5/configure.in src/include/krb5/configure.in
*** refsrc/include/krb5/configure.in Tue Aug 2 02:41:55 1994
--- src/include/krb5/configure.in Wed Sep 7 11:01:40 1994
***************
*** 6,11 ****
--- 6,12 ----
AC_PROG_LEX
HAVE_YYLINENO
AC_FUNC_CHECK(strdup,AC_DEFINE(HAS_STRDUP))
+ AC_FUNC_CHECK(setsid,AC_DEFINE(HAS_SETSID))
CHECK_DIRENT
CHECK_FCNTL
CHECK_WAIT_TYPE
diff -b -w -c -r refsrc/include/krb5/func-proto.h src/include/krb5/func-proto.h
*** refsrc/include/krb5/func-proto.h Fri Jun 10 11:53:02 1994
--- src/include/krb5/func-proto.h Thu Sep 8 15:35:30 1994
***************
*** 183,189 ****
#endif
krb5_error_code krb5_425_conv_principal
! PROTOTYPE((const char *name, const char *instance, const char *realm,
krb5_principal *princ));
krb5_error_code krb5_obtain_padata
--- 183,189 ----
#endif
krb5_error_code krb5_425_conv_principal
! PROTOTYPE((const char *name, char *instance, const char *realm,
krb5_principal *princ));
krb5_error_code krb5_obtain_padata
diff -b -w -c -r refsrc/kadmin/client/kadmin_add.c src/kadmin/client/kadmin_add.c
*** refsrc/kadmin/client/kadmin_add.c Thu Jun 23 23:20:48 1994
--- src/kadmin/client/kadmin_add.c Thu Sep 8 15:05:12 1994
***************
*** 263,269 ****
free(inbuf.data);
return(1);
}
- free(inbuf.data);
decode_kadmind_reply(msg_data, &rd_priv_resp);
--- 263,268 ----
diff -b -w -c -r refsrc/kadmin/server/adm_extern.c src/kadmin/server/adm_extern.c
*** refsrc/kadmin/server/adm_extern.c Tue Aug 31 20:02:56 1993
--- src/kadmin/server/adm_extern.c Thu Sep 8 14:56:31 1994
***************
*** 51,56 ****
--- 51,57 ----
krb5_keyblock tgs_key;
krb5_kvno tgs_kvno;
+ krb5_kvno tgs_mkvno;
krb5_data inbuf;
krb5_data msg_data;
diff -b -w -c -r refsrc/kadmin/server/adm_extern.h src/kadmin/server/adm_extern.h
*** refsrc/kadmin/server/adm_extern.h Fri Dec 24 14:24:19 1993
--- src/kadmin/server/adm_extern.h Thu Sep 8 14:56:56 1994
***************
*** 59,64 ****
--- 59,65 ----
extern krb5_keyblock tgs_key;
extern krb5_kvno tgs_kvno;
+ extern krb5_kvno tgs_mkvno;
extern krb5_principal tgs_server;
extern global_client_server_info client_server_info;
diff -b -w -c -r refsrc/kadmin/server/adm_funcs.c src/kadmin/server/adm_funcs.c
*** refsrc/kadmin/server/adm_funcs.c Fri Jun 24 20:19:01 1994
--- src/kadmin/server/adm_funcs.c Thu Sep 8 15:07:59 1994
***************
*** 174,180 ****
entry->kvno = KDB5_VERSION_NUM;
entry->max_life = KDB5_MAX_TKT_LIFE;
entry->max_renewable_life = KDB5_MAX_REN_LIFE;
! entry->mkvno = mblock.mkvno;
entry->expiration = KDB5_EXP_DATE;
entry->mod_name = master_princ;
} else { /* Modify existing entry */
--- 174,180 ----
entry->kvno = KDB5_VERSION_NUM;
entry->max_life = KDB5_MAX_TKT_LIFE;
entry->max_renewable_life = KDB5_MAX_REN_LIFE;
! entry->mkvno = tgs_mkvno;
entry->expiration = KDB5_EXP_DATE;
entry->mod_name = master_princ;
} else { /* Modify existing entry */
***************
*** 182,188 ****
#ifdef SANDIA
entry->attributes &= ~KRB5_KDB_REQUIRES_PWCHANGE;
#endif
! entry->mod_name = (krb5_principal) principal;
}
if (key && key->length) {
--- 182,189 ----
#ifdef SANDIA
entry->attributes &= ~KRB5_KDB_REQUIRES_PWCHANGE;
#endif
! /*DREW - this isn't used and would be freed twice */
! /* entry->mod_name = (krb5_principal) principal; */
}
if (key && key->length) {
diff -b -w -c -r refsrc/kadmin/server/adm_network.c src/kadmin/server/adm_network.c
*** refsrc/kadmin/server/adm_network.c Thu Jun 2 09:23:46 1994
--- src/kadmin/server/adm_network.c Thu Sep 8 15:09:15 1994
***************
*** 86,92 ****
* <sys/param.h> has been included, so BSD will be defined on
* BSD systems
*/
! #if BSD > 0 && BSD <= 43
#ifndef WEXITSTATUS
#define WEXITSTATUS(w) (w).w_retcode
#define WTERMSIG(w) (w).w_termsig
--- 86,92 ----
* <sys/param.h> has been included, so BSD will be defined on
* BSD systems
*/
! #if BSD > 0 && BSD <= 43 && !defined(_POSIX_SOURCE)
#ifndef WEXITSTATUS
#define WEXITSTATUS(w) (w).w_retcode
#define WTERMSIG(w) (w).w_termsig
diff -b -w -c -r refsrc/kadmin/server/adm_process.c src/kadmin/server/adm_process.c
*** refsrc/kadmin/server/adm_process.c Fri Jun 24 20:19:10 1994
--- src/kadmin/server/adm_process.c Thu Sep 8 15:11:03 1994
***************
*** 277,286 ****
error_message(retval));
(void) sprintf(retbuf, "kadmind error during recvauth: %s\n",
error_message(retval));
! krb5_free_keyblock(cpw_key.key);
goto finish;
}
! krb5_free_keyblock(cpw_key.key);
/* Check if ticket was issued using password (and not tgt)
* within the last 5 minutes
--- 277,286 ----
error_message(retval));
(void) sprintf(retbuf, "kadmind error during recvauth: %s\n",
error_message(retval));
! /*DREW krb5_free_keyblock(cpw_key.key); */
goto finish;
}
! /*DREW krb5_free_keyblock(cpw_key.key); */
/* Check if ticket was issued using password (and not tgt)
* within the last 5 minutes
***************
*** 425,436 ****
free(final_msg.data);
goto finish;
}
! free(final_msg.data);
/* Send Final Reply to Client */
if (retval = krb5_write_message(&client_server_info.client_socket,
&msg_data)){
! free(msg_data.data);
syslog(LOG_ERR, "Error Performing Final Write: %s",
error_message(retval));
retval = 1;
--- 425,436 ----
free(final_msg.data);
goto finish;
}
! /*DREW free(final_msg.data); */
/* Send Final Reply to Client */
if (retval = krb5_write_message(&client_server_info.client_socket,
&msg_data)){
! /*DREW free(msg_data.data); */
syslog(LOG_ERR, "Error Performing Final Write: %s",
error_message(retval));
retval = 1;
diff -b -w -c -r refsrc/kadmin/server/adm_server.c src/kadmin/server/adm_server.c
*** refsrc/kadmin/server/adm_server.c Tue Jun 28 22:33:00 1994
--- src/kadmin/server/adm_server.c Thu Sep 8 14:58:23 1994
***************
*** 343,348 ****
--- 343,349 ----
}
tgs_kvno = server_entry.kvno;
+ tgs_mkvno = server_entry.kvno;
krb5_db_free_principal(&server_entry, number_of_entries);
return(0);
}
diff -b -w -c -r refsrc/kdc/kerberos_v4.c src/kdc/kerberos_v4.c
*** refsrc/kdc/kerberos_v4.c Thu Aug 4 13:43:58 1994
--- src/kdc/kerberos_v4.c Thu Sep 8 15:18:18 1994
***************
*** 70,75 ****
--- 70,77 ----
/* take this out when we don't need it anymore */
int krbONE = 1;
+ extern u_char master_key_version;
+
#ifdef notdef
static struct sockaddr_in sin = {AF_INET};
#endif
***************
*** 90,98 ****
/*
static C_Block user_key;
static C_Block service_key;
- */
static u_char master_key_version;
- /*
static char k_instance[INST_SZ];
*/
static char log_text[128];
--- 92,98 ----
***************
*** 491,496 ****
--- 491,497 ----
case L_NTGT_INTK:
case L_TKT_REQ:
case L_APPL_REQ:
+ default:
strcpy(log_text, "PROCESS_V4:");
vsprintf(log_text+strlen(log_text), format, pvar);
syslog(logpri, log_text);
diff -b -w -c -r refsrc/kdc/main.c src/kdc/main.c
*** refsrc/kdc/main.c Tue Jun 28 22:33:35 1994
--- src/kdc/main.c Thu Sep 8 15:20:23 1994
***************
*** 56,61 ****
--- 56,65 ----
#include "extern.h"
#include "kdc5_err.h"
+ #ifdef KRB4
+ u_char master_key_version;
+ #endif /* KRB4 */
+
static void
kdc_com_err_proc(whoami, code, format, pvar)
const char *whoami;
***************
*** 356,361 ****
--- 360,368 ----
return retval;
}
tgs_kvno = server.kvno;
+ #ifdef KRB4
+ master_key_version = server.mkvno;
+ #endif /* KRB4 */
krb5_db_free_principal(&server, nprincs);
return 0;
}
diff -b -w -c -r refsrc/lib/krb5/asn.1/krbasn1.h src/lib/krb5/asn.1/krbasn1.h
*** refsrc/lib/krb5/asn.1/krbasn1.h Sun Jul 3 01:45:53 1994
--- src/lib/krb5/asn.1/krbasn1.h Wed Sep 7 10:08:18 1994
***************
*** 6,11 ****
--- 6,13 ----
#include <errno.h>
#include <limits.h>
+ #include "asn1_err.h"
+
/* The current version of {en,de}code_krb5_enc_kdc_rep_part has a
problem in that there's no way to know the message type (AS/TGS) of
a krb5_enc_kdc_rep_part. This should be fixed in the next version
diff -b -w -c -r refsrc/lib/krb5/krb/conv_princ.c src/lib/krb5/krb/conv_princ.c
*** refsrc/lib/krb5/krb/conv_princ.c Thu Jun 9 00:20:06 1994
--- src/lib/krb5/krb/conv_princ.c Thu Sep 8 15:21:52 1994
***************
*** 167,173 ****
krb5_error_code krb5_425_conv_principal(name, instance, realm, princ)
const char *name;
! const char *instance;
const char *realm;
krb5_principal *princ;
{
--- 167,173 ----
krb5_error_code krb5_425_conv_principal(name, instance, realm, princ)
const char *name;
! char *instance;
const char *realm;
krb5_principal *princ;
{
diff -b -w -c -r refsrc/lib/krb5/rcache/rc_dfl.c src/lib/krb5/rcache/rc_dfl.c
*** refsrc/lib/krb5/rcache/rc_dfl.c Sun Jun 12 10:46:09 1994
--- src/lib/krb5/rcache/rc_dfl.c Thu Sep 8 15:32:54 1994
***************
*** 543,581 ****
#else
struct authlist *q;
! char *name = t->name;
krb5_error_code retval;
krb5_rcache tmp;
krb5_deltat lifespan = t->lifespan; /* save original lifespan */
(void) krb5_rc_dfl_close_no_free(id);
retval = krb5_rc_dfl_resolve(id, name);
! if (retval)
return retval;
retval = krb5_rc_dfl_recover(id);
! if (retval)
return retval;
t = (struct dfl_data *)id->data; /* point to recovered cache */
tmp = (krb5_rcache) malloc(sizeof(*tmp));
! if (!tmp)
return ENOMEM;
retval = krb5_rc_resolve_type(&tmp, "dfl");
! if (retval)
return retval;
retval = krb5_rc_resolve(tmp, 0);
! if (retval)
return retval;
retval = krb5_rc_initialize(tmp, lifespan);
! if (retval)
return retval;
for (q = t->a;q;q = q->na) {
! if (krb5_rc_io_store ((struct dfl_data *)tmp->data, &q->rep))
return KRB5_RC_IO;
}
! if (krb5_rc_io_sync(&t->d))
return KRB5_RC_IO;
! if (krb5_rc_io_move(&t->d, &((struct dfl_data *)tmp->data)->d))
return KRB5_RC_IO;
#endif
return 0;
}
--- 543,603 ----
#else
struct authlist *q;
! char *name;
krb5_error_code retval;
krb5_rcache tmp;
krb5_deltat lifespan = t->lifespan; /* save original lifespan */
+ if (!(name = (char *) malloc(strlen(t->name)+1)))
+ return KRB5_RC_MALLOC;
+ strcpy(name, t->name);
(void) krb5_rc_dfl_close_no_free(id);
retval = krb5_rc_dfl_resolve(id, name);
! if (retval) {
! FREE(name);
return retval;
+ }
retval = krb5_rc_dfl_recover(id);
! if (retval) {
! FREE(name);
return retval;
+ }
t = (struct dfl_data *)id->data; /* point to recovered cache */
tmp = (krb5_rcache) malloc(sizeof(*tmp));
! if (!tmp) {
! FREE(name);
return ENOMEM;
+ }
retval = krb5_rc_resolve_type(&tmp, "dfl");
! if (retval) {
! FREE(name);
return retval;
+ }
retval = krb5_rc_resolve(tmp, 0);
! if (retval) {
! FREE(name);
return retval;
+ }
retval = krb5_rc_initialize(tmp, lifespan);
! if (retval) {
! FREE(name);
return retval;
+ }
for (q = t->a;q;q = q->na) {
! if (krb5_rc_io_store ((struct dfl_data *)tmp->data, &q->rep)) {
! FREE(name);
return KRB5_RC_IO;
}
! }
! if (krb5_rc_io_sync(&t->d)) {
! FREE(name);
return KRB5_RC_IO;
! }
! if (krb5_rc_io_move(&t->d, &((struct dfl_data *)tmp->data)->d)) {
! FREE(name);
return KRB5_RC_IO;
+ }
#endif
+ FREE(name);
return 0;
}
diff -b -w -c -r refsrc/tests/create/kdb5_mkdums.c src/tests/create/kdb5_mkdums.c
*** refsrc/tests/create/kdb5_mkdums.c Tue Aug 31 20:20:41 1993
--- src/tests/create/kdb5_mkdums.c Thu Sep 8 15:38:16 1994
***************
*** 291,296 ****
--- 291,297 ----
newentry.max_renewable_life = mblock.max_rlife;
newentry.mkvno = mblock.mkvno;
newentry.expiration = mblock.expiration;
+ newentry.pw_expiration = mblock.expiration;
newentry.mod_name = master_princ;
if (retval = krb5_timeofday(&newentry.mod_date)) {
com_err(progname, retval, "while fetching date");
***************
*** 302,307 ****
--- 303,312 ----
newentry.salt_type = KRB5_KDB_SALTTYPE_NORMAL;
newentry.salt_length = 0;
newentry.salt = 0;
+ newentry.alt_key.length = 0;
+ newentry.alt_key.contents = 0;
+ newentry.alt_salt_length = 0;
+ newentry.alt_salt = 0;
retval = krb5_db_put_principal(&newentry, &one);
if (retval) {