def_realm.c (krb5_get_default_realm): Use the profile code to
get the default realm from [libdefaults]/default_realm.
get_krbhst.c (krb5_get_krbhst): Use the profile code to get the
list of Kerberos servers for a particualar realm from
[realms]/<realm>/kdc
realm_dom.c (krb5_get_realm_domain): Use the profile code to
get the default domain postfix for a realm (used only to
convert V4 -> V5 principals) from
[realms]/<realm>/default_domain
hst_realm.c (krb5_get_host_realm): Use the profile code to get
the default realm given a particular host from
[domain_realm]/<host|domain>
init_os_ctx.c (krb5_os_init_context): When the OS context is
initialized, also initialize the profile file. This loads
in the /etc/krb5.conf file.
Fix tests to reflect bit reversal changes to the krb5_flags fields.
(The changes to the hex values have been hand checked to make sure
they are correct.)
Fix BACKWARD_BITMASK_COMPAT so that it doesn't break user-to-user
authentication. Unfortunately, this breaks proxy tickets (and
renewable tickets continue to be broken if BACKWARD_BITMASK_COMPAT is
defined; nothing can be done by this.) Sites should only define
BACKWARD_BITMASK_COMPAT if they have an installed base of broken
implementations.
Mark Eichin [Fri, 21 Apr 1995 21:20:47 +0000 (21:20 +0000)]
rlogin testing changes from ian@cygnus.com
> Fri Mar 24 15:04:25 1995 Ian Lance Taylor <ian@cygnus.com>
* krlogind.c (srvtab): New global variable.
(krb5_override_default_realm): Declare.
(ARGSTR): Add "S:M:L:" to Kerberos version.
(login_program): New global variable.
(main): Handle -S, -M, and -L arguments. Call SO_REUSEADDR on
socket if debug_port set.
(doit): Use login_program instead of LOGIN_PROGRAM.
(recvauth): Pass srvtab to krb5_compat_recvauth.
* krlogind.M: Document -S, -M, and -L.
Mark Eichin [Fri, 21 Apr 1995 21:15:52 +0000 (21:15 +0000)]
More changes from ian@cygnus.com to support testing
> Fri Mar 24 15:04:25 1995 Ian Lance Taylor <ian@cygnus.com>
* krcp.c (forcenet): New global vraiable.
(main): Accept -D and -N arguments. Pass Kerberos realm to remote
rcp execution.
(hosteq): If -N specified, always return 0.
* rcp.M: Document -D and -N.
* krshd.c (ARGSTR): Add "P:" to KERBEROS version.
(kprogdir): New global variable.
(main): Handle -P.
(path): Remove global variable.
(path_rest): Remove explicit size.
(envinit): Use 0 instead of path.
(PATHENV): define.
(doit): Use kprogdir variable instead of KPROGDIR macro when
setting path. Build path in allocated memory rather than using a
fixed size array. If the command starts with "rcp ", force use of
kprogdir/rcp if it exists.
* krshd.M: Document -P.
Mark Eichin [Fri, 21 Apr 1995 19:11:07 +0000 (19:11 +0000)]
Fri Apr 21 14:07:15 1995 Mark Eichin <eichin@cygnus.com>
Added Ian's changes with minor tweaks. These are used by the testsuite.
> Thu Mar 23 18:18:31 1995 Ian Lance Taylor <ian@cygnus.com>
* krshd.c (ARGSTR): Add S:M:A to KERBEROS version.
(srvtab): New global variable.
(krb5_override_default_realm): Declare.
(main): Handle -S, -M and -A arguments. Call SO_REUSEADDR on
socket if debug_port set.
(doit): If -A used, allocate a random port for the stderr stream,
rather than allocating a reserved port. Don't call initgroups if
not changing the uid.
(recvauth): Pass srvtab to krb5_compat_recvauth.
* krshd.M: Document -S, -M, and -A.
* krsh.c (main): Accept -A, and pass it to kcmd.
* rsh.M: Document -A.
* kcmd.c (kcmd): Add new argument anyport. If it is set, permit
any port for the stderr stream, rather than requiring a reserved
port. Initialize ret_cred to NULL.
* krcp.c (main): Pass 0 for anyport to kcmd.
* krlogin.c (main): Pass 0 for anyport to kcmd.
Mark Eichin [Fri, 21 Apr 1995 17:14:52 +0000 (17:14 +0000)]
From Ian Taylor <ian@cygnus.com>. Makes kadmind use -r for both
the database name and the service name, eliminating an
installation hassle.
* adm_extern.h: declare realm.
* adm_server.c: define realm.
(process_args): change db_realm to realm.
* adm_network.c (setup_network): use the preset realm, not the
default realm.
Mark Eichin [Fri, 21 Apr 1995 16:49:00 +0000 (16:49 +0000)]
From Ian Taylor <ian@cygnus.com>.
* telnetd.c (valid_opts): Add 'L'. If KRB5, add -R and -t.
(main): Handle -L. If KRB5, handle -R and -t.
* sys_term.c (login_program): New global variable.
(start_login): Use login_program instead of LOGIN_PROGRAM.
Unless HAVE_C_STRUCTURE_ASSIGNMENT is defined, use memcpy to copy
structures around, instead of using structure assignments. (Which
aren't guaranteed to work on some broken compilers.)
Mark Eichin [Fri, 21 Apr 1995 00:21:07 +0000 (00:21 +0000)]
Changes for testsuite from Ian Taylor <ian@cygnus.com>
* kerberos5.c (telnet_srvtab): New global variable.
(telnet_krb5_realm): New global variable.
(kerberos5_send): If telnet_krb5_realm is set, copy it into
creds.server. Pass new_creds to krb5_mk_req_extended, not &creds.
Pass &new_creds->keyblock to krb5_copy_keyblock_contents, not
new_creds.
(kerberos5_is): pass telnet_srvtab in to krb_rd_req.
(kerberos5_forward): If telnet_krb5_realm is set, copy it into
local_creds->server.
Mark Eichin [Thu, 20 Apr 1995 22:20:47 +0000 (22:20 +0000)]
Changes from Ian Taylor <ian@cygnus.com> to support testsuite.
* adm_extern.h: declare admin_port.
* adm_extern.c: define admin_port.
* adm_server.c (process_args): set admin_port from -p command line
argument.
(usage): document -p port option.
* adm_network.c (setup_network): use admin_port if set.
Mark Eichin [Thu, 20 Apr 1995 22:11:56 +0000 (22:11 +0000)]
Changes from Ian Taylor <ian@cygnus.com> to support testsuite.
* adm_extern.h: declare admin_port.
* adm_extern.c: define admin_port.
* adm_server.c (process_args): set admin_port from -p command line
argument.
(usage): document -p port option.
* adm_network.c (setup_network): use admin_port if set.
mk_req.c (krb5_mk_req): Use krb5_sname_to_principal() in order
to create the service principal from the service and
hostname pair. This allows for the host cannoncialization
to work correctly.
mk_req_ext.c (krb5_mk_req_extended): Revamp checksum handling
code so that no checksum is performed in in_data is NULL,
and the special case handing of cksumtype == 0x8003 for
the GSSAPI library is handled correctly.
Modify usage to reflect reality. Modified getopt call to recognize the already
coded -r option. Cleanup memory on exit and set exit status to number of errors
found.
configure.in: Add checking for SIZEOF_SHORT, SIZEOF_INT, and
SIZEOF_LONG, so we don't need to depend on getting this
information from include/krb5/autoconf.h
gssapi.h: Removed dependence on krb5 include files.
gssapiP_generic.h: We need to include k5-config in order to get
Windows specific hackery. Somewhat of a wart, but this is a
gssapi internal header file, so the rest of the world doesn't
have to see this.
util_token.c: Define VALID_INT, instead of relying on this being
defined by krb5.h.
Remove support for HAS_ANSI_CONST (that was needed only for
compatibility with the old imake build; autoconf uses -Dconst=), and
HAS_ANSI_VOLATILE, which isn't used at all.
Inlined the following include files in krb5.h, to simplify the header
files which actually need to be installed: wordsize.h, base-defs.h,
hostaddr.h, fieldbits.h, proto.h, macros.h, error_def.h, safepriv.h,
ccache.h, rcache.h, keytab.h, func-proto.h, k5-free.h. Also moved the
#include of k5-config.h and k5-errors.h to k5-int.h.
asn1_k_decode.c (asn1_decode_krb5_flags): Make the function
accept bit strings which are less 32 bits long.
(RFC-1510 makes no guarantee that the length of the bit
string must be 32 bits long; the old code required that
the length of the bit string must be exactly 32 bits.)
Flip the bits with respect to a 32-bit boundary, since
that's what the old ASN.1 glue code did. (The values in
fieldbits.h are encoded backwards, for no good reason.)
If BACKWARDS_BITMASK_COMPAT is defined, then only flip the
bits if the high 16 bits are clear and there are some bits set
in the low 16 bits. This preserves interoperabilty with
the old beta 4 distribution, which sent the bit string
without flipping them around.
asn1_k_encode.c (asn1_encode_krb5_flags): Flip the bits with
respect to a 32-bit boundary, since that's what the
old ASN.1 glue code did. (The values in fieldbits.h
are encoded backwards, for no good reason.)
krb_asn1.h: #define BACKWARDS_BITMASK_COMPAT. Add extern
declaration for asn1_swbits, which is needed for the
bit reversing code.
When default realm specified on command line, call krb5_set_default_realm so
that created keys will have the proper realm. (which may not be the same
as the machines default realm)
kpropd uses fork instead of vfork, because it's closing file
descriptors in the child.
Print out the pid of the child process if debugging is enabled.
Use _exit() instead exit() after a fork(), so that child process
doesn't cause the stdio buffers don't get flushed twice.
When debugging is enabled and kpropd can't bind to the port, it should
try binding again after setting SO_REUSEADDR on the socket. This
avoids problems when debugging modifications to kprop/kpropd or its
setup, when kpropd is run twice quickly in succession.
kpropd shouldn't signal(SIGCHLD, SIG_IGN) in the parent. Instead, it
should wait() until the child exits. This was causing problems
because setting SIGCHLD to SIG_IGN under SYSV causes child processes
to get reaped automatically, so the wait() for kdb5_edit was failing.
* copy_princ.c (krb5_copy_principal): Fix bug where
krb5_copy_principal can fail if it is asked to copy a
principal with a zero-length component on a system where
malloc(0) returns null.
If there is an error while making in a subdirectory, abort the make in
the parent directory. This makes it more obvious when we have a
problem in the tree.
aclocal.m4 (MAKE_SUBDIRS, _MAKE_SUBDIRS): Creatre new macro
_MAKE_SUBDIRS which works like MAKE_SUBDIRS except that it
is possible for the target name in the parent Makefile and
the target name which should be built in each of the
subdirectories can be different. MAKE_SUBDIRS is now a
special case of _MAKE_SUBDIRS.
Makefile.in, configure.in: Move dependency for all-$WHAT back
into Makefile.in so that the Windows port can pick up the
line (since it doesn't use configure). Instead, change
the name of target which causes the subdirectories to be
built under Unix, and make that a dependency for all-unix.
Gross, but this should fix things for both DOS and Windows.
Keith Vetter [Fri, 14 Apr 1995 00:56:21 +0000 (00:56 +0000)]
Windows global stuff:
o removed INTERFACE from non-api functions
o add FAR to pointers visible to the world
o made the tests for __STDC__ also check for _WINDOWS
o creates GSSAPI.DLL & GSSAPI.LIB as per spec.
asn1_k_decode.c (setup, next_tag, apptag, get_field_body,
get_lenfield_body, asn1_decode_ticket): Use the taglength to
determine whether or not the indefinite encoding was used, and
if so skip over the termination flag bytes in the ASN.1
stream.
asn1buf.c (asn1buf_imbed, asn1buf_remains): Make changes to allow for
indefinite encodings. asn1buf_remains() is now only used for
decoding structures and arrays (i.e., asn.1 constructs which
terminate indefinite encodings with two zero octets.
[ Note these fixes to support indefinite encoding aren't
terribly clean; some invalid encodings may be accepted when they
should not be. This should be looked at in more detail later.]
asn1_get.c (asn1_get_tag): Inline original asn1buf_remains() code,
since asn1_get_tag doesn't use asn1buf_remains in the context of
a structure or an array.
Keith Vetter [Fri, 7 Apr 1995 22:29:33 +0000 (22:29 +0000)]
Windows cns: user can now specify the ccache file on the options dialog.
Windows telnet: accepts and remembers port number specified after the host
name in the initial dialog.
Keith Vetter [Thu, 6 Apr 1995 03:49:47 +0000 (03:49 +0000)]
Bug fixes or better error handling for the following 4 Windows bugs
(note, these changes haven't yet been tested on the PC which were
failing so no guarantee that they fully work):
a) GUI to cns improved so that you don't need a resize for the widgets to
align properly, and so the interaction of typing: "username cr password
cr" is all you need to do to get you a ticket.
b) cns uses krb5_us_gettimeofday instead of krb5_timeofday because the
former is more accurate and handles timezones. Probably should make
the latter just call the former.
c) Added SOCKET_INIT and SOCKET_DESTROY around krb5_sendto_kdc to prevent
some tcp/ip stacks from locking up after 8 uses.
d) Added a new error message and better error handling to give more
precision as to why one PC was getting the error 'Cannot find KDC
for requested realm.'
pop_init.c (pop_init): Put in a type cast to shut up the compiler.
Popper is still using gethostbyname()'s static data wrong;
this should be fixed eventually.
Theodore Tso [Fri, 31 Mar 1995 21:48:37 +0000 (21:48 +0000)]
* rc_dfl.c (krb5_rc_dfl_expunage): Close the old, temporary reply
cache after we're done expunging it.
* rc_io.c (krb5_rc_io_move): Make duplicate copies of the filename
and the file descriptor (via malloc/strcpy and dup), so
that the old rc_io object can be cleanly closed without
affecting the new rc_io object.