summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGravatar Robert S. French <rfrench@mit.edu>1987-06-24 00:19:34 +0000
committerGravatar Robert S. French <rfrench@mit.edu>1987-06-24 00:19:34 +0000
commit16a8eef3e4677dee6d67b1a75bbfcd38ed0682af (patch)
treecead16171179de23e405d913670645e6221d2cd2 /lib
parent5996af46d1060bc74bb16c16ed0dc30b15ccfc49 (diff)
safety
Diffstat (limited to 'lib')
-rw-r--r--lib/ZCkIfNot.c7
-rw-r--r--lib/ZIfNotice.c8
-rw-r--r--lib/ZInit.c6
-rw-r--r--lib/ZLocateU.c3
-rw-r--r--lib/ZMakeAscii.c4
-rw-r--r--lib/ZOpenPort.c2
-rw-r--r--lib/ZParseNot.c12
-rw-r--r--lib/ZPeekIfNot.c4
-rw-r--r--lib/ZSendPkt.c4
9 files changed, 30 insertions, 20 deletions
diff --git a/lib/ZCkIfNot.c b/lib/ZCkIfNot.c
index 22119df..3e5f6ad 100644
--- a/lib/ZCkIfNot.c
+++ b/lib/ZCkIfNot.c
@@ -36,7 +36,8 @@ Code_t ZCheckIfNotice(buffer,buffer_len,notice,auth,predicate,args)
for (;qcount;qcount--) {
if ((retval = ZParseNotice(qptr->packet,qptr->packet_len,
- &tmpnotice,&tmpauth,&qptr->from))
+ &tmpnotice,auth?&tmpauth:0,
+ &qptr->from))
!= ZERR_NONE)
return (retval);
if ((predicate)(&tmpnotice,args)) {
@@ -44,10 +45,10 @@ Code_t ZCheckIfNotice(buffer,buffer_len,notice,auth,predicate,args)
return (ZERR_PKTLEN);
bcopy(qptr->packet,buffer,qptr->packet_len);
if ((retval = ZParseNotice(buffer,qptr->packet_len,
- notice,auth))
+ notice,auth,
+ &qptr->from))
!= ZERR_NONE)
return (retval);
- *auth = tmpauth;
return (Z_RemQueue(qptr));
}
qptr = qptr->next;
diff --git a/lib/ZIfNotice.c b/lib/ZIfNotice.c
index 44815cf..ecdd851 100644
--- a/lib/ZIfNotice.c
+++ b/lib/ZIfNotice.c
@@ -41,18 +41,18 @@ Code_t ZIfNotice(buffer,buffer_len,notice,auth,predicate,args)
for (;;qcount--) {
if ((retval = ZParseNotice(qptr->packet,qptr->packet_len,
- &tmpnotice,&tmpauth,&qptr->from))
- != ZERR_NONE)
+ &tmpnotice,auth?&tmpauth:0,
+ &qptr->from)) != ZERR_NONE)
return (retval);
if ((predicate)(&tmpnotice,args)) {
if (qptr->packet_len > buffer_len)
return (ZERR_PKTLEN);
bcopy(qptr->packet,buffer,qptr->packet_len);
if ((retval = ZParseNotice(buffer,qptr->packet_len,
- notice,auth))
+ notice,auth,
+ &qptr->from))
!= ZERR_NONE)
return (retval);
- *auth = tmpauth;
return (Z_RemQueue(qptr));
}
/* Grunch! */
diff --git a/lib/ZInit.c b/lib/ZInit.c
index e0305cd..9657436 100644
--- a/lib/ZInit.c
+++ b/lib/ZInit.c
@@ -24,7 +24,8 @@ Code_t ZInitialize()
char addr[4];
init_zeph_err_tbl();
-
+ init_krb_err_tbl();
+
bzero(&__HM_addr,sizeof(__HM_addr));
__HM_addr.sin_family = AF_INET;
@@ -45,5 +46,8 @@ Code_t ZInitialize()
__HM_set = 0;
+ if (get_krbrlm(__Zephyr_realm,1) != KSUCCESS)
+ strcpy(__Zephyr_realm,"NOREALM");
+
return (ZERR_NONE);
}
diff --git a/lib/ZLocateU.c b/lib/ZLocateU.c
index 912d4c2..b1e6e69 100644
--- a/lib/ZLocateU.c
+++ b/lib/ZLocateU.c
@@ -45,7 +45,8 @@ Code_t ZLocateUser(user,nlocs)
return (retval);
if ((retval = ZIfNotice(buffer,sizeof buffer,&retnotice,&auth,
- locate_pred,&notice.z_uid)) != ZERR_NONE)
+ locate_pred,(char *)&notice.z_uid)) !=
+ ZERR_NONE)
return (retval);
if (retnotice.z_kind != SERVACK)
diff --git a/lib/ZMakeAscii.c b/lib/ZMakeAscii.c
index f66e352..2cdcf81 100644
--- a/lib/ZMakeAscii.c
+++ b/lib/ZMakeAscii.c
@@ -19,7 +19,7 @@
Code_t ZMakeAscii(ptr,len,field,num)
char *ptr;
int len;
- char *field;
+ unsigned char *field;
int num;
{
int i;
@@ -28,7 +28,7 @@ Code_t ZMakeAscii(ptr,len,field,num)
if (!(i%4)) {
if (len < 3+(i!=0))
return (ZERR_FIELDLEN);
- sprintf(*ptr,"%s0x",i?" ":"");
+ sprintf(ptr,"%s0x",i?" ":"");
ptr += 2+(i!=0);
len -= 2+(i!=0);
}
diff --git a/lib/ZOpenPort.c b/lib/ZOpenPort.c
index 459b212..46ae4af 100644
--- a/lib/ZOpenPort.c
+++ b/lib/ZOpenPort.c
@@ -18,7 +18,7 @@
#include <sys/socket.h>
Code_t ZOpenPort(port)
- int *port;
+ u_short *port;
{
int retval;
struct sockaddr_in bindin;
diff --git a/lib/ZParseNot.c b/lib/ZParseNot.c
index 89346f3..3dfd657 100644
--- a/lib/ZParseNot.c
+++ b/lib/ZParseNot.c
@@ -28,7 +28,6 @@ Code_t ZParseNotice(buffer,len,notice,auth,from)
unsigned int temp[3];
AUTH_DAT dat;
KTEXT_ST authent;
- Key_schedule sess_sched;
ZChecksum_t our_checksum;
CREDENTIALS cred;
@@ -61,6 +60,11 @@ Code_t ZParseNotice(buffer,len,notice,auth,from)
notice->z_auth = *temp;
ptr += strlen(ptr)+1;
+ if (ZReadAscii(ptr,temp,sizeof(int)) == ZERR_BADFIELD)
+ return (ZERR_BADPKT);
+ notice->z_authent_len = *temp;
+ ptr += strlen(ptr)+1;
+
notice->z_ascii_authent = ptr;
ptr += strlen(ptr)+1;
notice->z_class = ptr;
@@ -92,14 +96,16 @@ Code_t ZParseNotice(buffer,len,notice,auth,from)
}
if (__Zephyr_server) {
- if (ZReadAscii(notice->z_ascii_authent,&authent,
+ if (ZReadAscii(notice->z_ascii_authent,authent.dat,
notice->z_authent_len) == ZERR_BADFIELD) {
*auth = 0;
return (ZERR_NONE);
}
+ authent.length = notice->z_authent_len;
result = rd_ap_req(&authent,SERVER_SERVICE,
SERVER_INSTANCE,from->sin_addr.s_addr,
- dat,SERVER_SRVTAB);
+ &dat,SERVER_SRVTAB);
+ bcopy(dat.session,__Zephyr_session,sizeof(C_Block));
*auth = (result == RD_AP_OK);
return (ZERR_NONE);
}
diff --git a/lib/ZPeekIfNot.c b/lib/ZPeekIfNot.c
index c81ae3a..d40d8fb 100644
--- a/lib/ZPeekIfNot.c
+++ b/lib/ZPeekIfNot.c
@@ -49,11 +49,9 @@ Code_t ZPeekIfNotice(buffer,buffer_len,notice,auth,predicate,args)
return (ZERR_PKTLEN);
bcopy(qptr->packet,buffer,qptr->packet_len);
if ((retval = ZParseNotice(buffer,qptr->packet_len,
- notice,auth))
+ notice,auth,&qptr->from))
!= ZERR_NONE)
return (retval);
- if (auth)
- *auth = tmpauth;
return (ZERR_NONE);
}
/* Grunch! */
diff --git a/lib/ZSendPkt.c b/lib/ZSendPkt.c
index 60d84ae..bfc6bc8 100644
--- a/lib/ZSendPkt.c
+++ b/lib/ZSendPkt.c
@@ -42,7 +42,7 @@ Code_t ZSendPacket(packet,len)
if (sendto(ZGetFD(),packet,len,0,&dest,sizeof(dest)) < 0)
return (errno);
- ZParseNotice(packet,len,&notice,&auth);
+ ZParseNotice(packet,len,&notice,0,0);
if (notice.z_kind == UNSAFE || notice.z_kind == HMACK ||
notice.z_kind == SERVACK || __HM_set)
@@ -54,7 +54,7 @@ Code_t ZSendPacket(packet,len)
for (i=0;i<12;i++) {
select(0,&t1,&t2,&t3,&tv);
retval = ZCheckIfNotice(ackpack,sizeof ackpack,&notice,
- &auth,findack,&notice.z_uid);
+ &auth,findack,(char *)&notice.z_uid);
if (retval == ZERR_NONE)
return (ZERR_NONE);
if (retval != ZERR_NONOTICE)