pending/1083: Oops, wrong files... correct ones attached.

Dave Bailey D.Bailey at bristol.ac.uk
Wed Apr 3 10:23:06 EST 2002


>Number:         1083
>Category:       pending
>Synopsis:       Oops, wrong files... correct ones attached.
>Confidential:   yes
>Severity:       serious
>Priority:       medium
>Responsible:    gnats-admin
>State:          open
>Class:          sw-bug
>Submitter-Id:   unknown
>Arrival-Date:   Wed Apr  3 10:25:00 EST 2002
>Last-Modified:
>Originator:
>Organization:
>Release:
>Environment:
>Description:
>How-To-Repeat:
>Fix:
>Audit-Trail:
>Unformatted:
This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_000_01C1DB23.744C4BA0
Content-Type: text/plain;
	charset="iso-8859-1"

Oops, sent an old version of the patch+makefile. Correct ones are attached.

Dave
                                              __  _
David Bailey                              .-.'  `; `-._  __  _
Bristol University                       (_,         .-:'  `; `-._
Email: D.Bailey at Bristol.ac.uk          ,'o"(        (_,           )
Tel:   +44 117 9546879                (__,-'      ,'o"(            )>
Fax:   +44 117 9255624                   (       (__,-'            )
                                          `-'._.--._(             )
                                             |||  |||`-'._.--._.-'
                                                        |||  |||


------_=_NextPart_000_01C1DB23.744C4BA0
Content-Type: application/octet-stream;
	name="make.win"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="make.win"

# -*- Mode: Makefile -*-=0A=
######################################################################=0A=
#=0A=
# makefile for krb524.dll=0A=
#=0A=
# $Id$=0A=
#=0A=
######################################################################=0A=
# Figure out the CPU=0A=
#=0A=
!if !defined(CPU) || "$(CPU)" =3D=3D ""=0A=
CPU=3D$(PROCESSOR_ARCHITECTURE)=0A=
!endif # CPU=0A=
=0A=
!if "$(CPU)" =3D=3D ""=0A=
CPU=3Di386=0A=
!endif=0A=
=0A=
# Change x86 or X86 to i386=0A=
!if ( "$(CPU)" =3D=3D "X86" ) || ( "$(CPU)" =3D=3D "x86" )=0A=
CPU=3Di386=0A=
!endif # CPU =3D=3D X86=0A=
=0A=
!if ( "$(CPU)" !=3D "i386" ) && ( "$(CPU)" !=3D "ALPHA" )=0A=
!error Must specify CPU environment variable ( CPU=3Di386, =
CPU=3DALPHA)=0A=
!endif=0A=
#=0A=
# End of figuring out CPU=0A=
#=0A=
=0A=
# NOTE: ^ is an escape char for NMAKE.=0A=
=0A=
!ifdef NODEBUG=0A=
OUTPRE_DBG=3Drel=0A=
!else=0A=
OUTPRE_DBG=3Ddbg=0A=
!endif=0A=
OUTPRE1=3Dobj=0A=
OUTPRE2=3D$(OUTPRE1)\$(CPU)=0A=
OUTPRE3=3D$(OUTPRE2)\$(OUTPRE_DBG)=0A=
OUTPRE=3D$(OUTPRE3)^\=0A=
=0A=
KRB5DIR               =3D       ..=0A=
=0A=
KRB5INCS      =3D       /I$(KRB5DIR)\include /I$(KRB5DIR)\include\krb5 =
\=0A=
                       /I$(KRB5DIR)\include\kerberosIV \=0A=
                      /I$(KRB5DIR)\lib=0A=
=0A=
INCLUDES      =3D       $(KRB5INCS)=0A=
=0A=
CC    =3D       cl /nologo=0A=
CFLAGS        =3D       /MD /W3 /O2 $(INCLUDES) $(DEFINES)=0A=
=0A=
LINK  =3D       link.exe /nologo=0A=
=0A=
SRCS  =3D conv_creds.c conv_princ.c cnv_tkt_skey.c \=0A=
        encode.c misc.c globals.c sendmsg.c krb524_err.c=0A=
=0A=
OBJS  =3D conv_creds.obj conv_princ.obj cnv_tkt_skey.obj \=0A=
       encode.obj misc.obj globals.obj sendmsg.obj krb524_err.obj=0A=
=0A=
DEF_FILE      =3D       .\krb524.def=0A=
=0A=
K5LIBS        =3D       $(KRB5DIR)\lib\$(OUTPRE)krb5_32.lib =
$(KRB5DIR)\lib\krb5\$(OUTPRE)krb5.lib \=0A=
                      $(KRB5DIR)\lib\$(OUTPRE)krb4_32.lib =
$(KRB5DIR)\lib\krb4\$(OUTPRE)krb4.lib \=0A=
                      $(KRB5DIR)\lib\$(OUTPRE)comerr32.lib=0A=
=0A=
SYSLIBS       =3D       shell32.lib ws2_32.lib user32.lib kernel32.lib =
advapi32.lib=0A=
LIBS  =3D       $(SYSLIBS) $(K5LIBS)=0A=
=0A=
GETOPTINC        =3D $(KRB5DIR)\util\windows=0A=
GETOPTLIB        =3D $(KRB5DIR)\util\windows\$(OUTPRE)getopt.lib=0A=
=0A=
CFLAGS =3D $(CFLAGS) /I$(GETOPTINC)=0A=
=0A=
######################################################################=0A=
=0A=
all:  krb524.dll=0A=
=0A=
krb524.dll:   $(OBJS)=0A=
	$(LINK) $(LIBS) /subsystem:windows /dll /incremental:no \=0A=
		/pdb:"krb524.pdb" /machine:I386 \=0A=
		/nodefaultlib:"LIBC.lib" \=0A=
		/out:"krb524.dll" \=0A=
		/implib:"krb524.lib" $(OBJS)=0A=
=0A=
krb524d.exe: krb524.dll krb524d.obj=0A=
	$(LINK) /subsystem:console /out:$@ \=0A=
		/nodefaultlib:libc.lib /INCREMENTAL:NO \=0A=
		krb524d.obj $(LIBS) krb524.lib=0A=
=0A=
!ifdef KRB5_DLL_FILE=0A=
.c.obj:=0A=
	$(CC) $(CFLAGS) /c /DKRB5_DLL_FILE $*.c=0A=
!else=0A=
.c.obj:=0A=
	$(CC) $(CFLAGS) /c $*.c=0A=
!endif
------_=_NextPart_000_01C1DB23.744C4BA0
Content-Type: application/octet-stream;
	name="krb5.patch"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="krb5.patch"

*** src/Makefile.in	Thu Feb 28 01:15:15 2002=0A=
--- /h/krb5-1.2.4/src/Makefile.in	Wed Mar 20 17:00:57 2002=0A=
***************=0A=
*** 31,36 ****=0A=
--- 31,39 ----=0A=
  	@echo Making in clients=0A=
  	cd ..\clients=0A=
  	$(MAKE) -$(MFLAGS)=0A=
+ 	@echo Making in krb524=0A=
+ 	cd ..\krb524=0A=
+ 	$(MAKE) -f make.win KRB5_DLL_FILE=3D1 -$(MFLAGS)=0A=
  	@echo Making in appl\gss-sample=0A=
  	cd ..\appl\gss-sample=0A=
  	$(MAKE) -$(MFLAGS)=0A=
***************=0A=
*** 162,168 ****=0A=
  	windows\Makefile windows\lib\Makefile \=0A=
  	windows\cns\Makefile windows\gina\Makefile \=0A=
  	windows\gss\Makefile windows\ms2mit\Makefile \=0A=
! 	windows\wintel\Makefile=0A=
  =0A=
  ##DOS##Makefile-windows:: $(MKFDEP) $(WINMAKEFILES)=0A=
  =0A=
--- 165,172 ----=0A=
  	windows\Makefile windows\lib\Makefile \=0A=
  	windows\cns\Makefile windows\gina\Makefile \=0A=
  	windows\gss\Makefile windows\ms2mit\Makefile \=0A=
! 	windows\wintel\Makefile \=0A=
! 	krb524\make.win=0A=
  =0A=
  ##DOS##Makefile-windows:: $(MKFDEP) $(WINMAKEFILES)=0A=
  =0A=
***************=0A=
*** 276,281 ****=0A=
--- 280,287 ----=0A=
  ##DOS##	$(WCONFIG) config < $@.in > $@=0A=
  ##DOS##windows\wintel\Makefile: windows\wintel\Makefile.in =
$(MKFDEP)=0A=
  ##DOS##	$(WCONFIG) config < $@.in > $@=0A=
+ ##DOS##krb524\make.win:=0A=
+ ##DOS##	@echo Making krb524 make.win=0A=
  =0A=
  clean-windows:: Makefile-windows=0A=
  	@echo Making clean in util=0A=
***************=0A=
*** 327,333 ****=0A=
  	lib/krb5/error_tables/* \=0A=
  	lib/krb5/keytab/* lib/krb5/keytab/file/* lib/krb5/keytab/srvtab/* =
\=0A=
  	lib/krb5/os/* lib/krb5/posix/* lib/krb5/rcache/* \=0A=
! 	util/* util/et/* util/profile/*=0A=
  =0A=
  WINFILES=3D util/windows/* windows/* windows/lib/* windows/cns/* \=0A=
  	windows/wintel/* windows/gss/* windows/gina/* windows/ms2mit/*=0A=
--- 333,340 ----=0A=
  	lib/krb5/error_tables/* \=0A=
  	lib/krb5/keytab/* lib/krb5/keytab/file/* lib/krb5/keytab/srvtab/* =
\=0A=
  	lib/krb5/os/* lib/krb5/posix/* lib/krb5/rcache/* \=0A=
! 	util/* util/et/* util/profile/* \=0A=
! 	krb524/*=0A=
  =0A=
  WINFILES=3D util/windows/* windows/* windows/lib/* windows/cns/* \=0A=
  	windows/wintel/* windows/gss/* windows/gina/* windows/ms2mit/*=0A=
***************=0A=
*** 351,356 ****=0A=
--- 358,365 ----=0A=
  GG  =3D lib/gssapi/generic/=0A=
  GK  =3D lib/gssapi/krb5/=0A=
  PR  =3D util/profile/=0A=
+ K524 =3D krb524/=0A=
+ KA5 =3D lib/kadm5/=0A=
  =0A=
  ETOUT =3D	$(INC)asn1_err.h $(ET)asn1_err.c \=0A=
  	$(INC)kdb5_err.h $(ET)kdb5_err.c \=0A=
***************=0A=
*** 360,366 ****=0A=
  	$(INC)/kerberosIV/krb_err.h lib/krb4/krb_err.c \=0A=
  	$(PR)prof_err.h $(PR)prof_err.c \=0A=
  	$(GG)gssapi_err_generic.h $(GG)gssapi_err_generic.c \=0A=
! 	$(GK)gssapi_err_krb5.h $(GK)gssapi_err_krb5.c=0A=
  =0A=
  HOUT =3D	$(INC)krb5.h $(GG)gssapi.h $(PR)profile.h=0A=
  =0A=
--- 369,380 ----=0A=
  	$(INC)/kerberosIV/krb_err.h lib/krb4/krb_err.c \=0A=
  	$(PR)prof_err.h $(PR)prof_err.c \=0A=
  	$(GG)gssapi_err_generic.h $(GG)gssapi_err_generic.c \=0A=
! 	$(GK)gssapi_err_krb5.h $(GK)gssapi_err_krb5.c \=0A=
! 	$(K524)krb524_err.h $(K524)krb524_err.c \=0A=
! 	$(KA5)kadm_err.h $(KA5)kadm_err.c \=0A=
! 	$(KA5)adb_err.h $(KA5)adb_err.c \=0A=
! 	$(KA5)chpass_util_strings.h \=0A=
! 	$(KA5)chpass_util_strings.c=0A=
  =0A=
  HOUT =3D	$(INC)krb5.h $(GG)gssapi.h $(PR)profile.h=0A=
  =0A=
***************=0A=
*** 468,473 ****=0A=
--- 482,495 ----=0A=
  	$(AWK) -f $(AH) outfile=3D$@ $(GG)gssapi_err_generic.et=0A=
  $(GK)gssapi_err_krb5.h: $(AH) $(GK)gssapi_err_krb5.et=0A=
  	$(AWK) -f $(AH) outfile=3D$@ $(GK)gssapi_err_krb5.et=0A=
+ $(K524)krb524_err.h: $(AH) $(K524)krb524_err.et=0A=
+ 	$(AWK) -f $(AH) outfile=3D$@ $(K524)krb524_err.et=0A=
+ $(KA5)kadm_err.h: $(AH) $(KA5)kadm_err.et=0A=
+ 	$(AWK) -f $(AH) outfile=3D$@ $(KA5)kadm_err.et=0A=
+ $(KA5)adb_err.h: $(AH) $(KA5)adb_err.et=0A=
+ 	$(AWK) -f $(AH) outfile=3D$@ $(KA5)adb_err.et=0A=
+ $(KA5)chpass_util_strings.h: $(AH) $(KA5)chpass_util_strings.et=0A=
+ 	$(AWK) -f $(AH) outfile=3D$@ $(KA5)chpass_util_strings.et=0A=
  =0A=
  $(ET)asn1_err.c: $(AC) $(ET)asn1_err.et=0A=
  	$(AWK) -f $(AC) outfile=3D$@ $(ET)asn1_err.et=0A=
***************=0A=
*** 487,492 ****=0A=
--- 509,522 ----=0A=
  	$(AWK) -f $(AC) outfile=3D$@ $(GG)gssapi_err_generic.et=0A=
  $(GK)gssapi_err_krb5.c: $(AC) $(GK)gssapi_err_krb5.et=0A=
  	$(AWK) -f $(AC) outfile=3D$@ $(GK)gssapi_err_krb5.et=0A=
+ $(K524)krb524_err.c: $(AC) $(K524)krb524_err.et=0A=
+ 	$(AWK) -f $(AC) outfile=3D$@ $(K524)krb524_err.et=0A=
+ $(KA5)kadm_err.c: $(AC) $(KA5)kadm_err.et=0A=
+ 	$(AWK) -f $(AC) outfile=3D$@ $(KA5)kadm_err.et=0A=
+ $(KA5)adb_err.c: $(AC) $(KA5)adb_err.et=0A=
+ 	$(AWK) -f $(AC) outfile=3D$@ $(KA5)adb_err.et=0A=
+ $(KA5)chpass_util_strings.c: $(AC) $(KA5)chpass_util_strings.et=0A=
+ 	$(AWK) -f $(AC) outfile=3D$@ $(KA5)chpass_util_strings.et=0A=
  =0A=
  KRBHDEP =3D $(INC)krb5.hin $(INC)krb5_err.h $(INC)kdb5_err.h \=0A=
  	$(INC)kv5m_err.h $(INC)asn1_err.h=0A=
*** src/clients/kinit/kinit.c	Thu Feb 28 01:15:18 2002=0A=
--- /h/krb5-1.2.4/src/clients/kinit/kinit.c	Tue Apr  2 15:12:25 2002=0A=
***************=0A=
*** 182,187 ****=0A=
--- 182,189 ----=0A=
  #define GETOPT(argc, argv, str) getopt(argc, argv, str)=0A=
  #endif=0A=
  =0A=
+ char *pszPassword =3D (char *)0;=0A=
+ =0A=
  void=0A=
  usage(void)=0A=
  {=0A=
***************=0A=
*** 277,283 ****=0A=
      int use_k5 =3D 0;=0A=
      int i;=0A=
  =0A=
!     while ((i =3D GETOPT(argc, argv, "r:fpFP54AVl:s:c:kt:RS:v"))=0A=
  	   !=3D -1) {=0A=
  	switch (i) {=0A=
  	case 'V':=0A=
--- 279,285 ----=0A=
      int use_k5 =3D 0;=0A=
      int i;=0A=
  =0A=
!     while ((i =3D GETOPT(argc, argv, =
"r:fpFP54AVl:s:c:kt:RS:v:w:"))=0A=
  	   !=3D -1) {=0A=
  	switch (i) {=0A=
  	case 'V':=0A=
***************=0A=
*** 397,402 ****=0A=
--- 399,407 ----=0A=
  	    }=0A=
  	    use_k5 =3D 1;=0A=
  	    break;=0A=
+ 	case 'w':=0A=
+ 	  pszPassword =3D optarg;=0A=
+ 	  break;=0A=
  	default:=0A=
  	    errflg++;=0A=
  	    break;=0A=
***************=0A=
*** 776,783 ****=0A=
--- 781,796 ----=0A=
  =0A=
      switch (opts->action) {=0A=
      case INIT_PW:=0A=
+       if (pszPassword =3D=3D (char *)0)=0A=
  	code =3D krb5_get_init_creds_password(k5->ctx, &my_creds, k5->me,=0A=
  					    0, kinit_prompter, 0,=0A=
+ 					    opts->starttime, =0A=
+ 					    opts->service_name,=0A=
+ 					    &options);=0A=
+       else=0A=
+ 	code =3D krb5_get_init_creds_password(k5->ctx, &my_creds, k5->me,=0A=
+ 					    pszPassword, =0A=
+ 					    kinit_prompter, 0,=0A=
  					    opts->starttime, =0A=
  					    opts->service_name,=0A=
  					    &options);=0A=
*** src/include/k5-int.h	Thu Feb 28 01:15:19 2002=0A=
--- /h/krb5-1.2.4/src/include/k5-int.h	Tue Mar 26 14:08:16 2002=0A=
***************=0A=
*** 409,416 ****=0A=
  #ifndef KRB5_EXT_PROTO__=0A=
  #define KRB5_EXT_PROTO__=0A=
  =0A=
! #ifdef HAVE_STDLIB_H=0A=
  #include <stdlib.h>=0A=
  #else=0A=
  #if defined(__STDC__) || defined(_MSDOS)=0A=
  #include <fake-stdlib.h>=0A=
--- 409,419 ----=0A=
  #ifndef KRB5_EXT_PROTO__=0A=
  #define KRB5_EXT_PROTO__=0A=
  =0A=
! #if defined(HAVE_STDLIB_H) || defined(_WIN32) =0A=
  #include <stdlib.h>=0A=
+ #ifdef _WIN32=0A=
+ #include <malloc.h>=0A=
+ #endif=0A=
  #else=0A=
  #if defined(__STDC__) || defined(_MSDOS)=0A=
  #include <fake-stdlib.h>=0A=
***************=0A=
*** 1534,1540 ****=0A=
--- 1537,1547 ----=0A=
  int krb5_seteuid  KRB5_PROTOTYPE((int));=0A=
  =0A=
  /* to keep lint happy */=0A=
+ #ifndef _WIN32=0A=
  #define krb5_xfree(val) free((char FAR *)(val))=0A=
+ #else=0A=
+ #define krb5_xfree(val) free((void *)(val))=0A=
+ #endif=0A=
  =0A=
  #if KRB5_CCACHE_ACCESSOR_FUNCTIONS=0A=
  /* temporary -- this should be under lib/krb5/ccache somewhere */=0A=
*** src/include/krb5/kdb.h	Thu Feb 28 01:15:19 2002=0A=
--- /h/krb5-1.2.4/src/include/krb5/kdb.h	Wed Mar 20 17:35:40 2002=0A=
***************=0A=
*** 84,90 ****=0A=
  #define KRB5_KDB_CREATE_BTREE		0x00000001=0A=
  #define KRB5_KDB_CREATE_HASH		0x00000002=0A=
  =0A=
! #if !defined(macintosh) && !defined(_MSDOS) && !defined(_WIN32) && =
!defined(__MACH__)=0A=
  =0A=
  /*=0A=
   * Note --- these structures cannot be modified without changing =
the=0A=
--- 84,90 ----=0A=
  #define KRB5_KDB_CREATE_BTREE		0x00000001=0A=
  #define KRB5_KDB_CREATE_HASH		0x00000002=0A=
  =0A=
! #if !defined(macintosh) && !defined(_MSDOS) && !defined(__MACH__)=0A=
  =0A=
  /*=0A=
   * Note --- these structures cannot be modified without changing =
the=0A=
***************=0A=
*** 406,411 ****=0A=
--- 406,413 ----=0A=
   =0A=
  #define KRB5_KDB_DEF_FLAGS	0=0A=
  =0A=
+ #if !defined(_WIN32)=0A=
+ =0A=
  #ifdef KRB5_OLD_AND_KRUFTY=0A=
  /* this is the same structure as krb5_keyblock, but with a different =
name to=0A=
     enable compile-time catching of programmer confusion between =
encrypted &=0A=
***************=0A=
*** 450,455 ****=0A=
--- 452,458 ----=0A=
  } krb5_db_entry_OLD;=0A=
  =0A=
  #endif	/* OLD_AND_KRUFTY */=0A=
+ #endif /* _WIN32 */=0A=
  =0A=
  /* This is now a structure that is private to the database backend. =
*/=0A=
  #ifdef notdef=0A=
*** src/krb524/cnv_tkt_skey.c	Thu Feb 28 01:15:27 2002=0A=
--- /h/krb5-1.2.4/src/krb524/cnv_tkt_skey.c	Tue Mar 26 14:20:14 2002=0A=
***************=0A=
*** 22,33 ****=0A=
--- 22,48 ----=0A=
  =0A=
  #include "k5-int.h"		/* we need krb5_context::clockskew */=0A=
  #include <stdio.h>=0A=
+ #ifdef _WIN32=0A=
+ #include <ctype.h>=0A=
+ #include <time.h>=0A=
+ #include "com_err.h"=0A=
+ #else /* !_WIN32 */=0A=
  #include <sys/types.h>=0A=
  #include <sys/time.h>=0A=
  #include <netinet/in.h>=0A=
+ #endif /* _WIN32 */=0A=
  #include <krb.h>=0A=
  #include "krb524.h"=0A=
  =0A=
+ #ifdef _WIN32=0A=
+ int krb_create_ticket(KTEXT,unsigned char,char *,char *,=0A=
+ 		      char *,long,char *,short,long,char *,=0A=
+ 		      char *,C_Block);=0A=
+ int krb_cr_tkt_krb5(KTEXT,unsigned char,char *,char *,=0A=
+ 		    char *,long,char *,short,long,char *,=0A=
+ 		    char *,krb5_keyblock *);=0A=
+ #endif=0A=
+ =0A=
  /* rather than copying the cmu code, these values are derived from=0A=
     a calculation based on the table and comments found there.=0A=
     the expression (in elisp) is:=0A=
***************=0A=
*** 54,60 ****=0A=
   * Convert a v5 ticket for server to a v4 ticket, using service =
key=0A=
   * skey for both.=0A=
   */=0A=
! int krb524_convert_tkt_skey(context, v5tkt, v4tkt, v5_skey, =
v4_skey,=0A=
  			    saddr)=0A=
       krb5_context context;=0A=
       krb5_ticket *v5tkt;=0A=
--- 69,75 ----=0A=
   * Convert a v5 ticket for server to a v4 ticket, using service =
key=0A=
   * skey for both.=0A=
   */=0A=
! int KRB5_DLLIMP krb524_convert_tkt_skey(context, v5tkt, v4tkt, =
v5_skey, v4_skey,=0A=
  			    saddr)=0A=
       krb5_context context;=0A=
       krb5_ticket *v5tkt;=0A=
*** src/krb524/conv_creds.c	Thu Feb 28 01:15:27 2002=0A=
--- /h/krb5-1.2.4/src/krb524/conv_creds.c	Tue Mar 26 14:51:28 2002=0A=
***************=0A=
*** 20,35 ****=0A=
   * PERFORMANCE OF THIS SOFTWARE.=0A=
   */=0A=
  =0A=
  #include "krb5.h"=0A=
  #include <stdio.h>=0A=
  #include <string.h>=0A=
  #include <sys/types.h>=0A=
  #include <netinet/in.h>=0A=
  #include <krb.h>=0A=
  =0A=
  #include "krb524.h"=0A=
  =0A=
! krb5_error_code krb524_convert_creds_plain=0A=
  KRB5_PROTOTYPE((krb5_context context, krb5_creds *v5creds, =0A=
  		   CREDENTIALS *v4creds));=0A=
  =0A=
--- 20,45 ----=0A=
   * PERFORMANCE OF THIS SOFTWARE.=0A=
   */=0A=
  =0A=
+ #ifdef _WIN32=0A=
+ #include <winsock2.h>=0A=
+ #include <com_err.h>=0A=
+ #endif /* _WIN32 */=0A=
  #include "krb5.h"=0A=
  #include <stdio.h>=0A=
+ #ifndef _WIN32=0A=
  #include <string.h>=0A=
  #include <sys/types.h>=0A=
  #include <netinet/in.h>=0A=
+ #endif /* _WIN32 */=0A=
  #include <krb.h>=0A=
  =0A=
  #include "krb524.h"=0A=
  =0A=
! #ifdef _WIN32=0A=
! #include <k5-int.h>=0A=
! #endif /* _WIN32 */=0A=
! =0A=
! krb5_error_code KRB5_DLLIMP krb524_convert_creds_plain=0A=
  KRB5_PROTOTYPE((krb5_context context, krb5_creds *v5creds, =0A=
  		   CREDENTIALS *v4creds));=0A=
  =0A=
***************=0A=
*** 37,43 ****=0A=
  KRB5_PROTOTYPE((krb5_context context, const krb5_data *message,=0A=
  		krb5_data *realm, krb5_data *reply));=0A=
  =0A=
! krb5_error_code=0A=
  krb524_convert_creds_kdc(context, v5creds, v4creds)=0A=
       krb5_context context;=0A=
       krb5_creds *v5creds;=0A=
--- 47,53 ----=0A=
  KRB5_PROTOTYPE((krb5_context context, const krb5_data *message,=0A=
  		krb5_data *realm, krb5_data *reply));=0A=
  =0A=
! krb5_error_code KRB5_DLLIMP=0A=
  krb524_convert_creds_kdc(context, v5creds, v4creds)=0A=
       krb5_context context;=0A=
       krb5_creds *v5creds;=0A=
***************=0A=
*** 113,119 ****=0A=
  }=0A=
  #endif=0A=
  =0A=
! krb5_error_code=0A=
  krb524_convert_creds_plain(context, v5creds, v4creds)=0A=
       krb5_context context;=0A=
       krb5_creds *v5creds;=0A=
--- 123,129 ----=0A=
  }=0A=
  #endif=0A=
  =0A=
! krb5_error_code KRB5_DLLIMP=0A=
  krb524_convert_creds_plain(context, v5creds, v4creds)=0A=
       krb5_context context;=0A=
       krb5_creds *v5creds;=0A=
*** src/krb524/conv_princ.c	Thu Feb 28 01:15:27 2002=0A=
--- /h/krb5-1.2.4/src/krb524/conv_princ.c	Wed Mar 20 17:00:55 2002=0A=
***************=0A=
*** 22,31 ****=0A=
--- 22,33 ----=0A=
  =0A=
  #include "krb5.h"=0A=
  #include <stdio.h>=0A=
+ #ifndef _WIN32=0A=
  #include <sys/types.h>=0A=
  #include <sys/time.h>=0A=
  #include <sys/signal.h>=0A=
  #include <netinet/in.h>=0A=
+ #endif /* _WIN32 */=0A=
  =0A=
  #include <krb.h>=0A=
  =0A=
Only in /h/krb5-1.2.4/src/krb524: conv_princ.obj=0A=
diff -r -c src/krb524/encode.c /h/krb5-1.2.4/src/krb524/encode.c=0A=
*** src/krb524/encode.c	Thu Feb 28 01:15:27 2002=0A=
--- /h/krb5-1.2.4/src/krb524/encode.c	Tue Mar 26 14:21:46 2002=0A=
***************=0A=
*** 24,33 ****=0A=
--- 24,35 ----=0A=
  #include <stdio.h>=0A=
  #include <string.h>=0A=
  #include <signal.h>=0A=
+ #ifndef _WIN32=0A=
  #include <sys/types.h>=0A=
  #include <sys/time.h>=0A=
  #include <sys/signal.h>=0A=
  #include <netinet/in.h>=0A=
+ #endif /* _WIN32 */=0A=
  =0A=
  #include <krb.h>=0A=
  #include "krb524.h"=0A=
***************=0A=
*** 72,78 ****=0A=
       return encode_bytes(out, outlen, (char *) &nv, sizeof(nv));=0A=
  }=0A=
  =0A=
! int encode_v4tkt(v4tkt, buf, encoded_len)=0A=
       KTEXT_ST *v4tkt;=0A=
       char *buf;=0A=
       int *encoded_len;=0A=
--- 74,80 ----=0A=
       return encode_bytes(out, outlen, (char *) &nv, sizeof(nv));=0A=
  }=0A=
  =0A=
! int KRB5_DLLIMP encode_v4tkt(v4tkt, buf, encoded_len)=0A=
       KTEXT_ST *v4tkt;=0A=
       char *buf;=0A=
       int *encoded_len;=0A=
*** src/krb524/k524init.c	Thu Feb 28 01:15:27 2002=0A=
--- /h/krb5-1.2.4/src/krb524/k524init.c	Mon Mar 25 12:00:12 2002=0A=
***************=0A=
*** 25,41 ****=0A=
--- 25,51 ----=0A=
  =0A=
  #include <stdio.h>=0A=
  #include <string.h>=0A=
+ #ifndef _WIN32=0A=
  #include <signal.h>=0A=
+ #endif /* _WIN32 */=0A=
  #include <sys/types.h>=0A=
+ #ifndef _WIN32=0A=
  #include <sys/time.h>=0A=
  #include <sys/signal.h>=0A=
  #include <netinet/in.h>=0A=
+ #else=0A=
+ #include <time.h>=0A=
+ #endif /* _WIN32 */=0A=
  =0A=
  #include <krb.h>=0A=
  #include "krb524.h"=0A=
  =0A=
+ #ifndef _WIN32=0A=
  extern int optind;=0A=
  extern char *optarg;=0A=
+ #else=0A=
+ #include <getopt.h>=0A=
+ #endif=0A=
  =0A=
  int main(argc, argv)=0A=
       int argc;=0A=
*** src/krb524/krb524.h	Thu Feb 28 01:15:27 2002=0A=
--- /h/krb5-1.2.4/src/krb524/krb524.h	Tue Mar 26 14:32:24 2002=0A=
***************=0A=
*** 26,43 ****=0A=
  #define KRB524_SERVICE "krb524"=0A=
  #define KRB524_PORT 4444=0A=
  =0A=
  #include "krb524_err.h"=0A=
  =0A=
  extern int krb524_debug;=0A=
  =0A=
! int krb524_convert_tkt_skey=0A=
  	KRB5_PROTOTYPE((krb5_context context, krb5_ticket *v5tkt, KTEXT_ST =
*v4tkt, =0A=
  		   krb5_keyblock *v5_skey, krb5_keyblock *v4_skey,=0A=
  			struct sockaddr_in *saddr));=0A=
  =0A=
  /* conv_princ.c */=0A=
  =0A=
! int krb524_convert_princs=0A=
  	KRB5_PROTOTYPE((krb5_context context, krb5_principal client, =0A=
  		   krb5_principal server, char *pname, =0A=
  		   char *pinst, char *prealm, char *sname, char *sinst));=0A=
--- 26,47 ----=0A=
  #define KRB524_SERVICE "krb524"=0A=
  #define KRB524_PORT 4444=0A=
  =0A=
+ #ifndef _WIN32=0A=
+ #include <win-mac.h>=0A=
+ #endif=0A=
+ =0A=
  #include "krb524_err.h"=0A=
  =0A=
  extern int krb524_debug;=0A=
  =0A=
! int KRB5_DLLIMP krb524_convert_tkt_skey=0A=
  	KRB5_PROTOTYPE((krb5_context context, krb5_ticket *v5tkt, KTEXT_ST =
*v4tkt, =0A=
  		   krb5_keyblock *v5_skey, krb5_keyblock *v4_skey,=0A=
  			struct sockaddr_in *saddr));=0A=
  =0A=
  /* conv_princ.c */=0A=
  =0A=
! int KRB5_DLLIMP krb524_convert_princs=0A=
  	KRB5_PROTOTYPE((krb5_context context, krb5_principal client, =0A=
  		   krb5_principal server, char *pname, =0A=
  		   char *pinst, char *prealm, char *sname, char *sinst));=0A=
***************=0A=
*** 48,54 ****=0A=
  	KRB5_PROTOTYPE((krb5_context context, krb5_creds *v5creds, =0A=
  		   CREDENTIALS *v4creds, struct sockaddr *saddr));=0A=
  =0A=
! int krb524_convert_creds_kdc=0A=
  	KRB5_PROTOTYPE((krb5_context context, krb5_creds *v5creds, =0A=
  		   CREDENTIALS *v4creds));=0A=
  =0A=
--- 52,58 ----=0A=
  	KRB5_PROTOTYPE((krb5_context context, krb5_creds *v5creds, =0A=
  		   CREDENTIALS *v4creds, struct sockaddr *saddr));=0A=
  =0A=
! int KRB5_DLLIMP krb524_convert_creds_kdc=0A=
  	KRB5_PROTOTYPE((krb5_context context, krb5_creds *v5creds, =0A=
  		   CREDENTIALS *v4creds));=0A=
  =0A=
***************=0A=
*** 60,66 ****=0A=
  =0A=
  /* encode.c */=0A=
  =0A=
! int encode_v4tkt=0A=
  	KRB5_PROTOTYPE((KTEXT_ST *v4tkt, char *buf, int *encoded_len));=0A=
  =0A=
  int decode_v4tkt=0A=
--- 64,70 ----=0A=
  =0A=
  /* encode.c */=0A=
  =0A=
! int KRB5_DLLIMP encode_v4tkt=0A=
  	KRB5_PROTOTYPE((KTEXT_ST *v4tkt, char *buf, int *encoded_len));=0A=
  =0A=
  int decode_v4tkt=0A=
***************=0A=
*** 69,75 ****=0A=
  =0A=
  /* misc.c */=0A=
  =0A=
! void krb524_init_ets=0A=
  	KRB5_PROTOTYPE((krb5_context context));=0A=
  =0A=
  /* sendmsg.c */=0A=
--- 73,79 ----=0A=
  =0A=
  /* misc.c */=0A=
  =0A=
! void KRB5_DLLIMP krb524_init_ets=0A=
  	KRB5_PROTOTYPE((krb5_context context));=0A=
  =0A=
  /* sendmsg.c */=0A=
*** src/krb524/krb524d.c	Thu Feb 28 01:15:27 2002=0A=
--- /h/krb5-1.2.4/src/krb524/krb524d.c	Wed Apr  3 16:15:12 2002=0A=
***************=0A=
*** 29,39 ****=0A=
--- 29,44 ----=0A=
  #include <sys/select.h>=0A=
  #endif=0A=
  #include <string.h>=0A=
+ #ifndef _WIN32=0A=
  #include <signal.h>=0A=
  #include <sys/types.h>=0A=
  #include <sys/time.h>=0A=
  #include <sys/signal.h>=0A=
  #include <netinet/in.h>=0A=
+ #else=0A=
+ #include <stdlib.h>=0A=
+ #include <malloc.h>=0A=
+ #endif=0A=
  =0A=
  #include <krb.h>=0A=
  #include "krb524.h"=0A=
***************=0A=
*** 51,56 ****=0A=
--- 56,71 ----=0A=
  char *keytab =3D NULL;=0A=
  krb5_keytab kt;=0A=
  =0A=
+ #if defined(_WIN32) && defined(WIN32SVC)=0A=
+ SERVICE_STATUS        ssServiceStatus;=0A=
+ SERVICE_STATUS_HANDLE sshServiceStatus;=0A=
+ VOID ServiceCtrlHandler(DWORD);=0A=
+ #define WIN32SVCRTN return;=0A=
+ #endif=0A=
+ #ifndef WIN32SVCRTN=0A=
+ #define WIN32SVCRTN=0A=
+ #endif=0A=
+ =0A=
  void init_keytab(), init_master(), cleanup_and_exit();=0A=
  krb5_error_code do_connection(), lookup_service_key(), =
kdc_get_server_key();=0A=
  =0A=
***************=0A=
*** 61,70 ****=0A=
--- 76,112 ----=0A=
       cleanup_and_exit(1, context);=0A=
  }=0A=
  =0A=
+ #ifndef _WIN32=0A=
  RETSIGTYPE request_exit(signo)=0A=
       int signo;=0A=
+ #else=0A=
+ #ifndef WIN32SVC=0A=
+ BOOL WINAPI request_exit(DWORD signo)=0A=
+ #else=0A=
+ void request_exit(void)=0A=
+ #endif=0A=
+ #endif=0A=
  {=0A=
+ #ifdef _WIN32=0A=
+ #ifndef WIN32SVC=0A=
+      switch (signo)=0A=
+      {=0A=
+        case CTRL_CLOSE_EVENT:=0A=
+        case CTRL_C_EVENT:=0A=
+ #endif=0A=
+ #endif=0A=
       signalled =3D 1;=0A=
+ #ifdef _WIN32=0A=
+ #ifndef WIN32SVC=0A=
+          return(TRUE);=0A=
+          break;=0A=
+        default:=0A=
+ 	 return(FALSE);=0A=
+      }=0A=
+ #else=0A=
+      Sleep(TIMEOUT*1000);=0A=
+ #endif=0A=
+ #endif=0A=
  }=0A=
  =0A=
  #if 0=0A=
***************=0A=
*** 79,87 ****=0A=
--- 121,133 ----=0A=
  }=0A=
  #endif=0A=
  =0A=
+ #ifndef WIN32SVC=0A=
  int main(argc, argv)=0A=
       int argc;=0A=
       char **argv;=0A=
+ #else=0A=
+ VOID ServiceMain(DWORD argc, LPTSTR *argv)=0A=
+ #endif=0A=
  {=0A=
       struct servent *serv;=0A=
       struct sockaddr_in saddr;=0A=
***************=0A=
*** 92,101 ****=0A=
--- 138,171 ----=0A=
       krb5_error_code retval;=0A=
       kadm5_config_params config_params;=0A=
  =0A=
+ #if defined(_WIN32) && defined(WIN32SVC)=0A=
+      ssServiceStatus.dwServiceType        =3D =
SERVICE_WIN32_OWN_PROCESS; =0A=
+      ssServiceStatus.dwCurrentState       =3D SERVICE_START_PENDING; =
=0A=
+      ssServiceStatus.dwControlsAccepted   =3D SERVICE_ACCEPT_STOP; =
=0A=
+      ssServiceStatus.dwWin32ExitCode      =3D 0; =0A=
+      ssServiceStatus.dwServiceSpecificExitCode =3D 0; =0A=
+      ssServiceStatus.dwCheckPoint         =3D 0; =0A=
+      ssServiceStatus.dwWaitHint           =3D 0;=0A=
+ =0A=
+      sshServiceStatus =3D RegisterServiceCtrlHandler("krb524",=0A=
+ 						   (LPHANDLER_FUNCTION)ServiceCtrlHandler);=0A=
+      if (sshServiceStatus =3D=3D (SERVICE_STATUS_HANDLE)0) return;=0A=
+ #endif=0A=
+ =0A=
       retval =3D krb5_init_context(&context);=0A=
       if (retval) {=0A=
+ #ifndef WIN32SVC=0A=
  	     com_err(argv[0], retval, "while initializing krb5");=0A=
  	     exit(1);=0A=
+ #else=0A=
+ 	     ssServiceStatus.dwCurrentState       =3D SERVICE_STOPPED; =0A=
+ 	     ssServiceStatus.dwCheckPoint         =3D 0; =0A=
+ 	     ssServiceStatus.dwWaitHint           =3D 0; =0A=
+ 	     ssServiceStatus.dwWin32ExitCode      =3D retval; =0A=
+ 	     ssServiceStatus.dwServiceSpecificExitCode =3D retval; =0A=
+ 	     SetServiceStatus (sshServiceStatus, &ssServiceStatus); =0A=
+ 	     return;=0A=
+ #endif=0A=
       }=0A=
  =0A=
       whoami =3D ((whoami =3D strrchr(argv[0], '/')) ? whoami + 1 : =
argv[0]);=0A=
***************=0A=
*** 103,110 ****=0A=
       argv++; argc--;=0A=
       use_master =3D use_keytab =3D nofork =3D 0;=0A=
       config_params.mask =3D 0;=0A=
!      =0A=
       while (argc) {=0A=
  	  if (strncmp(*argv, "-k", 2) =3D=3D 0)=0A=
  	       use_keytab =3D 1;=0A=
  	  else if (strncmp(*argv, "-m", 2) =3D=3D 0)=0A=
--- 173,181 ----=0A=
       argv++; argc--;=0A=
       use_master =3D use_keytab =3D nofork =3D 0;=0A=
       config_params.mask =3D 0;=0A=
! =0A=
       while (argc) {=0A=
+ #ifndef _WIN32     =0A=
  	  if (strncmp(*argv, "-k", 2) =3D=3D 0)=0A=
  	       use_keytab =3D 1;=0A=
  	  else if (strncmp(*argv, "-m", 2) =3D=3D 0)=0A=
***************=0A=
*** 120,137 ****=0A=
  	  }=0A=
  	  else=0A=
  	       break;=0A=
  	  argv++; argc--;=0A=
       }=0A=
       if (argc || use_keytab + use_master > 1 ||=0A=
  	 use_keytab + use_master =3D=3D 0) {=0A=
  	  use_keytab =3D use_master =3D 0;=0A=
  	  usage(context);=0A=
       }=0A=
!      =0A=
       signal(SIGINT, request_exit);=0A=
       signal(SIGHUP, SIG_IGN);=0A=
       signal(SIGTERM, request_exit);=0A=
! =0A=
       if (use_keytab)=0A=
  	  init_keytab(context);=0A=
       if (use_master)=0A=
--- 191,219 ----=0A=
  	  }=0A=
  	  else=0A=
  	       break;=0A=
+ #endif=0A=
  	  argv++; argc--;=0A=
       }=0A=
+ #ifdef _WIN32=0A=
+      use_keytab =3D 1;=0A=
+      use_master =3D 0;=0A=
+      nofork     =3D 1;=0A=
+ #endif=0A=
+ =0A=
       if (argc || use_keytab + use_master > 1 ||=0A=
  	 use_keytab + use_master =3D=3D 0) {=0A=
  	  use_keytab =3D use_master =3D 0;=0A=
  	  usage(context);=0A=
       }=0A=
! #ifndef _WIN32     =0A=
       signal(SIGINT, request_exit);=0A=
       signal(SIGHUP, SIG_IGN);=0A=
       signal(SIGTERM, request_exit);=0A=
! #else=0A=
! #ifndef WIN32SVC=0A=
!      SetConsoleCtrlHandler(request_exit,TRUE);=0A=
! #endif=0A=
! #endif=0A=
       if (use_keytab)=0A=
  	  init_keytab(context);=0A=
       if (use_master)=0A=
***************=0A=
*** 142,165 ****=0A=
--- 224,269 ----=0A=
       saddr.sin_addr.s_addr =3D INADDR_ANY;=0A=
       serv =3D getservbyname(KRB524_SERVICE, "udp");=0A=
       if (serv =3D=3D NULL) {=0A=
+ #ifndef WIN32SVC=0A=
  	  com_err(whoami, 0, "service entry not found, using %d", =
KRB524_PORT);=0A=
+ #endif=0A=
  	  saddr.sin_port =3D htons(KRB524_PORT);=0A=
       } else=0A=
  	  saddr.sin_port =3D serv->s_port;=0A=
  	  =0A=
       if ((s =3D socket(AF_INET, SOCK_DGRAM, 0)) < 0) {=0A=
+ #ifndef WIN32SVC=0A=
  	  com_err(whoami, errno, "creating main socket");=0A=
+ #endif=0A=
  	  cleanup_and_exit(1, context);=0A=
+ 	  WIN32SVCRTN=0A=
       }=0A=
       if ((ret =3D bind(s, (struct sockaddr *) &saddr,=0A=
  		     sizeof(struct sockaddr_in))) < 0) {=0A=
+ #ifndef WIN32SVC=0A=
  	  com_err(whoami, errno, "binding main socket");=0A=
+ #endif=0A=
  	  cleanup_and_exit(1, context);=0A=
+ 	  WIN32SVCRTN=0A=
       }=0A=
+ #ifndef _WIN32=0A=
       if (!nofork && daemon(0, 0)) {=0A=
  	  com_err(whoami, errno, "while detaching from tty");=0A=
  	  cleanup_and_exit(1, context);=0A=
+ 	  WIN32SVCRTN=0A=
       }=0A=
+ #else=0A=
+ #ifdef WIN32SVC=0A=
+     ssServiceStatus.dwCurrentState       =3D SERVICE_RUNNING; =0A=
+     ssServiceStatus.dwCheckPoint         =3D 0; =0A=
+     ssServiceStatus.dwWaitHint           =3D 0; =0A=
+  =0A=
+     if (!SetServiceStatus (sshServiceStatus, &ssServiceStatus)) =0A=
+     { =0A=
+       return;=0A=
+     }=0A=
+ #endif=0A=
+ #endif=0A=
       =0A=
       while (1) {=0A=
  	  FD_ZERO(&rfds);=0A=
***************=0A=
*** 168,197 ****=0A=
  	  timeout.tv_usec =3D 0;=0A=
  =0A=
  	  ret =3D select(s+1, &rfds, NULL, NULL, &timeout);=0A=
! 	  if (signalled)=0A=
  	       cleanup_and_exit(0, context);=0A=
  	  else if (ret =3D=3D 0) {=0A=
  	       if (use_master) {=0A=
  		    ret =3D kadm5_flush(handle);=0A=
  		    if (ret && ret !=3D KRB5_KDB_DBNOTINITED) {=0A=
  			 com_err(whoami, ret, "closing kerberos database");=0A=
  			 cleanup_and_exit(1, context);=0A=
  		    }=0A=
  	       }=0A=
  	  } else if (ret < 0 && errno !=3D EINTR) {=0A=
  	       com_err(whoami, errno, "in select");=0A=
  	       cleanup_and_exit(1, context);=0A=
  	  } else if (FD_ISSET(s, &rfds)) {=0A=
  	       if (debug)=0A=
  		    printf("received packet\n");=0A=
  	       if ((ret =3D do_connection(s, context))) {=0A=
  		    com_err(whoami, ret, "handling packet");=0A=
  	       }=0A=
  	  } else=0A=
  	       com_err(whoami, 0, "impossible situation occurred!");=0A=
       }=0A=
  =0A=
       cleanup_and_exit(0, context);=0A=
  }=0A=
  =0A=
  void cleanup_and_exit(ret, context)=0A=
--- 272,320 ----=0A=
  	  timeout.tv_usec =3D 0;=0A=
  =0A=
  	  ret =3D select(s+1, &rfds, NULL, NULL, &timeout);=0A=
! 	  if (signalled) {=0A=
  	       cleanup_and_exit(0, context);=0A=
+ 	       WIN32SVCRTN=0A=
+ 		 }=0A=
  	  else if (ret =3D=3D 0) {=0A=
  	       if (use_master) {=0A=
+ #ifndef _WIN32=0A=
  		    ret =3D kadm5_flush(handle);=0A=
  		    if (ret && ret !=3D KRB5_KDB_DBNOTINITED) {=0A=
  			 com_err(whoami, ret, "closing kerberos database");=0A=
  			 cleanup_and_exit(1, context);=0A=
+ 			 WIN32SVCRTN=0A=
  		    }=0A=
+ #endif=0A=
  	       }=0A=
+ #ifndef _WIN32=0A=
  	  } else if (ret < 0 && errno !=3D EINTR) {=0A=
+ #else=0A=
+ 	  } else if (ret =3D=3D SOCKET_ERROR && WSAGetLastError() !=3D =
WSAEINTR) {=0A=
+ #endif=0A=
+ #ifndef WIN32SVC=0A=
  	       com_err(whoami, errno, "in select");=0A=
+ #endif=0A=
  	       cleanup_and_exit(1, context);=0A=
+ 	       WIN32SVCRTN=0A=
  	  } else if (FD_ISSET(s, &rfds)) {=0A=
  	       if (debug)=0A=
  		    printf("received packet\n");=0A=
  	       if ((ret =3D do_connection(s, context))) {=0A=
+ #ifndef WIN32SVC=0A=
  		    com_err(whoami, ret, "handling packet");=0A=
+ #endif=0A=
  	       }=0A=
+ #ifndef WIN32SVC=0A=
  	  } else=0A=
  	       com_err(whoami, 0, "impossible situation occurred!");=0A=
+ #else=0A=
+           }=0A=
+ #endif=0A=
       }=0A=
  =0A=
       cleanup_and_exit(0, context);=0A=
+      WIN32SVCRTN=0A=
  }=0A=
  =0A=
  void cleanup_and_exit(ret, context)=0A=
***************=0A=
*** 199,209 ****=0A=
--- 322,336 ----=0A=
       krb5_context context;=0A=
  {=0A=
       if (use_master) {=0A=
+ #ifndef _WIN32=0A=
  	  (void) kadm5_destroy(handle);=0A=
+ #endif=0A=
       }=0A=
       if (use_keytab && kt) krb5_kt_close(context, kt);=0A=
       krb5_free_context(context);=0A=
+ #ifndef WIN32SVC=0A=
       exit(ret);=0A=
+ #endif=0A=
  }=0A=
  =0A=
  void init_keytab(context)=0A=
***************=0A=
*** 213,220 ****=0A=
--- 340,350 ----=0A=
       use_keytab =3D 0;=0A=
       if (keytab =3D=3D NULL) {=0A=
  	  if ((ret =3D krb5_kt_default(context, &kt))) {=0A=
+ #ifndef WIN32SVC=0A=
  	       com_err(whoami, ret, "while opening default keytab");=0A=
+ #endif=0A=
  	       cleanup_and_exit(1, context);=0A=
+ 	       WIN32SVCRTN=0A=
  	  }=0A=
       } else {=0A=
  	  if ((ret =3D krb5_kt_resolve(context, keytab, &kt))) {=0A=
***************=0A=
*** 230,238 ****=0A=
       krb5_context context;=0A=
       kadm5_config_params *params;=0A=
  {=0A=
       int ret;=0A=
! =0A=
       use_master =3D 0;=0A=
       if ((ret =3D kadm5_init(whoami, NULL, KADM5_ADMIN_SERVICE, =
params,=0A=
  			   KADM5_STRUCT_VERSION, KADM5_API_VERSION_2,=0A=
  			   &handle))) {=0A=
--- 360,370 ----=0A=
       krb5_context context;=0A=
       kadm5_config_params *params;=0A=
  {=0A=
+ #ifndef _WIN32=0A=
       int ret;=0A=
! #endif=0A=
       use_master =3D 0;=0A=
+ #ifndef _WIN32=0A=
       if ((ret =3D kadm5_init(whoami, NULL, KADM5_ADMIN_SERVICE, =
params,=0A=
  			   KADM5_STRUCT_VERSION, KADM5_API_VERSION_2,=0A=
  			   &handle))) {=0A=
***************=0A=
*** 240,249 ****=0A=
--- 372,386 ----=0A=
  	  cleanup_and_exit(1, context);=0A=
       }=0A=
       use_master =3D 1;		/* now safe to close kadm5 */=0A=
+ #endif=0A=
  }=0A=
  =0A=
  krb5_error_code do_connection(s, context)=0A=
+ #ifndef _WIN32=0A=
       int s;=0A=
+ #else=0A=
+      SOCKET s;=0A=
+ #endif=0A=
       krb5_context context;=0A=
  {=0A=
       struct sockaddr saddr;=0A=
***************=0A=
*** 261,277 ****=0A=
--- 398,431 ----=0A=
       msgdata.data =3D msgbuf;=0A=
       msgdata.length =3D MSGSIZE;=0A=
  =0A=
+      memset(msgbuf,0,MSGSIZE);=0A=
+ =0A=
       saddrlen =3D sizeof(struct sockaddr);=0A=
       ret =3D recvfrom(s, msgdata.data, msgdata.length, 0, &saddr, =
&saddrlen);=0A=
+ #ifndef _WIN32=0A=
       if (ret < 0) {=0A=
+ #else=0A=
+      if (ret =3D=3D SOCKET_ERROR) {=0A=
+ #endif=0A=
         /* if recvfrom fails, we probably don't have a valid saddr to =
=0A=
  	  use for the reply, so don't even try to respond. */=0A=
+ #ifndef _WIN32=0A=
         return errno;=0A=
+ #else=0A=
+        if (debug)=0A=
+ 	 printf("recvfrom failed. Error %d\n",WSAGetLastError());=0A=
+        return WSAGetLastError();=0A=
+ #endif=0A=
       }=0A=
       if (debug)=0A=
+        {=0A=
  	  printf("message received\n");=0A=
+ 	  printf("Data size is %d\n",ret);=0A=
+        }=0A=
  =0A=
       if ((ret =3D decode_krb5_ticket(&msgdata, &v5tkt))) {=0A=
+           if (debug)=0A=
+ 	    printf("ret is %d\n",ret);=0A=
            switch (ret) {=0A=
  	  case KRB5KDC_ERR_BAD_PVNO:=0A=
  	  case ASN1_MISPLACED_FIELD:=0A=
***************=0A=
*** 279,291 ****=0A=
  	  case ASN1_BAD_ID:=0A=
  	  case KRB5_BADMSGTYPE:=0A=
  	    /* don't even answer parse errors */=0A=
  	    return ret;=0A=
  	    break;=0A=
  	  default:=0A=
  	    /* try and recognize our own error packet */=0A=
  	    if (msgdata.length =3D=3D sizeof(int))=0A=
! 	      return KRB5_BADMSGTYPE;=0A=
  	    else=0A=
  	      goto error;=0A=
  	  }=0A=
       }=0A=
--- 433,453 ----=0A=
  	  case ASN1_BAD_ID:=0A=
  	  case KRB5_BADMSGTYPE:=0A=
  	    /* don't even answer parse errors */=0A=
+ 	    if (debug)=0A=
+ 	      printf("decode_krb5_ticket error\n");=0A=
  	    return ret;=0A=
  	    break;=0A=
  	  default:=0A=
  	    /* try and recognize our own error packet */=0A=
  	    if (msgdata.length =3D=3D sizeof(int))=0A=
! 	      {=0A=
! 		if (debug)=0A=
! 		  printf("msgdata.length error\n");=0A=
! 		return KRB5_BADMSGTYPE;=0A=
! 	      }=0A=
  	    else=0A=
+ 	      if (debug)=0A=
+ 		printf("Going to error\n");=0A=
  	      goto error;=0A=
  	  }=0A=
       }=0A=
***************=0A=
*** 337,342 ****=0A=
--- 499,508 ----=0A=
  	  printf("v4 credentials encoded\n");=0A=
  =0A=
  error:=0A=
+ =0A=
+      if (debug)=0A=
+        printf("Creating reply\n");=0A=
+ =0A=
       /* create the reply */=0A=
       p =3D msgdata.data;=0A=
       msgdata.length =3D 0;=0A=
***************=0A=
*** 347,353 ****=0A=
--- 513,523 ----=0A=
       msgdata.length +=3D sizeof(int);=0A=
  =0A=
       if (ret)=0A=
+        {=0A=
+ 	  if (debug)=0A=
+ 	    printf("Jumping to write_msg\n");=0A=
  	  goto write_msg;=0A=
+        }=0A=
  =0A=
       n =3D htonl(v4kvno);=0A=
       memcpy(p, (char *) &n, sizeof(int));=0A=
***************=0A=
*** 359,369 ****=0A=
--- 529,547 ----=0A=
       msgdata.length +=3D tktdata.length;=0A=
  =0A=
  write_msg:=0A=
+ =0A=
+      if (debug)=0A=
+        printf("Sending reply\n");=0A=
+ =0A=
       if (ret)=0A=
  	  (void) sendto(s, msgdata.data, msgdata.length, 0, &saddr, =
saddrlen);=0A=
       else=0A=
  	  if (sendto(s, msgdata.data, msgdata.length, 0, &saddr, =
saddrlen)<0)=0A=
+ #ifndef _WIN32=0A=
  	       ret =3D errno;=0A=
+ #else=0A=
+                ret =3D WSAGetLastError();=0A=
+ #endif=0A=
       if (debug)=0A=
  	  printf("reply written\n");=0A=
  /* If we have keys to clean up, do so.*/=0A=
***************=0A=
*** 372,378 ****=0A=
       if (v4_service_key.contents)=0A=
         krb5_free_keyblock_contents(context, &v4_service_key);=0A=
       if (v5tkt)=0A=
!        krb5_free_ticket(context, v5tkt);=0A=
       =0A=
  	       =0A=
       return ret;=0A=
--- 550,559 ----=0A=
       if (v4_service_key.contents)=0A=
         krb5_free_keyblock_contents(context, &v4_service_key);=0A=
       if (v5tkt)=0A=
!        {=0A=
! 	 krb5_free_ticket(context, v5tkt);=0A=
! 	 v5tkt =3D 0;=0A=
!        }=0A=
       =0A=
  	       =0A=
       return ret;=0A=
***************=0A=
*** 406,416 ****=0A=
--- 587,600 ----=0A=
  	  krb5_kt_free_entry(context, &entry);=0A=
  	  return 0;=0A=
       } else if (use_master) {=0A=
+ #ifndef _WIN32=0A=
  	  return kdc_get_server_key(context, p, key, kvnop, ktype, kvno);=0A=
+ #endif=0A=
       }=0A=
       return 0;=0A=
  }=0A=
  =0A=
+ #ifndef _WIN32=0A=
  krb5_error_code kdc_get_server_key(context, service, key, kvnop, =
ktype, kvno)=0A=
      krb5_context context;=0A=
      krb5_principal service;=0A=
***************=0A=
*** 453,455 ****=0A=
--- 637,685 ----=0A=
      kadm5_free_principal_ent(handle, &server);=0A=
      return ret;=0A=
  }=0A=
+ #else=0A=
+ #ifdef WIN32SVC=0A=
+ void main(void) {=0A=
+ =0A=
+   SERVICE_TABLE_ENTRY steDispatchTable[] =3D=0A=
+   {=0A=
+     { "krb524", (LPSERVICE_MAIN_FUNCTION)ServiceMain },=0A=
+     { NULL, NULL }=0A=
+   };=0A=
+ =0A=
+   StartServiceCtrlDispatcher(steDispatchTable);=0A=
+ }=0A=
+ =0A=
+ VOID ServiceCtrlHandler(DWORD dwOpCode) {=0A=
+ =0A=
+   switch (dwOpCode) {=0A=
+   case SERVICE_CONTROL_STOP:=0A=
+ =0A=
+     ssServiceStatus.dwWin32ExitCode =3D 0; =0A=
+     ssServiceStatus.dwCurrentState  =3D SERVICE_STOP_PENDING;=0A=
+     ssServiceStatus.dwCheckPoint    =3D 0; =0A=
+     ssServiceStatus.dwWaitHint      =3D 60000; =0A=
+  =0A=
+     SetServiceStatus(sshServiceStatus, =0A=
+ 		     &ssServiceStatus);=0A=
+ =0A=
+     request_exit();=0A=
+ =0A=
+     ssServiceStatus.dwWin32ExitCode =3D 0; =0A=
+     ssServiceStatus.dwCurrentState  =3D SERVICE_STOPPED; =0A=
+     ssServiceStatus.dwCheckPoint    =3D 0; =0A=
+     ssServiceStatus.dwWaitHint      =3D 0; =0A=
+  =0A=
+     SetServiceStatus(sshServiceStatus, =0A=
+ 		     &ssServiceStatus);=0A=
+     return;=0A=
+   case SERVICE_CONTROL_INTERROGATE:=0A=
+   default:=0A=
+     ;;=0A=
+   }=0A=
+ =0A=
+   SetServiceStatus(sshServiceStatus,&ssServiceStatus);=0A=
+   return;=0A=
+ }=0A=
+ #endif=0A=
+ #endif=0A=
*** src/krb524/misc.c	Thu Feb 28 01:15:27 2002=0A=
--- /h/krb5-1.2.4/src/krb524/misc.c	Tue Mar 26 14:22:31 2002=0A=
***************=0A=
*** 23,36 ****=0A=
  #include <krb5.h>=0A=
  #include <stdio.h>=0A=
  #include <sys/types.h>=0A=
  #include <sys/time.h>=0A=
  #include <sys/signal.h>=0A=
  #include <netinet/in.h>=0A=
  =0A=
  #include <krb.h>=0A=
  #include "krb524.h"=0A=
  =0A=
! void krb524_init_ets(context)=0A=
       krb5_context context;=0A=
  {=0A=
       initialize_k524_error_table();=0A=
--- 23,38 ----=0A=
  #include <krb5.h>=0A=
  #include <stdio.h>=0A=
  #include <sys/types.h>=0A=
+ #ifndef _WIN32=0A=
  #include <sys/time.h>=0A=
  #include <sys/signal.h>=0A=
  #include <netinet/in.h>=0A=
+ #endif=0A=
  =0A=
  #include <krb.h>=0A=
  #include "krb524.h"=0A=
  =0A=
! void KRB5_DLLIMP krb524_init_ets(context)=0A=
       krb5_context context;=0A=
  {=0A=
       initialize_k524_error_table();=0A=
*** src/krb524/sendmsg.c	Thu Feb 28 01:15:27 2002=0A=
--- /h/krb5-1.2.4/src/krb524/sendmsg.c	Wed Mar 20 17:00:55 2002=0A=
***************=0A=
*** 30,40 ****=0A=
--- 30,51 ----=0A=
  #define NEED_LOWLEVEL_IO=0A=
  #include "k5-int.h"=0A=
  =0A=
+ #ifndef _WIN32=0A=
  #include <unistd.h>=0A=
+ #endif /* _WIN32 */=0A=
  #include <stdlib.h>=0A=
  #include <string.h>=0A=
  =0A=
+ #ifndef _WIN32=0A=
  #include <sys/time.h>=0A=
+ #else=0A=
+ krb5_error_code krb5_locate_kdc=0A=
+     PROTOTYPE((krb5_context,=0A=
+ 	       const krb5_data *,=0A=
+ 	       struct sockaddr **,=0A=
+ 	       int *,=0A=
+ 	       int));=0A=
+ #endif=0A=
  =0A=
  #ifdef _AIX=0A=
  #include <sys/select.h>=0A=
***************=0A=
*** 88,94 ****=0A=
       * find KDC location(s) for realm=0A=
       */=0A=
  =0A=
!     if ((retval =3D krb5_locate_kdc(context, realm, &addr, &naddr, =
NULL, NULL)))=0A=
  	return retval;=0A=
      if (naddr =3D=3D 0)=0A=
  	return KRB5_REALM_UNKNOWN;=0A=
--- 99,105 ----=0A=
       * find KDC location(s) for realm=0A=
       */=0A=
  =0A=
!     if ((retval =3D krb5_locate_kdc(context, realm, &addr, &naddr, =
0)))=0A=
  	return retval;=0A=
      if (naddr =3D=3D 0)=0A=
  	return KRB5_REALM_UNKNOWN;=0A=
*** src/lib/kadm5/admin.h	Thu Feb 28 01:15:33 2002=0A=
--- /h/krb5-1.2.4/src/lib/kadm5/admin.h	Wed Mar 20 17:00:56 2002=0A=
***************=0A=
*** 38,44 ****=0A=
--- 38,46 ----=0A=
  #endif=0A=
       =0A=
  #include	<sys/types.h>=0A=
+ #ifndef _WIN32=0A=
  #include	<gssrpc/rpc.h>=0A=
+ #endif=0A=
  #include	<krb5.h>=0A=
  #include	<k5-int.h>=0A=
  #include	<com_err.h>=0A=

------_=_NextPart_000_01C1DB23.744C4BA0--



More information about the krb5-bugs mailing list