2005-01-14 Tom Yu * xdr.c (xdr_bytes): Revert previous; the problem was actually in xdr_rpc_gss_buf. * authgss_prot.c (xdr_rpc_gss_wrap_data): Use xdr_alloc to avoid size limit issues. Use (unsigned int)-1 instead of MAX_NETOBJ_SZ. (xdr_rpc_gss_unwrap_data): Use (unsigned int)-1 instead of MAX_NETOBJ_SZ. (xdr_rpc_gss_buf): Set tmplen even if doing XDR_FREE. * xdr.c (xdr_bytes): Don't assign from *sizep if XDR_FREE, since it'll be uninitialized then. Shuts up Purify. 2004-11-18 Tom Yu * Makefile.in (install-unix): Install into KRB5_INCDIR/gssrpc, rather than just KRB5_INCDIR. 2004-10-25 Tom Yu * auth_gss.c (authgss_get_private_data): New function. (authgss_refresh): Remove explicit OID checks. (authgss_create): Copy initiator name. (authgss_destroy): Release copied initiator name. (print_rpc_gss_sec): Explicitly code OID stringification. * auth_gss.h: Add cred and req_flags to struct rpc_gss_sec. New structure authgss_private_data so kernel implementations can retrieve context state. * auth_gss.h, libgssrpc.exports, rename.h: Add authgss_get_private_data. 2004-10-18 Tom Yu * Makefile.in (install-unix): Install headers. 2004-09-23 Ken Raeburn * xdr_rec.c (LAST_FRAG): Use 1L in case int is small. 2004-09-22 Tom Yu * libgssrpc.exports: Export svc_maxfd. 2004-09-21 Tom Yu * configure.in: Check for sockaddr_in.sin_len and sockaddr.sa_len. Check for sys/param.h in case we need NBBY somewhere. * auth.h, svc_auth.h: Namespace cleanup. * svc.h, rpc_commondata.c: New global svc_maxfd. * svc.c (svc_getreqset): Break inner part of loop out into local function svc_do_xprt(). Don't use rpc_dtablesize(); instead, use svc_maxfd. * svc_run.c: Don't use rpc_dtablesize(). * clnt_generic.c, clnt_simple.c, getrpcport.c: * svc_tcp.c, svc_udp.c: Set sockaddr_in.sin_len when available. 2004-09-17 Tom Yu * libgssrpc.exports: Don't export internals. * svc.c (svc_getreqset): * svc_tcp.c (readtcp): Don't intersperse preprocessor conditionals with braces. * auth_gssapi.c, auth_gssapi_misc.c, auth_none.c: * auth_unix.c, authunix_prot.c, bindresvport.c: * clnt_generic.c, clnt_perror.c, clnt_raw.c * clnt_simple.c, clnt_tcp.c, clnt_udp.c, get_myaddress.c: * getrpcent.c, getrpcport.c, pmap_clnt.c: * pmap_getmaps.c, pmap_getport.c, pmap_prot.c, pmap_prot2.c: * pmap_rmt.c, rpc_callmsg.c, rpc_prot.c: * svc.c, svc_auth.c, svc_auth_gss.c: * svc_auth_gssapi.c, svc_auth_unix.c, svc_raw.c: * svc_run.c, svc_simple.c, svc_tcp.c: * svc_udp.c, xdr.c, xdr_alloc.c, xdr_array.c: * xdr_float.c, xdr_mem.c, xdr_rec.c, xdr_reference.c: * xdr_stdio.c: Protoize, to avoid potential problems when fixed-width types are not ints on some platforms. 2004-08-26 Tom Yu * configure.in: Look for uint32_t, not int32_t, since some BSD-ish sys/types.h headers have int32_t and u_int32_t, but only have uint32_t in stdint.h. * types.hin: Change int32_t checks to uint32_t checks. 2004-08-17 Tom Yu * svc.c (svc_getreqset): Allocate cred and verf memory to temporary pointers, and free the temporary pointers on exit. Freeing the actual cred and verf pointers can cause corruption because auth mechanisms can reassign the pointers. 2004-08-16 Tom Yu * svc_auth_gss.c (gssrpc__svcauth_gss): Add some debug messages. * svc.c (svc_getreqset): Don't allocate either raw or cooked credentials on the stack using the cred_area char array; use mem_alloc() instead. This avoids alignment problems. 2004-06-28 Tom Yu * auth_gss.c (g_OID_equal): Fix signedness. (rpc_gss_data): Fix width of WIN. (authgss_validate): Fix width of NUM and QOP_STATE. (authgss_refresh): Fix width of SEQ and QOP_STATE. * auth_gssapi.c (auth_gssapi_create): Save clnt->cl_auth early enough to avoid unref use. * authgss_prot.c (xdr_rpc_gss_buf): Cast (void **) to (char **) in call to xdr_bytes. (xdr_rpc_gss_wrap_data): Fix signedness. (xdr_rpc_gss_unwrap_data): Fix signedness. Fix width of SEQ_NUM. * clnt_udp.c (clntudp_bufcreate, clntudp_call, clntudp_call): Fix up some argument casting for socket calls. * pmap_prot.c (xdr_pmap): Use appropriate xdr macros for the typedefs instead of xdr_u_int32. * rpc_prot.c (xdr_accepted_reply, xdr_rejected_reply) (xdr_callhdr): Use appropriate xdr macros for the typedefs instead of xdr_u_int32. * svc_auth_unix.c (gssrpc__svcauth_unix): Fix signedness on call to XDR_INLINE. * xdr.c (xdr_int, xdr_long, xdr_short): Improve value checks. * xdr.h: Make the IXDR macros more paranoid about signedness. Add macros for xdr_rpcprog, xdr_rpcvers, xdr_rpcprot, xdr_rpcproc, xdr_rpcport. * xdr_mem.c (xdrmem_getlong): Cast return value of ntohl to int32_t prior to casting it to long. * xdr_rec.c (xdrrec_getlong): Cast return value of ntohl to int32_t prior to casting it to long. (xdrrec_putlong): Make arithmetic more paranoid. (xdrrec_inline): Signedness fixes. Arithmetic paranoia. (set_input_fragment): Don't cast return value of ntohl which is being assigned to uint32_t. 2004-06-25 Tom Yu * types.hin: Delete rpc_int32, rpc_u_int32 aliases. 2004-06-24 Ken Raeburn * configure.in: Fix typo in setting krb5_cv_header_sys_param_h_maxhostnamelen. 2004-06-18 Tom Yu * auth_gss.h: Add prototype for xdr_rpc_gss_buf. * authgss_prot.c (xdr_rpc_gss_buf): New function. (xdr_rpc_gss_cred, xdr_rpc_gss_init_args, xdr_rpc_gss_init_res): (xdr_rpc_gss_wrap_data, xdr_rpc_gss_unwrap_data): Use xdr_rpc_gss_buf, to avoid passing a (size_t *) to a xdr_bytes(), which expects (u_int *). (xdr_rpc_gss_wrap_data): Use tmplen to avoid passing (size_t *) to xdr_u_int. * libgssrpc.exports: * rename.h: Add xdr_rpc_gss_buf. * xdr.c (xdr_enum): Fix (kind of) for 64-bit. Still inherently bogus, due to casting of (enum foo *) to (enum_t *) by callers. 2004-06-17 Tom Yu * libgssrpc.exports: Update. 2004-06-16 Ken Raeburn * Makefile.in (clean-mac): Target deleted. 2004-06-16 Tom Yu * auth_gss.h: Conditionalize log_debug, log_status, log_hexdump prototypes on GSSRPC__IMPL. * rename.h: More namespace fixes. 2004-06-15 Tom Yu * auth_gss.c (print_rpc_gss_sec): Use gss_oid_to_str(). (rpc_gss_data): Add field "established" to indicate whether context establishment is in progress; this prevents recursive failures when auth_refresh() calls clnt_call(). If clnt_call() called from auth_refresh() gets an error condition, the clnt_call() logic will attempt a refresh, which can cause the cl_auth to get destroyed multiple times, corrupting memory. (authgss_validate, authgss_refresh): Use gd->established. (authgss_refresh): Release gd->gc_wire_verf. (authgss_destroy_context): Log clnt_call() failures. * auth_gssapi.h: Add prototypes for svcauth_gss_set_log_*_func. * authgss_prot.c (log_status): Correctly reset msg_ctx between different types of calls to gss_display_status(). * svc.c: Don't reset xp_auth prior to authenticating message. * svc.h (svc_req): Remove rq_svcname; application can get it from rq_svccred anyway. * svc_auth_gss.c: Include auth_gssapi.h to get typedefs for logging callback functions. Enable logging callbacks. Replace SVCAUTH_PRIVATE_LVALUE() kludge. Fix up namespace somewhat to not use reserved names. (svcauth_gss_accept_sec_context): Free rpc_gss_init_args to avoid leak. Release gr->gr_token on error conditions. (svcauth_gss_nextverf, svcauth_gss_accept_sec_context): (gssrpc__svcauth_gss): Use gd->checksum. (gssrpc__svcauth_gss): Use macro ret_freegc() to ensure freeing of gc. On destroy, set *no_dispatch=TRUE and explicitly send reply to avoid application sending a NULLPROC reply with an invalid verifier. * svc_auth_gssapi.c (gssrpc__svcauth_gssapi): Set xp_auth to NULL upon destroy. (svc_auth_gssapi_destroy): New function so SVCAUTH_DESTROY() will work. * svc_tcp.c (svctcp_create, makefd_xprt): Initialize xp_auth to NULL. (svctcp_destroy): Call SVCAUTH_DESTROY() if appropriate. * svc_udp.c (svcudp_bufcreate, svcudp_destroy): Initialize xp_auth to NULL. (svcudp_destroy): Only close xp_sock if it's not -1. Call SVCAUTH_DESTROY() if appropriate. * xdr_rec.c (xdrrec_getpos): Add CITI's fix to return position for non-flushed buffers. 2004-06-04 Ken Raeburn * Makefile.in (LIBBASE): Renamed from LIB. 2004-05-30 Ken Raeburn * clnt_tcp.c: Include string.h. 2004-05-27 Tom Yu * auth_any.c, svc_auth_any.c: Removed. * auth_gss.h: New file, was CITI's auth_ssapi.h. * auth_gss.c, authgss_prot.c, svc_auth_gssapi.c, svc_auth_none.c: New files. * rename.h: New file containing renaming macros for external names. * Makefile.in (DEFINES): Add -DGSSRPC__IMPL for accessing internals. (LIBMAJOR): Bump due to ABI changes; this ABI is still subject to change without future version bumps until released. (SRCS, OBJS, STLIBOBJS, HDRS, SRC_HDRS): Adjust for new files * types.hin: Check for 8-bit bytes, two's-complement integers. Use configure-determined inclusions of various headers instead of depending on HAVE_*. Rearrange logic of sys/select.h, netinet/in.h, etc. inclusions. Include rename.h. Add typedefs for rpcprog_t, rpcvers_t, rpcprot_t, rpcproc_t, rpcport_t, rpc_inline_t. (GSSRPC__BEGIN_DECLS, GSSRPC__END_DECLS): New macros for C++ compatibility. [GSSRPC__FAKE_INT32]: Fake up a fixed-width 32-bit integer if the system doesn't provide one in its headers. [GSSRPC__BSD_TYPEALIASES]: Add typedefs for BSD-style type aliases, e.g., u_char. Can be overridden at compile-time. * auth.h, auth_gssapi.h, auth_unix.h, clnt.h, pmax_clnt.h: * pmap_prot.h, pmap_rmt.h, rpc.h, rpc_msg.h, svc.h, svc_auth.h: * xdr.h: Fix inclusion protection. Use GSSRPC__{BEGIN,END}_DECLS for declarations. "unsigned int" -> "u_int", etc. "rpc_int32" -> "int32_t", etc. Move renaming to rename.h. Move some external names out of implementation namespace. Make struct tags identical to typedef names, mostly. Use rpcprog_t and friends as appropriate. * auth.h: Add RPCSEC_GSS errors. Add RPCSEC_GSS flavor. Disable AUTH_GSSAPI_COMPAT flavor. "AUTH_wrap" -> "auth_wrap", "AUTH_unwrap" -> "auth_unwrap". * svc_auth.h: Hide individual flavors of authenticators under GSSRPC__IMPL. Adjust for "svc_auth_any" -> "svc_auth_none". (SVCAUTH_DESTROY): New macro. * rpc.h: Prototype gssrpc__rpc_dtablesize(). * svc.h (svc_req): Add rq_clntname, rq_svcname. * xdr.h (MAX_NETOBJ_SZ): Adjust to 2048. * auth_gssapi.c, auth_gssapi_misc.c, auth_none.c, auth_unix.c: * bindresvport.c, clnt_generic.c, clnt_perror.c, clnt_raw.c: * clnt_simple.c, clnt_tcp.c, clnt_udp.c, get_myaddress.c: * getrpcent.c, getrpcport.c, pmax_clnt.c, pmap_getport.c: * pmap_prot2.c, pmap_rmt.c, rpc_callmsg.c, rpc_commondata.c: * rpc_dtablesize.c, rpc_port.c, svc.c, svc_auth.c: * svc_auth_gssapi.c, svc_auth_unix.c, svc_run.c, svc_simple.c: * svc_tcp.c, svc_udp.c, xdr.c, xdr_alloc.c, xdr_array.c: * xdr_float.c, xdr_mem.c, xdr_rec.c, xdr_reference.c, xdr_stdio.c: * xdr_stdio.c: Lots of type renaming, including BSD typealiases, use of int32_t and uint32_t, rpc*_t for protocol constants. Fixed namespace issues, moving renaming out of individual files. Moved symbols out of implementation namespace. * xdr.c: Add checks on integer values, in order to return errors when an attempt is made to encode an integer that won't fit in 4 bytes, or to decode an integer that won't fit into its target type. * auth_none.c: Use authnone_wrap instead of authany_wrap. (authnone_wrap): New function. * auth_unix.c: Use authunix_wrap instead of authany_wrap. (authunix_wrap): New function. * xdr_mem.c, xdr_rec.c: Fix some sizeof vs BYTES_PER_XDR_UNIT issues. 2004-04-22 Ken Raeburn * libgssrpc.exports: New file. 2004-04-02 Ken Raeburn * svc_auth_gssapi.c (destroy_client): Don't call purify_watch_n even if PURIFY is defined. 2003-04-23 Ken Raeburn * bindresvport.c: Include errno.h. (gssrpc_bindresvport): Don't declare errno. * clnt_tcp.c: Don't declare errno. * svc.c: Don't declare errno. Include errno.h. 2003-03-24 Tom Yu * xdr_mem.c (xdrmem_create): Perform some additional size checks. (xdrmem_getlong, xdrmem_putlong, xdrmem_getbytes): Check x_handy prior to decrementing it. 2003-01-12 Ezra Peisach * svc_auth_gssapi.c (_svcauth_gssapi_unset_names): If invoked more than once, do not double free memory. * clnt_perror.c (clnt_sperror): Do not write past end of allocated buffer. 2003-01-10 Ken Raeburn * configure.in: Don't explicitly invoke AC_PROG_ARCHIVE, AC_PROG_ARCHIVE_ADD, AC_PROG_RANLIB, AC_PROG_INSTALL. * configure.in: Use V5_AC_OUTPUT_MAKEFILE instead of K5_GEN_MAKEFILE and K5_AC_OUTPUT. * Makefile.in: Add AC_SUBST_FILE marker for lib_frag and libobj_frag. 2003-01-07 Ken Raeburn * Makefile.ov: Deleted. 2003-01-05 Sam Hartman * svc_run.c svc_udp.c : Remove declaration of errno * clnt_udp.c pmap_getmaps.c pmap_rmt.c svc_auth_gssapi.c: Remove declaration of errno 2002-12-18 Ken Raeburn * auth_gssapi_misc.c (xdr_gss_buf, auth_gssapi_wrap_data, auth_gssapi_unwrap_data): Use temporary variables rather than pointer casts when dealing with integral types of different sizes. 2002-12-12 Tom Yu * Makefile.in (all-prerecurse): Change double colons to single colons. 2002-11-11 Ken Raeburn * get_myaddress.c (get_myaddress): Local array buf size should be counted in ifreq structs, not ifconf structs. 2002-10-31 Ken Raeburn * xdr_alloc.c (xdralloc_putlong): Coerce value pointed to by argument to 32 bits, rather than reading only 32 bits from the supplied address. 2002-09-24 Ken Raeburn * Makefile.in ($(HDRS)): Depend on includes. 2002-08-29 Ken Raeburn * Makefile.in: Revert $(S)=>/ change, for Windows support. 2002-08-23 Ken Raeburn * Makefile.in: Change $(S)=>/ and $(U)=>.. globally. 2002-08-12 Tom Yu * xdr.c (xdr_string): Fix off-by-one error; we're not vulnerable, since we don't call it. 2002-08-02 Tom Yu * xdr_array.c (xdr_array): Account for elsize when checking encoded array count. 2002-07-17 Ken Raeburn * dyn.c: New file, combining contents of old util/dyn library, with unused functions omitted, and memmove assumed. * dyn.h: Moved from util/dyn/dyn.h, symbol renaming macros added. Changed element size to size_t. Include stdlib.h. * dynP.h: Moved from util/dyn/dynP.h, symbol renaming macros added. * dyntest.c: Moved from util/dyn/test.c. * Makefile.in (SHLIB_EXPDEPS, SHLIB_EXPLIBS): Omit libdyn references. (SRCS, OBJS, STLIBOBJS): Build dyn.c. (dyntest, run-dyntest, clean-dyntest): New targets. (check-unix): Depend on run-dyntest. (clean-unix): Depend on clean-dyntest. (LCLINT, LCLINTOPTS): Moved from util/dyn/Makefile.in. (do-dyn-lclint): New target, untested. * xdr_alloc.c: Include "dyn.h" instead of . 2001-12-14 Ezra Peisach * svc_auth_gssapi.c (_gssrpc_svcauth_gssapi): Local return variable declared enum auth_stat instead of int. 2001-12-07 Ezra Peisach * clnt_raw, clnt_tcp.c, clnt_udp.c: Use a union structure to ensure argument alignment. * pmap_clnt.c, pmap_clnt.h (pmap_set): Change port argument to int to avoid width warnings. * rpc_callmsg.c (xdr_callmsg): Cast argument to XDR_INLINE to avoid signed vs. unsigned warning. * svc.c: Cast assignment to avoid signed warning. * xdr.c (xdr_u_short, xdr_u_long): cast pointers to long * in invocation of XDR_PUTLONG. * xdr_alloc.c (xdralloc_putbytes): Cast argument to DynInsert to avoid signed/unsigned warning. * auth_gssapi.c, svc_auth_gssapi, xdr_rec.c: Cast arguments to avoid alignment warnings. * svc_tcp.c, xdr_stdio.c: Cast argument to fread/fwrite/read/write. 2001-10-09 Ken Raeburn * auth_gssapi.h, auth_gssapi_misc.c, getrpcent.c, svc_auth_gssapi.c, xdr.h: Make prototypes unconditional. Don't define PROTOTYPE. 2001-10-05 Ken Raeburn * auth_gssapi.h, getrpcent.c, xdr.h: Drop _MSDOS support. 2001-08-10 * clnt_udp.c (clntudp_call): Do not assume that select will not change the timeout struct timeval. Under Linux, this reflects the time left available - which might result in 0 in the case of a timeout. When attempting to resend a request, this may results in a timeout of zero - flooding the server with replay requests. * clnt_tcp.c (readtcp): Same. * pmap_rmt.c (clnt_broadcast): Same * svc_tcp.c (readtcp): Same 2001-07-26 Ezra Peisach * xdr_reference.c (xdr_reference): Remove cast in argument to memset. * svc_auth_gssapi.c: In call to gss_accept_sec_context, pass OM_uint32 * instead of int *; * pmap_clnt.h, pmap_getport.c (pmap_getport): Prototype changed for protocol from unsigned int to rpc_u_int32 to match struct pmap. * getrpcport.c (gssrpc_getrpcport): Update to reflect proper calling conventions. * rpc.h (callrpc): Change prototype from expecting ints for prognum, versnum and procnum to rpc_u_int32 for consistancy. (getrpcport): Update arguments in similar fashion. * clnt_simple.c (gssrpc_callrpc): Update to reflect prototype change. * auth_gssapi_misc.c (auth_gssapi_display_status_1): Local variable msg_ctx should be OM_uint32 instead of int as argument to gss_display_status. 2001-07-25 Ezra Peisach * auth_gssapi.c (auth_gssapi_create): Change calling convention from passing ints as arguments to OM_uint32 to match spec for gss_init_sec_context. * auth_gssapi.h: Update prototype for auth_gssapi_create. * svc.h (struct svc_req): The rq_clntcred and rq_svccred elements are now void *. 2001-07-19 Ezra Peisach * xdr_mem.c: Do not assume that XDR x_private field is char *. * auth.h: AUTH ah_private structure element changed to void *. * clnt.h: CLIENT cl_private structure element changed to type void *. * svc.h: SVCXRPT elements xp_p1 and xp_p2 changed to void * from caddr_t. * svc_udp.c: su_cache element of svcudp_data from caddr_t to void *. * clnt_tcp.c, svc_tcp.c (writetcp, readtcp): Cleanup alignment warning in casts. * types.hin (mem_alloc): Do not cast type of malloc to char *. * xdr.h: Change type of x_private of XDR from caddr_t to void *. 2001-07-09 Ezra Peisach * pmap_rmt.c, svc.c, svc_simple.c, svc_udp.c, svc_tcp.c, xdr_array.c, xdr_reference.c : Include string.h for memset and memcmp prototypes. * auth_gssapi.c, auth_gssapi_misc.c, svc_auth_gssapi.c: Cast argment to PRINTF to match format. 2001-07-08 Ezra Peisach * svc.c (xprt_register): If svc_fdset has not been initilized, FD_ZERO it. * rpc_commondata.c: Do not assume what the structure of an fd_set looks like. Add variable gssrpc_svc_fdset_init to determine if initialized. 2001-07-06 Ezra Peisach * auth_unix.c: In case GETGROUPS_T is not defined, default to int. 2001-07-05 Ezra Peisach * configure.in: Add AC_TYPE_GETGROUPS to determine argument to getgroups. * auth_unix.c (authunix_create_default): Use GETGROUPS_T array in call to getgroups. Copy into array of int for call to authunix_create. Note: If auth_unix protection ever used with this code, we will need to cleanup assumptions in int being 32 bits in OTW transfer of gids. * clnt_tcp.c, svc_tcp.c: Change writetcp and readtcp to take char as first argument to be compatible with xdrrec_create. * xdr.c (xdr_opaque): Cast argument in call to XDR_GETBYTES. * svc.h: Add prototype for gssrpc_svcudp_enablecache. * svc_auth_gssapi.c (_gssrpc_svcauth_gssapi): Change _svcauth_gssapi to _gssrpc_svcauth_gssapi for consistancy. * svc_auth.c: Move prototypes for _gssrpc_svcauth_{unix, null, short, gssapi} to: * svc_auth.h: here. * svc_auth_unix.c: Update _gssrpc_svcauth_short and _gssrpc_svcauth_unix to match prototype. 2001-06-28 Ezra Peisach * auth.h: Provide full prototype for xdr_des_block. * auth_gssapi.h: Complete prototypes for _svcauth_gssapi_unset_names(). * clnt.h: Prototype dispatch functions and all functions. * clnt_perror.c: Prototype static auth_errmsg(). * clnt_raw.h clnt_tcp.c, clnt_udp.c: Provide prototypes to static functions and match dispatch table prototypes. control function takes void * instead of caddr_t. * pmap_rmt.c: Move prototype for resultproc_t to pmap_clnt.h. * rpc.h: get_myaddress returns int. Add prototypes for callrpc and getrpcport. * rpc_commondata.c (rpc_createerr): When initializing rpc_creaerr use RPC_SUCCESS instead of 0. * get_myaddress.c, rpc_dtablesize.c: Include gssrpc/rpc.h for prototype. * pmap_clnt.h, pmap_prot.h, pmap_rmt.h, rpc_msg.h: Full prototypes for all functions. * svc.c: Provide full prototype for static function. * svc.h: Prototypes for dispatch functions added. Flushed out prototypes for all functions missing prototypes. Added prototype for svcfd_create. * svc_auth.c: Prototypes for all functions referenced. * svc_auth.h: Prototype dispatch functions to svc_auth_ops. * svc_auth_any.c: Replace use of authany_wrap() with a new local function that matches svc_auth_ops dispatch table. * svc_simple.c: Provide prototype for static function universal. Fill in missing types of parameters to gssrpc_registerrpc. * svc_raw.c svc_tcp.c, svc_udp.c: Provide prototypes for static functions and match prototypes in dispatch table. Change getargs and freeargs argument to void * from caddr_t. * xdr.c (xdr_void): Function to match prototype of arguments given. * xdr.h: Provide full prototypes for xdr_ops dispatch table and xdr_void(). * svc_auth_gssapi.c, xdr_alloc.c, xdr_mem.c, xdr_rec.c, xdr_stdio.c: Provide protypes for static functions and match dispatch tables. 2001-06-27 Ezra Peisach * bindresvport.c: Include gssrpc/rpc.h for prototype. * auth_unix.h: Expand prototype for xdr_authunix_params to include arguments. * auth_gssapi.h: Give full prototypes for xdr_gss_buf, xdr_authgssapi_creds, xdr_authgssapi_init_arg and xdr_authgssapi_init_res. * auth_gssapi.c, auth_none.c, auth_unix.c: For struct AUTH disptach functions, provide full prototypes and ensure consistant usage in functions * auth.h: Provide prototypes dispatch functions in struct AUTH. Give a forward declaration of struct rpc_msg. Change duplicate definitions of AUTH_WRAP and AUTH_UNWRAP into auth_wrap and auth_unwrap. Give full prototype for authany_wrap. 2001-06-21 Ezra Peisach * svc_simple.c (universal): Change transp to s_transp to not shadow filewide static definition of name. Move file wide definition of "pl" into respective functions. * pmap_rmt.c: Change sin->sockin and socket->sock. * pmap_getmaps.c, pmap_getport.c: Change socket to sock to not shadow network function. * bindresvport.c, clnt_generic.c: Change sin to sockin to not shadow function declaration. 2001-06-19 Ezra Peisach * pmap_prot2.c (xdr_pmaplist): Ensure variable set before use. 2001-06-18 Ezra Peisach * auth_gssapi.c (auth_gssapi_create): Cast const gss_OID to gss_OID for gssapi functions. * xdr.c (xdr_u_int, xdr_int32, xdr_u_int32): If enumerated operation is not XDR_ENCODE, XDR_DECODE or XDR_FREE - return FALSE instead falling off end of function. 2001-06-08 Ezra Peisach * auth_gssapi.h: Rename prototypes from _svcauth_set_log_XXX_func to _svcauth_gssapi_set_log_XXX_func to match code. 2001-06-05 Ezra Peisach * clnt_perror.c (clnt_spcreateerror): Enumerate missing cases in switch. * getrpcport.c: Include string.h for memmove() prototype and pmap_clnt.h for pmap_getport() prototype. * rpc_dtablesize.c (_gssrpc_rpc_dtablesize): Declare as returning int. * get_myaddress.c (gssrpc_get_myaddress): Likewise. * rpc_prot.c (gssrpc_xdr_accepted_reply, sunrpc_seterr_reply): Enumerate missing cases for switch. (rejected): Fix typo: RPC_VERMISMATCH -> RPC_MISMATCH for enumerated switch. * svc_auth.c: Add braces to svcauthsw[] initialization. * svc_simple.c: Include pmap_clnt.h for pmap_unset prototype. * bindresvport.c, clnt_simple.c, clnt_tcp.c, clnt_udp.c, pmap_clnt.c, pmap_getmaps.c, pmap_gtport.c, pmap_rmt.c, svc_tcp.c, svc_udp.c: Include unistd.h for close() prototype. * xdr.c (xdr_opaque): Specify internal buffer as ints. (xdr_u_int32): Declare as returning bool_t. * clnt_generic.c, rpc_callmsg.c, svc_auth_unix.c, xdr_mem.c: Include string.h for memmove() prototype. * xdr_rec.c: Include string.h for memmove() prototype. Add dummy XDR_FREE cases for switches. * xdr_reference.c (xdr_reference): Add XDR_ENCODE case. (gcc warning). * xdr_array.c (xdr_array): Likewise. * auth.h: Include gssrpc/xdr.h and provide prototype for gssrpc_xdr_opaque_auth(). * auth_gssapi.h: Add prototypes for auth_gssapi_seal_seq() and auth_gssapi_unseal_seq(). * clnt.h: Add prototype for _gssrpc_rpc_dtablesize(). * rpc.h: Add prototypes for gssrpc_get_myaddress() and gssrpc_bindresvport(). 2001-03-07 Ken Raeburn * configure.in: Check for strerror. * clnt_perror.c (strerror) [!HAVE_STRERROR]: Define, with out-of-range check using sys_nerr. (sys_nerr) [!HAVE_STRERROR]: Declare at top level instead of in clnt_spcreateerror. (clnt_sperror, clnt_spcreateerror): Use strerror always. Skip range check. Sun Feb 18 17:48:35 2001 Ezra Peisach * xdr.h: Flush out prototypes for xdrmem_create(), xdrstdio_create(), xdrrec_create(), xdralloc_create(), xdralloc_release(), xdrrec_endofrecord(), xdrrec_skiprecord(), xdrrec_eof(), xdralloc_getdata(). Add prototype for gssrpc_xdr_fre(). * xdr.c: Argument to gssrpc_xdr_free(0 changed from char * to void *. xdr_u_char() changed to take unsigned char * instead of char *. * auth_unix.c: Include unistd.h and string.h for prototypes. Declare marshal_new_auth() as static void instead of static bool_t based on usage. * auth.h, svc_auth.h: Provide full prototypes for a number of functions. 2000-06-21 Tom Yu * svc_auth_gssapi.c (_svcauth_gssapi): Missed a rename. From Nathan Neulinger. 2000-05-31 Ken Raeburn * pmap_rmt.c (GIFCONF_BUFSIZE): New macro. (getbroadcastnets): Use it for buffer size. (clnt_broadcast): Make buffer at least that big. * get_myaddress.c (get_myaddress): Increase buffer size. 2000-05-18 Ken Raeburn * auth_gssapi_misc.c (auth_gssapi_display_status_1): Don't pass a gss_buffer_desc to fprintf. * clnt_tcp.c (clnttcp_create): Initialize "ct". * clnt_udp.c (clntudp_bufcreate): Initialize "cu". * svc_auth_gssapi.c (_svcauth_gssapi, create_client, destroy_client, dump_db, clean_client): Use %p format for displaying pointers. Remove unused variables. 2000-05-17 Ken Raeburn Nalin Dahyabhai * clnt_perror.c (clnt_sperror): Don't overflow buffer "str" beyond known allocation size. * clnt_simple.c (gssrpc_callrpc): Don't overfill buffer "crp->oldhost". 2000-05-03 Nalin Dahyabhai * clnt_perror.c (_buf): Use bigger buffer. (clnt_spcreateerror): Don't overflow buffer "buf" beyond known allocation size. 2000-02-22 Donn Cave * Makefile.in (includes): Extract basename of header file to be installed, since Digital UNIX 4.0 native make substitutes the VPATH-derived pathname here. 2000-02-17 Tom Yu * svc_auth_gssapi.c (_svcauth_gssapi): Don't explicitly free call_arg on error, since svc_getargs should do that now. * svc_udp.c (svcudp_getargs): Free args on xdr decode error to avoid leaks. * svc_tcp.c (svctcp_getargs): Free args on xdr decode error to avoid leaks. * svc_raw.c (svcraw_getargs): Free args on xdr decode error to avoid leaks. * auth_gssapi.c (auth_gssapi_create): Don't explicitly free call_res anymore, since clnt_call should deal now. * clnt_udp.c (clntudp_call): Free stuff on error from xdr_replymsg() to prevent leaking. * clnt_tcp.c (clnttcp_call): Free stuff on error from xdr_replymsg() to avoid leaking. * clnt_raw.c (clntraw_call): Free stuff on error from xdr_replymsg() to avoid leaking. 2000-02-16 Tom Yu * auth_gssapi.c (auth_gssapi_create): Free call_res because xdr_authgssapi_init_res can potentially allocate memory. Perhaps clnt_call should really deal with this, though. It is not at all clear whether clnt_call or svc_getargs should actually end up freeing allocated memory themselves. 2000-02-15 Tom Yu * svc_auth_gssapi.c (_svcauth_gssapi): Call gssrpc_xdr_free() if xdr_authgssapi_creds() or xdr_authgssapi_init_arg() fails. * auth_gssapi_misc.c (xdr_authgssapi_creds): (xdr_authgssapi_init_arg): (xdr_authgssapi_init_res): Revert prior change. The caller should be the one dealing. Additionally, it was probably wrong to unconditionally free the object regardless of whether the mode is XDR_DECODE. (auth_gssapi_unwrap_data): Use temp_xdrs rather than in_xdrs to force XDR_FREE operation. 2000-02-14 Tom Yu * svc.c (xprt_register): Zero out xports after allocating. * auth_gssapi_misc.c (xdr_authgssapi_creds): (xdr_authgssapi_init_arg): (xdr_authgssapi_init_res): (auth_gssapi_unwrap_data): If xdr_gss_buf or xdr_bytes fails, call again with XDR_FREE set so that allocated memory doesn't leak. 2000-01-24 Tom Yu * get_myaddress.c (gssrpc_get_myaddress): Copy in from NetBSD; use loopback address only. 1999-10-26 Wilfredo Sanchez * Makefile.in: Clean up usage of CFLAGS, CPPFLAGS, DEFS, DEFINES, LOCAL_INCLUDES such that one can override CFLAGS from the command line without losing CPP search patchs and defines. Some associated Makefile cleanup. Fri Apr 23 20:05:38 1999 Tom Yu * svc.c: Fix to reference the correct xprt because we're no longer calling ffs(); also remove some unused variables. Wed Apr 21 16:22:32 1999 Tom Yu * svc.c (xprt_unregister): Fix typo. 1999-04-14 * svc.c (svc_getreq, svc_getreqset): Avoid using internal, private fd_set structure elements (Needed for Linux/glibc 2.1) Thu Apr 1 19:11:50 1999 Tom Yu * rpc_commondata.c: Add initializers to prevent lossage on systems that don't deal with common blocks in libraries. 1998-11-13 Theodore Ts'o * Makefile.in: Set the myfulldir and mydir variables (which are relative to buildtop and thisconfigdir, respectively.) 1998-10-27 Marc Horowitz * svc_auth_gssapi.c, auth_gssapi.h: fix the set_name prototype, add a new unset_names function Sun Jul 26 18:13:39 1998 Sam Hartman * Makefile.in (LIBMAJOR): bump libmajor Wed Apr 15 18:07:38 1998 Tom Yu * Makefile.in (SHLIB_EXPDEPS): (SHLIB_EXPLIBS): Rename libcrypto -> libk5crypto. Mon Apr 6 19:44:51 1998 Tom Yu * Makefile.in (includes): Don't mkdir unless the directory doesn't exist yet. Wed Feb 18 16:26:19 1998 Tom Yu * Makefile.in: Remove trailing slash from thisconfigdir. Fix up BUILDTOP for new conventions. Fri Feb 13 20:57:49 1998 Tom Yu * auth.h: Renames. * auth_any.c: Update header locations. * auth_gssapi.c: Punt naughty RCS keywords. Update header locations. Remove explicit extern decl of rpc_createrr (clnt.h gets it). Renames. * auth_gssapi.h: Punt naughty RCS keywords. * auth_gssapi_misc.c: Punt naught RCS keywords. Update header locations. * auth_none.c: Update header locations. Renames. * auth_unix.c: Update header locations. Renames. * auth_unix.h: Renames. * authunix_prot.c: Update header locations. * bindresvport.c: Renames. * clnt.h: Renames. * clnt_generic.c: Update header locations. * clnt_perror.c: Update header locations. * clnt_raw.c: Update header locations. Renames. * clnt_simple.c: Update header locations. Renames. * clnt_tcp.c: Update header locations. Renames. * clnt_udp.c: Upate header loations. Renames. * get_myaddress.c: Update header locations. Renames. * getrpcent.c: Update header locations. * getrpcport.c: Update header locations. Renames. * netdb.h: Update header locations. * pmap_clnt.c: Update header locations. Renames. * pmap_clnt.h: Renames. * pmap_getmaps.c: Update header locations. * pmap_getport.c: Update header locations. * pmap_prot.c: Update header locations. * pmap_prot.h: Renames. * pmap_prot2.c: Update header locations. * pmap_rmt.c: Update header locations. Renames. * pmap_rmt.h: Renames. * rpc.h: Update header locations. No longer include rpc/netdb.h. * rpc_callmsg.c: Update header locations. Renames. * rpc_commondata.c: Update header locations. * rpc_dtablesize.c: Renames. * rpc_msg.h: Renames. * rpc_prot.c: Update header locations. Renames. * svc.c: Update header locations. Renames. * svc.h: Renames. * svc_auth.c: Update header locations. Renames. * svc_auth.h: Renames. * svc_auth_any.c: Update header locations. * svc_auth_gssapi.c: Punt naughty RCS keywords. Update header locations. Renames. * svc_auth_unix.c: Renames. * svc_raw.c: Update header locations. * svc_run.c: Update header locations. Renames. * svc_simple.c: Update header locations. Renames. Make pl static. * svc_tcp.c: Update header locations. Renames. * svc_udp.c: Update header locations. Renames. * xdr.c: Update header locations. Renames. * xdr.h: Renames. * xdr_alloc.c: Punt naughty RCS keywords. Update header locations. * xdr_array.c: Update header locations. * xdr_float.c: Update header locations. * xdr_mem.c: Update header locations. * xdr_rec.c: Update header locations. * xdr_reference.c: Update header locations. * xdr_stdio.c: Update header locations. * Makefile.in: Bump major version due to changes. Don't build getrpcent.o, since we don't use it, and dealing with the rpc/netdb.h lossage was a major pain. Also, rename HDRDIR to $(BUILDTOP)/gssrpc in order to avoid problems with system headers including rpc/*.h. Thu Feb 12 16:18:22 1998 Tom Yu * configure.in: Add commented out AC_OUTPUT to force autoreconf to rebuild the configure script. Mon Feb 2 17:00:16 1998 Theodore Ts'o * Makefile.in: Define BUILDTOP and thisconfigdir in the Makefile * configure.in, Makefile.in: Remove CopySrcHeader and CopyHeader from configure.in and move equivalent functionality to Makefile.in Wed Jan 21 15:06:00 1998 Ezra Peisach * bindresvport.c: Include string.h for memset prototype. Tue Dec 16 11:22:13 1997 Ezra Peisach * svc_auth_gssapi.c (_svcauth_gssapi): When looping over services, free previous output_tokens. Fri Nov 21 00:37:14 1997 Ezra Peisach * Makefile.in (types.h): Add rules to generate file by running config.status. Remove on make clean. Tue Oct 21 14:31:33 1997 Ezra Peisach * svc_auth_gssapi.c (destroy_client): Fix to not lose entries in the chain linked list. Mon Aug 18 09:48:06 1997 Ezra Peisach * get_myaddress.c: Include string.h for memcpy prototype. Sat Feb 22 01:34:19 1997 Sam Hartman * Makefile.in (SHLIB_EXPDEPS): s/.so/$(SHLIBEXT) Mon Feb 10 11:10:02 1997 Ezra Peisach * configure.in: Check for sys/uio.h. * svc_udp.c: Include sys/uio.h is available for struct iovec. Mon Feb 10 00:04:36 1997 Tom Yu * svc_udp.c (svcudp_recv): Avoid coredumps under Solaris (and possibly other systems) by passing in a non-NULL iovec to recvmsg(). Thu Jan 16 19:02:22 1997 Tom Yu * Makefile.in (all-prerecurse): Update to use double-colon rules. Tue Jan 14 19:22:42 1997 Tom Yu * Makefile.in: * configure.in: Update to new library build procedure. Wed Dec 4 12:42:49 1996 Barry Jaspan * Various changes to allow channel bindings to work with both UDP and TCP cleanly [krb5-libs/180]: * auth_gssapi.c: remove the special-case exception to channel bindings failure added in the previous revision, since we now solve the problem by making channel bindings not fail * clnt_udp.c: use a connected socket so that the client can determine its own source address with getsockname * svc.h: add xp_laddr and xp_laddrlen fields to SVCXPRT structure * svc_tcp.c: set xp_laddr and xp_laddrlen when a connection is established * svc_udp.c (svcudp_recv): use recvmsg with MSG_PEEK followed by recvfrom in order to determine both source and dest address on unconnected UDP socket, set xp_laddr and xp_laddrlen Fri Nov 22 15:50:42 1996 unknown * get_myaddress.c (get_myaddress): use krb5_os_localaddr instead of ioctl() to get local IP addresses [krb5-libs/227] * clnt_generic.c, clnt_simple.c, getrpcport.c: use sizeof instead of h_length to determine number of bytes of addr to copy from DNS response [krb5-misc/211] Fri Nov 22 11:49:43 1996 Sam Hartman * types.hin: Include stdlib.h if found at config time [203] * configure.in: Substitute STDLIB_INCLUDE into types.h. [203] Tue Nov 12 16:27:27 1996 Barry Jaspan * auth_gssapi.c (auth_gssapi_create): handle channel bindings failure so UDP connections can work [krb5-libs/180] Tue Nov 5 18:43:46 1996 Tom Yu * configure.in: Revert removal of CopySrcHeader, etc., for now. * Makefile.in (OBJS): Remove dependency of $(OBJS) on shared, also remove dependency of $(HDRS) on $(HDRDIR). Both of these to avoid unecessary copying. Wed Oct 30 13:18:34 1996 Barry Jaspan * xdr_stdio.c: Remove the #ifndef mc68000 cruft. I'm not sure what it was supposed to accomplish, but in both places it appeared it was unquestionably wrong. I suspect that the ifdef was put in originally to optimize byte-alignment code that wasn't necessary on the 68000. Who knows? Someone will complain if this isn't right. [krb5-libs/47] Tue Oct 29 13:03:50 1996 Barry Jaspan * auth_gssapi.c (auth_gssapi_create): #ifdef GSSAPI_KRB5, a null mech_type implies gss_mech_krb5, so include that in the version 3 fallback test. This change, along with the other changes for rpc version 4, complete the fix for [krb5-libs/106]. Wed Oct 23 00:08:27 1996 Theodore Y. Ts'o * pmap_rmt.c: * clnt_udp.c: Change #ifdef sparc to #ifdef sun for more portability. [fixes PR#123] Mon Oct 21 21:22:42 1996 Tom Yu * Makefile.in, configure.in: Fixes to work with new directory recursion method. Wed Oct 16 16:12:07 1996 Barry Jaspan * svc_auth_gssapi.c (_svcauth_gssapi): accept add call_arg version 4 Tue Oct 15 17:04:09 1996 Barry Jaspan * Makefile.in (CFLAGS): compile with -DGSSAPI_KRB5 * svc_auth_gssapi.c: add #ifdef GSSAPI_KRB5 for krb5 specific code * auth_gssapi.c (auth_gssapi_create): add call_arg version 4, make version 3 use using gss_mech_krb5_old (under #ifdef GSSAPI_KRB5) * configure.in: add DO_SUBDIRS so make will descend into unit-test Wed Oct 9 14:15:34 1996 Tom Yu * Makefile.in (all-unix): Force $(OBJS) to depend on includes, fixing incompatibilty with makes that don't evaluate dependencies l-r. Tue Sep 3 23:10:58 1996 Theodore Y. Ts'o * auth_gssapi.c: Remove $LOG$, including "unprofessional" comment which OV requested that we lose.... Sat Aug 31 01:46:45 1996 Ken Raeburn * pmap_rmt.c (getbroadcastnets): Tweak conditional layout to make emacs indentation code happier. * netdb.h: Comment fix. Tue Aug 6 18:52:47 1996 Marc Horowitz * configure.in, getrpcent.c: Use configure to the return types of setrpcent() and getrpcent(). Also, check for struct rpcent in the system , and only define the structure in rpc/netdb.h if it's not in the system file. Tue Aug 13 15:18:16 1996 Tom Yu * getrpcent.c: Add PROTOTYPE and conditionalize function prototypes. * xdr.h: Add PROTOTYPE and conditionalize function prototypes. * svc_auth_gssapi.c: Remove ANSI string concatenation, de-ANSI-fy function definitions. * auth_gssapi_misc.c (auth_gssapi_display_status_1): Remove ANSI string concatenation, de-ANSI-fy function definitions. * auth_gssapi.h: Add PROTOTYPE and conditionalize function prototypes. * auth_gssapi.c (auth_gssapi_create): remove ANSI-ish string concatenation, de-ANSI-fy function definitions. Thu Aug 8 15:30:01 1996 Tom Yu * configure.in, types.hin: Change search for struct rpcent yet again, this time compile-checking both netdb.h and rpc/netdb.h and taking action appropriately. See the comments in configure.in for details. Mon Aug 5 16:46:48 1996 Tom Yu * Makefile.in (CFLAGS): Change DEBUG_GSSAPI to 0 to avoid printing excess stuff to stderr. Wed Jul 31 20:36:34 1996 Tom Yu * getrpcent.c: Shuffle inclusion order somewhat. * configure.in: Fix test for STRUCT_RPCENT_ALREADY_PROVIDED if there happens to be a /usr/include/rpc/netdb.h. This causes /usr/include/netdb.h to include netdb.h from our tree rather from /usr/include/rpc, which of course results in massive damage. Basically, if /usr/include/netdb.h contains rpcent declaration and /usr/include/rpc/netdb.h exists, then assume that there is no struct rpcent in the system include files. It's really unfortunate that we need to do this at all, but it's all we can do short of renaming a bunch of include files or directories. * Makefile.in: Punt -I$(srcdir)/..; it was gross and not needed because headers get installed in build tree before building the library anyway. Wed Jul 31 16:54:29 1996 Tom Yu * types.hin: Remove #include because it appears the only reason for doing so was to get struct rpcent, and we're getting that via . * clnt_generic.c, clnt_simple.c, clnt_tcp.c, clnt_udp.c, getrpcent.c, getrpcport.c, pmap_getmaps.c, svc_simple.c: Revert prior change due to netdb.h shuffling. Tue Jul 30 18:59:17 1996 Tom Yu * rpc.h: Don't include netdb.h (rpc/types.h already includes it) * svc_auth_gssapi.c: #include before (to get sys/types.h. * clnt_generic.c, clnt_simple.c, clnt_tcp.c, clnt_udp.c, getrpcent.c, getrpcport.c, pmap_getmaps.c, svc_simple.c: Remove #include ; it's already included in rpc/types.h. Mon Jul 29 22:02:47 1996 Sam Hartman * configure.in: Determine whether netdb.h defines struct rpcent. * types.hin: Expand rpcent_define to be a null string or a #define on Linux. * netdb.h: Include rpc/types.h and only define struct rpcent if needed. Wed Jul 24 07:58:38 1996 Ezra Peisach * pmap_rmt.c (clnt_broadcast): Use memset insetad of bzero. * Makefile.in (DEPLIBS): Use correct version number for gssapi_krb5 dependency. Tue Jul 23 23:49:47 1996 Sam Hartman * clnt_perror.c: Don't declare strcpy. Tue Jul 23 11:24:32 1996 Ezra Peisach * xdr.c: Do not declare malloc(). * Makefile.in (SHLIB_LIBS): Link with gssapi_krb5 when creating shared library. Mon Jul 22 21:46:48 1996 Ezra Peisach * clnt_perror.c: Include errno.h. Fri Jul 12 15:33:50 1996 Marc Horowitz * rpc_dtablesize.c (_rpc_dtablesize): put in a few checks to make sure that the return value is never larger than FD_SETSIZE, since this function's purpose is to be used as the first arg to select(). Tue Jul 9 17:56:54 1996 Marc Horowitz * rpc.h, netdb.h, getrpcent.c: Our build can (and will) require that the rpc header files shipped with kerberos be used if the library shipped with kerberos is used. Thus, some simplifying assumptions can be made, mostly having to do with the declaration of struct rpcent and the related functions. * clnt_perror.c: made usage of sys_errlist conditional on NEED_SYS_ERRLIST * configure.in (DECLARE_SYS_ERRLIST): added * Makefile.in (DONE): added a few rules and variable so shared library creation would work