Port of most of the OS directory to the PC
authorKeith Vetter <keithv@fusion.com>
Tue, 7 Mar 1995 23:13:03 +0000 (23:13 +0000)
committerKeith Vetter <keithv@fusion.com>
Tue, 7 Mar 1995 23:13:03 +0000 (23:13 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@5079 dc483132-0cff-0310-8789-dd5450dbe970

31 files changed:
src/lib/krb5/os/ChangeLog
src/lib/krb5/os/Makefile.in
src/lib/krb5/os/an_to_ln.c
src/lib/krb5/os/ccdefname.c
src/lib/krb5/os/def_realm.c
src/lib/krb5/os/free_hstrl.c
src/lib/krb5/os/free_krbhs.c
src/lib/krb5/os/full_ipadr.c
src/lib/krb5/os/gen_port.c
src/lib/krb5/os/gen_rname.c
src/lib/krb5/os/get_krbhst.c
src/lib/krb5/os/gmt_mktime.c
src/lib/krb5/os/hst_realm.c
src/lib/krb5/os/init_os_ctx.c
src/lib/krb5/os/krbfileio.c
src/lib/krb5/os/ktdefname.c
src/lib/krb5/os/kuserok.c
src/lib/krb5/os/locate_kdc.c
src/lib/krb5/os/lock_file.c
src/lib/krb5/os/net_read.c
src/lib/krb5/os/net_write.c
src/lib/krb5/os/os-proto.h
src/lib/krb5/os/port2ip.c
src/lib/krb5/os/read_msg.c
src/lib/krb5/os/read_pwd.c
src/lib/krb5/os/realm_dom.c
src/lib/krb5/os/sendto_kdc.c
src/lib/krb5/os/sn2princ.c
src/lib/krb5/os/timeofday.c
src/lib/krb5/os/unlck_file.c
src/lib/krb5/os/write_msg.c

index c829a55344b5c1b52901b62b6a68d72d508faa82..69673dcfbbe242a650a0509987834334e6cc621b 100644 (file)
@@ -1,7 +1,8 @@
-Thu Mar 2 18:00:00 1995 Keith Vetter (keithv@fusion.com)
+Tue Mar 7 13:35:21 1995 Keith Vetter (keithv@fusion.com)
 
-       * ustime.c: added another include for the pc for prototyping.
-       * localaddr.c: used the NEED_SOCKETS mechanism for getting winsock.h.
+       * *.c: ported all the c files except an_to_ln, kuserok, and
+          sendto_kdc which have windows stubs.
+        * Makefile.in: reflects above changes.
 
 Wed Mar 1 17:30:00 1995 Keith Vetter (keithv@fusion.com)
 
index aefffdd3dd1242438576269b0c5c7ec38a1e0888..1b47e350b65fbe9a659988aef497d1bee7cc5c2a 100644 (file)
@@ -2,7 +2,7 @@ CFLAGS = $(CCOPTS) $(DEFS)
 LDFLAGS = -g
 
 ##DOSBUILDTOP = ..\..\..
-##DOSLIBNAME=..\libkrb5.lib
+##DOSLIBNAME=..\krb5.lib
 ##DOS!include $(BUILDTOP)\config\windows.in
 
 OBJS= \
@@ -72,3 +72,4 @@ SRCS= \
        $(srcdir)/write_msg.c
 
 all:: $(OBJS)
+
index a96fb4c18d9b0ec0ed86f509021122325dafd156..da065b9dd153e3a3008ede09ab2397b408b27eb9 100644 (file)
@@ -25,7 +25,7 @@
  */
 
 #include "k5-int.h"
-
+#ifndef _MSDOS    /* Not yet for Windows */
 #ifndef min
 #define min(a,b) ((a) > (b) ? (b) : (a))
 #endif /* min */
@@ -168,3 +168,4 @@ username_an_to_ln(context, aname, lnsize, lname)
     }
     return retval;
 }
+#endif
index 3b00b6df5b2c83a1a3413062af6e7fb34925ff0a..79314a6b7a184d62de82563ec3c88549e590a02c 100644 (file)
@@ -27,7 +27,8 @@
 #include "k5-int.h"
 #include <stdio.h>
 
-char *krb5_cc_default_name(context)
+char * INTERFACE
+krb5_cc_default_name(context)
     krb5_context context;
 {
     char *name = getenv(KRB5_ENV_CCNAME);
@@ -37,7 +38,11 @@ char *krb5_cc_default_name(context)
        if (name_buf == 0)
            name_buf = malloc (35);
        
+#ifdef MSDOS_FILESYSTEM
+        strcpy (name_buf, "FILE:\\krb5cc");
+#else
        sprintf(name_buf, "FILE:/tmp/krb5cc_%d", getuid());
+#endif
        name = name_buf;
     }
     return name;
index f32061ec39aa03e6d2ea7cf7c91126448011145c..a6f4f993bfb25d2a91520277d1bfb1503e1dac06 100644 (file)
@@ -51,7 +51,7 @@ extern char *krb5_override_default_realm;
 
 char *krb5_override_default_realm = 0;
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_get_default_realm(context, lrealm)
     krb5_context context;
     char **lrealm;
index f112041e4e3e4224286b11bda4055707a0dc7e4f..8314d44f64fea9f468af1ee6110b09ff0ce22982 100644 (file)
@@ -31,7 +31,7 @@
  Frees the storage taken by a realm list returned by krb5_get_local_realm.
  */
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_free_host_realm(context, realmlist)
     krb5_context context;
     char * const *realmlist;
index 066acfcbf63ce4e41c83f238280cea88cd5ced72..8b50a74c7ed8384d96f0571c50403cb60e0bed52 100644 (file)
@@ -30,7 +30,7 @@
  Frees the storage taken by a host list returned by krb5_get_krbhst.
  */
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_free_krbhst(context, hostlist)
     krb5_context context;
     char * const *hostlist;
index d5539e454e280cd233132b8cbfcf0ab0abbd62eb..94d99f276516e2f500073fe10832687d70ac3f0e 100644 (file)
  * Take an IP addr & port and generate a full IP address.
  */
 
+#define NEED_SOCKETS
 #include "k5-int.h"
 
 #ifdef KRB5_USE_INET
 
 #include "os-proto.h"
+#ifndef _WINSOCKAPI_
 #include <netinet/in.h>
+#endif
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_make_full_ipaddr(context, adr, port, outaddr)
     krb5_context context;
     krb5_int32 adr;
index a5eb91bca54f3c0f6df099de8ccc8454af428785..3789759aa07faf9e4db0815c37db147021bde12c 100644 (file)
@@ -27,7 +27,7 @@
 #include "k5-int.h"
 #include "os-proto.h"
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_gen_portaddr(context, addr, ptr, outaddr)
     krb5_context context;
     const krb5_address *addr;
index 59bd7dacac5072417ac5468906009206c193dac2..d56bb9160adb2ef54ef7d07904e6b14460dda46c 100644 (file)
  * a replay cache tag string.
  */
 
+#define NEED_SOCKETS
 #include "k5-int.h"
 #include "os-proto.h"
 #ifdef KRB5_USE_INET
 #include <sys/types.h>
+#ifndef _WINSOCKAPI_
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #endif
+#endif
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_gen_replay_name(context, address, uniq, string)
     krb5_context context;
     const krb5_address *address;
index 2445c1bde95bf6e1f1e6cbaa740c13dc59e15d12..eeb785c0ada45d46b9e97db022d673df519c4895 100644 (file)
@@ -57,7 +57,7 @@
 extern char *krb5_config_file;         /* extern so can be set at
                                           load/runtime */
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_get_krbhst(context, realm, hostlist)
     krb5_context context;
     const krb5_data *realm;
@@ -91,7 +91,7 @@ krb5_get_krbhst(context, realm, hostlist)
                continue;               /* no match */
 
            /* +1 to get beyond trailing space */
-           if (strlen(filebuf) < realm->length + 1) {
+           if (strlen(filebuf) < (size_t) realm->length + 1) {
                /* no hostname on config line */
                retval = KRB5_CONFIG_BADFORMAT;
                break;
index 18973e1387b733479c0cb187b8413e16ba19156f..fac8e65f360a9d9b346e3894b75686d8ca07d42b 100644 (file)
@@ -38,7 +38,7 @@ time_t gmt_mktime(t)
 {
   time_t accum;
 
-#define assert_time(cnd) if(!(cnd)) return -1
+#define assert_time(cnd) if(!(cnd)) return (time_t) -1
 
   assert_time(t->tm_year>=70);
   assert_time(t->tm_year<=138);
index 1cbe9aead995805d47de4607a5a37db50b08cbde..00c46ca9336eba37209eb51e158cb1e9e39e1627 100644 (file)
  * host names should be in the usual form (e.g. FOO.BAR.BAZ)
  */
 
+#define NEED_SOCKETS
 #include "k5-int.h"
 #include <ctype.h>
 #include <stdio.h>
+#ifdef USE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
 
 /* for old Unixes and friends ... */
 #ifndef MAXHOSTNAMELEN
@@ -75,7 +81,7 @@
 
 extern char *krb5_trans_file;
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_get_host_realm(context, host, realmsp)
     krb5_context context;
     const char *host;
index 4c92c6775dd14b06e55ef9d619ccc445da45c589..3f9599aad633316f999ab3445aec6118fa86e0be 100644 (file)
@@ -25,7 +25,7 @@
 
 #include "k5-int.h"
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_os_init_context(ctx)
        krb5_context ctx;
 {
@@ -45,7 +45,7 @@ krb5_os_init_context(ctx)
        return 0;
 }
 
-void
+void INTERFACE
 krb5_os_free_context(ctx)
        krb5_context    ctx;
 {
index 44521dd9b5f26144cfc92a6c3ef959c5113e8f32..1a54ddd7fd832447c08b520484dc602616490e9f 100644 (file)
 static char *VersionID = "@(#)krbfileio.c      2 - 08/22/91";
 #endif
 
+#define NEED_LOWLEVEL_IO                        /* Need open(), etc. */
+
 #include "k5-int.h"
+#ifdef HAVE_SYS_FILE_H
 #include <sys/file.h>
+#endif
 #include <sys/types.h>
 #ifdef NEED_SYS_FCNTL_H
 #include <sys/fcntl.h>
 #endif
 
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
 #ifdef apollo
 #   define OPEN_MODE_NOT_TRUSTWORTHY
 #endif
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_create_secure_file(context, pathname)
     krb5_context context;
     const char * pathname;
@@ -54,7 +62,7 @@ krb5_create_secure_file(context, pathname)
     /*
      * Create the file with access restricted to the owner
      */
-    fd = open(pathname, O_RDWR | O_CREAT | O_EXCL, 0600);
+    fd = open(pathname, O_RDWR | O_CREAT | O_EXCL | O_BINARY, 0600);
 
 #ifdef OPEN_MODE_NOT_TRUSTWORTHY
     /*
@@ -83,15 +91,17 @@ krb5_create_secure_file(context, pathname)
     }
 }
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_sync_disk_file(context, fp)
     krb5_context context;
     FILE *fp;
 {
     fflush(fp);
+#ifndef MSDOS_FILESYSTEM
     if (fsync(fileno(fp))) {
         return errno;
     }
+#endif
 
     return 0;
 }
index 2e944d0e2496c3c9c160035be54ee05ee92cf655..3e9e13d5f20f5e5abdf7bac1d47d116812f44fd7 100644 (file)
 
 extern char *krb5_defkeyname;
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_kt_default_name(context, name, namesize)
     krb5_context context;
     char *name;
     int namesize;
 {
     strncpy(name, krb5_defkeyname, namesize);
-    if (namesize < strlen(krb5_defkeyname))
+    if ((size_t) namesize < strlen(krb5_defkeyname))
        return KRB5_CONFIG_NOTENUFSPACE;
     else
        return 0;
index 900f8c0bee53d0b6dc79f7b0821686b3408d2009..cefb3ce9a74546e018f5ff20d5485413912e7acd 100644 (file)
@@ -25,6 +25,7 @@
  */
 
 #include "k5-int.h"
+#ifndef _MSDOS    /* Not yet for Windows */
 #include <stdio.h>
 #include <pwd.h>
 
@@ -135,3 +136,4 @@ krb5_kuserok(context, principal, luser)
     fclose(fp);
     return(isok);
 }
+#endif
index 99e6fdcfebbf45b2efd927fa4290151dfe247387..4c2d2e94aa93b468826642c7640d2d84b5c486fa 100644 (file)
  * get socket addresses for KDC.
  */
 
+#define NEED_SOCKETS
 #include "k5-int.h"
 #include <stdio.h>
 #include <sys/types.h>
+#ifndef _WINSOCKAPI_
 #include <sys/socket.h>
 #ifdef KRB5_USE_INET
 #include <netinet/in.h>
 #endif
+#endif
+#ifndef _WINSOCKAPI_
 #include <netdb.h>
+#endif
 #include "os-proto.h"
 
 #ifdef KRB5_USE_INET
@@ -43,7 +48,7 @@ extern char *krb5_kdc_sec_udp_portname;
  * returns count of number of addresses found
  */
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_locate_kdc(context, realm, addr_pp, naddrs)
     krb5_context context;
     const krb5_data *realm;
@@ -51,7 +56,7 @@ krb5_locate_kdc(context, realm, addr_pp, naddrs)
     int *naddrs;
 {
     char **hostlist;
-    int code;
+    krb5_error_code code;
     int i, j, out, count;
     struct sockaddr *addr_p;
     struct sockaddr_in *sin_p;
index 86368d80e0268cc4b05d2fa98eefd982dcd22537..95b086ce61190eae0a41a22c67d3d9c289eff6ae 100644 (file)
@@ -24,6 +24,7 @@
  * libos: krb5_lock_file routine
  */
 
+#ifndef _MSDOS
 #if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
@@ -103,3 +104,17 @@ krb5_lock_file(context, filep, pathname, mode)
 #endif
     return 0;
 }
+#else   /* MSDOS */
+
+#include "k5-int.h"
+
+krb5_error_code INTERFACE
+krb5_lock_file(context, filep, pathname, mode)
+    krb5_context context;
+    FILE *filep;
+    char *pathname;
+    int mode;
+{
+    return 0;
+}
+#endif
index caa85ff78f47e7ae99a29761edd08fd978a7a243..9b28896d96539e296f8a9fd2773a0471d4af7eae 100644 (file)
@@ -22,6 +22,7 @@
  * 
  */
 
+#define NEED_LOWLEVEL_IO
 #include "k5-int.h"
 
 /*
@@ -34,7 +35,7 @@
  * XXX must not use non-blocking I/O
  */
 
-int
+int INTERFACE
 krb5_net_read(context, fd, buf, len)
     krb5_context context;
     int fd;
index 9cf3bb5e7b6e5fd451cc8d6907e806074897bb06..4885a8172a0808a8fee44fd1244c1fa0d0190ad3 100644 (file)
@@ -22,6 +22,7 @@
  * 
  */
 
+#define NEED_LOWLEVEL_IO
 #include "k5-int.h"
 
 /*
@@ -33,7 +34,7 @@
  * XXX must not use non-blocking I/O
  */
 
-int
+int INTERFACE
 krb5_net_write(context, fd, buf, len)
     krb5_context context;
     int fd;
index f23bb664696a3ace4977273b703b8c58444966aa..e5f982673cf526978a60e4cd3beb8f705ce34236 100644 (file)
@@ -28,7 +28,7 @@
 #define KRB5_LIBOS_INT_PROTO__
 
 #ifdef SOCK_DGRAM                      /* XXX hack... */
-krb5_error_code krb5_locate_kdc
+krb5_error_code INTERFACE krb5_locate_kdc
     PROTOTYPE((krb5_context,
               const krb5_data *,
               struct sockaddr **,
@@ -36,20 +36,20 @@ krb5_error_code krb5_locate_kdc
 #endif
 
 #ifdef KRB5_USE_INET
-krb5_error_code krb5_unpack_full_ipaddr
+krb5_error_code INTERFACE krb5_unpack_full_ipaddr
     PROTOTYPE((krb5_context,
               const krb5_address *,
               krb5_int32 *,
               krb5_int16 *));
 
 #ifdef NARROW_PROTOTYPES
-krb5_error_code krb5_make_full_ipaddr
+krb5_error_code INTERFACE krb5_make_full_ipaddr
     PROTOTYPE((krb5_context,
               krb5_int32,
               krb5_int16,
               krb5_address **));
 #else
-krb5_error_code krb5_make_full_ipaddr
+krb5_error_code INTERFACE krb5_make_full_ipaddr
     PROTOTYPE((krb5_context,
               krb5_int32,
               int,                     /* unsigned short promotes to signed
index b6883d782a125229156ab4bc4856dcea7d087ccd..d8c5b23c146b45ffeb8762e6e589240131c1c8e2 100644 (file)
  * Take an ADDRPORT address and split into IP addr & port.
  */
 
+#define NEED_SOCKETS
 #include "k5-int.h"
 
 #ifdef KRB5_USE_INET
 #include "os-proto.h"
+#ifndef _WINSOCKAPI_
 #include <netinet/in.h>
+#endif
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_unpack_full_ipaddr(context, inaddr, adr, port)
     krb5_context context;
     const krb5_address *inaddr;
@@ -41,7 +44,7 @@ krb5_unpack_full_ipaddr(context, inaddr, adr, port)
     unsigned short smushport;
     register krb5_octet *marshal;
     krb5_addrtype temptype;
-    krb5_int32 templength;
+    krb5_ui_4 templength;
 
     if (inaddr->addrtype != ADDRTYPE_ADDRPORT)
        return KRB5_PROG_ATYPE_NOSUPP;
index 2d49249dc1f770690a7742a644630e5b6110eae7..749dae088a48f5c31b8c73342884953556253e77 100644 (file)
  * Write a message to the network
  */
 
+#define NEED_SOCKETS
 #include "k5-int.h"
 #include <errno.h>
+#ifndef _WINSOCKAPI_
 #include <netinet/in.h>
+#endif
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_read_message(context, fdp, inbuf)
     krb5_context context;
        krb5_pointer fdp;
        krb5_data       *inbuf;
 {
-       krb5_int32      len, len2;
+       krb5_int32      len;
+   int      len2, ilen;
        char            *buf = NULL;
        int             fd = *( (int *) fdp);
        
        if ((len2 = krb5_net_read(context, fd, (char *)&len, 4)) != 4)
                return((len2 < 0) ? errno : ECONNABORTED);
-       inbuf->length = len = ntohl(len);
-       if (len) {
+       len = ntohl(len);
+
+   if ((len & VALID_UINT_BITS) != len)  /* Overflow size_t??? */
+      return ENOMEM;
+
+       inbuf->length = ilen = (int) len;
+       if (ilen) {
                /*
                 * We may want to include a sanity check here someday....
                 */
-               if (!(buf = malloc(len))) {
+               if (!(buf = malloc(ilen))) {
                        return(ENOMEM);
                }
-               if ((len2 = krb5_net_read(context, fd, buf, len)) != len) {
+               if ((len2 = krb5_net_read(context, fd, buf, ilen)) != ilen) {
                        krb5_xfree(buf);
                        return((len2 < 0) ? errno : ECONNABORTED);
                }
index 3ca73fbbecc86acad8103d0bf6dcab259c0a95d0..1c07c9c40f761c48158293d46426fdd770ed127c 100644 (file)
@@ -25,6 +25,7 @@
  */
 
 #include "k5-int.h"
+#ifndef _MSDOS
 #include <stdio.h>
 #include <errno.h>
 #include <signal.h>
@@ -238,3 +239,19 @@ krb5_read_password(context, prompt, prompt2, return_pwd, size_return)
 
     return 0;
 }
+#else /* MSDOS */
+/* Don't expect to be called, just define it for sanity and the linker.
+*/
+
+krb5_error_code INTERFACE
+krb5_read_password(context, prompt, prompt2, return_pwd, size_return)
+    krb5_context context;
+    char *prompt;
+    char *prompt2;
+    char *return_pwd;
+    int *size_return;
+{
+   *size_return = 0;
+   return 0;
+}
+#endif   /* !MSDOS */
index dd146825a01f8d8410e40845bafe3252c274ba68..4550bfbca0deb469251eca800a18009248e30c46 100644 (file)
@@ -51,7 +51,7 @@
 
 extern char *krb5_trans_file;
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_get_realm_domain(context, realm, domain)
     krb5_context context;
     const char *realm;
index 24022ad6b34b8853ae0e79ea5c218ff8d62e9b9f..5b66acae42d79f0de62187918f731b9dca224a3e 100644 (file)
@@ -26,6 +26,7 @@
  */
 
 #include "k5-int.h"
+#ifndef _MSDOS    /* Not yet for Windows */
 
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -205,3 +206,4 @@ krb5_sendto_kdc (context, message, realm, reply)
     }
     return retval;
 }
+#endif
index 97509717b61b7070195406f3a9860358bbb13d31..1ee37d3f9e2448e119ab06cc15626254c5bdef83 100644 (file)
  * form.
  */
 
+#define NEED_SOCKETS
 #include "k5-int.h"
+#ifndef _WINSOCKAPI_
 #include <netdb.h>
+#endif
 #include <ctype.h>
+#ifdef HAVE_SYS_PARAM_H
 #include <sys/param.h>
+#endif
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_sname_to_principal(context, hostname, sname, type, ret_princ)
     krb5_context context;
     const char * hostname;
index 5197809d35924888a4ab9da5a38db23d2d1af590..82636efa6959d5fc8f953d93485a457596cb4e46 100644 (file)
 #define timetype long
 #endif
 
+#ifndef HAVE_ERRNO
 extern int errno;
+#endif
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_timeofday(context, timeret)
     krb5_context context;
     register krb5_int32 *timeret;
index 900073e09892ee285f4013c64e9ff51c01944c42..3e0b3b32bae3a37009828c18a66e9a41eefc7b14 100644 (file)
@@ -27,7 +27,7 @@
 #include <stdio.h>
 #include "k5-int.h"
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_unlock_file(context, filep, pathname)
     krb5_context context;
     FILE *filep;
index e9f615412fd41957ac7d1e5fbc2b82e8edc378f0..659b79bbe7347d175dc1db4eaa423a115d9abaa3 100644 (file)
  * convenience sendauth/recvauth functions
  */
 
+#define NEED_SOCKETS
 #include "k5-int.h"
 #include <errno.h>
+#ifndef _WINSOCKAPI_
 #include <netinet/in.h>
+#endif
 
-krb5_error_code
+krb5_error_code INTERFACE
 krb5_write_message(context, fdp, outbuf)
     krb5_context context;
        krb5_pointer    fdp;