summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/ZCkZAut.c15
-rw-r--r--lib/ZExpnRlm.c3
-rw-r--r--lib/ZFmtAuth.c12
-rw-r--r--lib/ZInit.c15
-rw-r--r--lib/ZMakeZcode.c8
-rw-r--r--lib/ZMkAuth.c2
-rw-r--r--lib/ZParseNot.c16
-rw-r--r--lib/ZReadAscii.c2
-rw-r--r--lib/ZVariables.c5
-rw-r--r--lib/Zinternal.c38
-rw-r--r--lib/charset.c51
11 files changed, 87 insertions, 80 deletions
diff --git a/lib/ZCkZAut.c b/lib/ZCkZAut.c
index bc2e88f..4bc3e2a 100644
--- a/lib/ZCkZAut.c
+++ b/lib/ZCkZAut.c
@@ -44,7 +44,7 @@ Code_t ZCheckZcodeAuthentication(ZNotice_t *notice,
int valid;
char *cksum0_base, *cksum1_base = NULL, *cksum2_base;
char *x;
- unsigned char *asn1_data, *key_data;
+ unsigned char *asn1_data, *key_data, *cksum_data;
int asn1_len, key_len, cksum0_len = 0, cksum1_len = 0, cksum2_len = 0;
#endif
@@ -129,9 +129,9 @@ Code_t ZCheckZcodeAuthentication(ZNotice_t *notice,
away once Kerberos 4 does. */
if ((!notice->z_ascii_checksum || *notice->z_ascii_checksum != 'Z') &&
key_len == 8 &&
- (enctype == ENCTYPE_DES_CBC_CRC ||
- enctype == ENCTYPE_DES_CBC_MD4 ||
- enctype == ENCTYPE_DES_CBC_MD5)) {
+ (enctype == (krb5_enctype)ENCTYPE_DES_CBC_CRC ||
+ enctype == (krb5_enctype)ENCTYPE_DES_CBC_MD4 ||
+ enctype == (krb5_enctype)ENCTYPE_DES_CBC_MD5)) {
/* try old-format checksum (covers cksum0 only) */
ZChecksum_t our_checksum;
@@ -153,10 +153,11 @@ Code_t ZCheckZcodeAuthentication(ZNotice_t *notice,
}
/* HOLDING: creds, cksumbuf.data */
- memcpy(cksumbuf.data, cksum0_base, cksum0_len);
+ cksum_data = (unsigned char *)cksumbuf.data;
+ memcpy(cksum_data, cksum0_base, cksum0_len);
if (cksum1_len)
- memcpy(cksumbuf.data + cksum0_len, cksum1_base, cksum1_len);
- memcpy(cksumbuf.data + cksum0_len + cksum1_len,
+ memcpy(cksum_data + cksum0_len, cksum1_base, cksum1_len);
+ memcpy(cksum_data + cksum0_len + cksum1_len,
cksum2_base, cksum2_len);
/* decode zcoded checksum */
diff --git a/lib/ZExpnRlm.c b/lib/ZExpnRlm.c
index 54c2fdb..6f904b6 100644
--- a/lib/ZExpnRlm.c
+++ b/lib/ZExpnRlm.c
@@ -3,8 +3,7 @@
#include <ctype.h>
char *
-ZExpandRealm(realm)
-char *realm;
+ZExpandRealm(char *realm)
{
char *cp1, *cp2;
static char expand[REALM_SZ];
diff --git a/lib/ZFmtAuth.c b/lib/ZFmtAuth.c
index 50e4073..f658f7c 100644
--- a/lib/ZFmtAuth.c
+++ b/lib/ZFmtAuth.c
@@ -38,7 +38,7 @@ ZFormatAuthenticNotice(ZNotice_t *notice,
return (retval);
newnotice.z_checksum =
- (ZChecksum_t)des_quad_cksum((unsigned char *)buffer, NULL, ptr - buffer, 0, (C_Block *)session);
+ (ZChecksum_t)des_quad_cksum((void *)buffer, NULL, ptr - buffer, 0, (C_Block *)session);
if ((retval = Z_FormatRawHeader(&newnotice, buffer, buffer_len,
&hdrlen, NULL, NULL)) != ZERR_NONE)
@@ -73,19 +73,23 @@ ZFormatAuthenticNoticeV5(ZNotice_t *notice,
int retval, hdrlen, hdr_adj;
krb5_enctype enctype;
krb5_cksumtype cksumtype;
+#ifdef HAVE_KRB4
int key_len;
+#endif
char *cksum_start, *cstart, *cend;
int cksum_len;
+#ifdef HAVE_KRB4
key_len = Z_keylen(keyblock);
+#endif
retval = Z_ExtractEncCksum(keyblock, &enctype, &cksumtype);
if (retval)
return (ZAUTH_FAILED);
#ifdef HAVE_KRB4
- if (key_len == 8 && (enctype == ENCTYPE_DES_CBC_CRC ||
- enctype == ENCTYPE_DES_CBC_MD4 ||
- enctype == ENCTYPE_DES_CBC_MD5)) {
+ if (key_len == 8 && (enctype == (krb5_enctype)ENCTYPE_DES_CBC_CRC ||
+ enctype == (krb5_enctype)ENCTYPE_DES_CBC_MD4 ||
+ enctype == (krb5_enctype)ENCTYPE_DES_CBC_MD5)) {
C_Block tmp;
memcpy(&tmp, Z_keydata(keyblock), key_len);
return ZFormatAuthenticNotice(notice, buffer, buffer_len, len,
diff --git a/lib/ZInit.c b/lib/ZInit.c
index 23dd4af..abaa2a4 100644
--- a/lib/ZInit.c
+++ b/lib/ZInit.c
@@ -24,9 +24,6 @@ static const char rcsid_ZInitialize_c[] =
#ifdef HAVE_KRB5
#include <krb5.h>
#endif
-#ifdef HAVE_KRB5_ERR_H
-#include <krb5_err.h>
-#endif
#ifndef INADDR_NONE
#define INADDR_NONE 0xffffffff
@@ -54,7 +51,8 @@ ZInitialize(void)
char addr[4], hostname[NS_MAXDNAME];
struct in_addr servaddr;
struct sockaddr_in sin;
- unsigned int s, sinsize = sizeof(sin);
+ unsigned int sinsize = sizeof(sin);
+ int s;
Code_t code;
ZNotice_t notice;
#ifdef HAVE_KRB5
@@ -244,10 +242,11 @@ struct sockaddr_in ZGetDestAddr (void) {
static int txt_lookup(char *qname, char **result) {
int ret, buflen, left;
void *buf = NULL;
+ void *bufend = NULL;
HEADER *hdr;
unsigned char *p;
char dname[NS_MAXDNAME];
- int queries, answers, stored;
+ int queries, answers;
ret = res_init();
if (ret < 0)
@@ -266,6 +265,7 @@ static int txt_lookup(char *qname, char **result) {
buflen = ret;
left = ret;
+ bufend = buflen + (unsigned char *)buf;
hdr = (HEADER *)buf;
p = buf;
@@ -275,7 +275,7 @@ static int txt_lookup(char *qname, char **result) {
left -= sizeof (HEADER);
while (queries--) {
- ret = dn_expand(buf, buf + buflen, p, dname, sizeof dname);
+ ret = dn_expand(buf, bufend, p, dname, sizeof dname);
if (ret < 0 || (ret + 4) > left)
return -1;
p += ret + 4;
@@ -285,11 +285,10 @@ static int txt_lookup(char *qname, char **result) {
if (!ret || !answers)
return -1;
- stored = 0;
while (answers--) {
int class, type;
- ret = dn_expand(buf, buf + buflen, p, dname, sizeof dname);
+ ret = dn_expand(buf, bufend, p, dname, sizeof dname);
if (ret < 0 || ret > left)
return -1;
p += ret;
diff --git a/lib/ZMakeZcode.c b/lib/ZMakeZcode.c
index 85c6f9d..63397a5 100644
--- a/lib/ZMakeZcode.c
+++ b/lib/ZMakeZcode.c
@@ -54,16 +54,16 @@ ZMakeZcode(register char *ptr,
case 0x00:
if (len < 3)
return ZERR_FIELDLEN;
- *ptr++ = 0xff;
- *ptr++ = 0xf0;
+ *(unsigned char *)ptr++ = 0xff;
+ *(unsigned char *)ptr++ = 0xf0;
len -= 2;
continue;
case 0xff:
if (len < 3)
return ZERR_FIELDLEN;
- *ptr++ = 0xff;
- *ptr++ = 0xf1;
+ *(unsigned char *)ptr++ = 0xff;
+ *(unsigned char *)ptr++ = 0xf1;
len -= 2;
continue;
diff --git a/lib/ZMkAuth.c b/lib/ZMkAuth.c
index 8b74570..8989481 100644
--- a/lib/ZMkAuth.c
+++ b/lib/ZMkAuth.c
@@ -123,7 +123,7 @@ ZMakeZcodeRealmAuthentication(register ZNotice_t *notice,
krb5_auth_context authctx;
krb5_data *authent;
char *cksum_start, *cstart, *cend;
- int cksum_len, zcode_len, phdr_adj;
+ int cksum_len, zcode_len = 0, phdr_adj;
notice->z_ascii_authent = NULL;
diff --git a/lib/ZParseNot.c b/lib/ZParseNot.c
index 9143a12..48311b5 100644
--- a/lib/ZParseNot.c
+++ b/lib/ZParseNot.c
@@ -242,7 +242,7 @@ ZParseNotice(char *buffer,
/* we will take it on faith that ipv6 addresses are longer than ipv4
addresses */
unsigned char addrbuf[sizeof(notice->z_sender_sockaddr.ip6.sin6_addr)];
- int len;
+ int alen;
/* because we're paranoid about naughtily misformatted packets */
if (memchr(ptr, '\0', end - ptr) == NULL)
@@ -250,24 +250,24 @@ ZParseNotice(char *buffer,
if (*ptr == 'Z') {
if (ZReadZcode((unsigned char *)ptr, addrbuf,
- sizeof(addrbuf), &len) == ZERR_BADFIELD)
+ sizeof(addrbuf), &alen) == ZERR_BADFIELD)
BAD_PACKET("parsing Zcode address");
} else {
- len = sizeof(notice->z_sender_sockaddr.ip4.sin_addr);
+ alen = sizeof(notice->z_sender_sockaddr.ip4.sin_addr);
if (ZReadAscii(ptr, end - ptr, (unsigned char *)addrbuf,
- len) == ZERR_BADFIELD)
+ alen) == ZERR_BADFIELD)
BAD_PACKET("parsing NetASCII address");
}
- if (len == sizeof(notice->z_sender_sockaddr.ip6.sin6_addr)) {
+ if (alen == sizeof(notice->z_sender_sockaddr.ip6.sin6_addr)) {
notice->z_sender_sockaddr.ip6.sin6_family = AF_INET6;
- memcpy(&notice->z_sender_sockaddr.ip6.sin6_addr, addrbuf, len);
+ memcpy(&notice->z_sender_sockaddr.ip6.sin6_addr, addrbuf, alen);
#ifdef HAVE_SOCKADDR_IN6_SIN6_LEN
notice->z_sender_sockaddr.ip6.sin6_len = sizeof(notice->z_sender_sockaddr.ip6);
#endif
- } else if (len == sizeof(notice->z_sender_sockaddr.ip4.sin_addr)) {
+ } else if (alen == sizeof(notice->z_sender_sockaddr.ip4.sin_addr)) {
notice->z_sender_sockaddr.ip4.sin_family = AF_INET;
- memcpy(&notice->z_sender_sockaddr.ip4.sin_addr, addrbuf, len);
+ memcpy(&notice->z_sender_sockaddr.ip4.sin_addr, addrbuf, alen);
#ifdef HAVE_SOCKADDR_IN_SIN_LEN
notice->z_sender_sockaddr.ip4.sin_len = sizeof(notice->z_sender_sockaddr.ip4);
#endif
diff --git a/lib/ZReadAscii.c b/lib/ZReadAscii.c
index 49aaa58..69c1ecd 100644
--- a/lib/ZReadAscii.c
+++ b/lib/ZReadAscii.c
@@ -28,7 +28,7 @@ ZReadAscii(char *ptr,
int i;
unsigned int hexbyte;
register int c1, c2;
- register unsigned int temp;
+ register int temp;
for (i=0;i<num;i++) {
if (len >= 1 && *ptr == ' ') {
diff --git a/lib/ZVariables.c b/lib/ZVariables.c
index 6f06bab..fb8c9e5 100644
--- a/lib/ZVariables.c
+++ b/lib/ZVariables.c
@@ -168,7 +168,7 @@ static int
varline(char *bfr, char *var)
{
register char *cp;
-
+ size_t namelen;
if (!bfr[0] || bfr[0] == '#') /* comment or null line */
return (0);
@@ -179,7 +179,8 @@ varline(char *bfr, char *var)
#define max(a,b) ((a > b) ? (a) : (b))
- if (strncasecmp(bfr, var, max(strlen(var),cp - bfr)))
+ namelen = cp - bfr;
+ if (strncasecmp(bfr, var, max(strlen(var), namelen)))
return(0); /* var is not the var in
bfr ==> no match */
diff --git a/lib/Zinternal.c b/lib/Zinternal.c
index 7e3e904..0f692f3 100644
--- a/lib/Zinternal.c
+++ b/lib/Zinternal.c
@@ -87,7 +87,7 @@ Code_t
Z_krb5_lookup_cksumtype(krb5_enctype e,
krb5_cksumtype *c)
{
- int i;
+ unsigned int i;
for (i = 0; i < N_CKSUM_MAP; i++) {
if (cksum_map[i].e == e) {
@@ -188,12 +188,12 @@ int
Z_PacketWaiting(void)
{
struct timeval tv;
- fd_set read;
+ fd_set readfds;
tv.tv_sec = tv.tv_usec = 0;
- FD_ZERO(&read);
- FD_SET(ZGetFD(), &read);
- return (select(ZGetFD() + 1, &read, NULL, NULL, &tv));
+ FD_ZERO(&readfds);
+ FD_SET(ZGetFD(), &readfds);
+ return (select(ZGetFD() + 1, &readfds, NULL, NULL, &tv));
}
@@ -254,7 +254,8 @@ Z_SearchQueue(ZUnique_Id_t *uid,
if (ZCompareUID(uid, &qptr->uid) && qptr->kind == kind)
return (qptr);
next = qptr->next;
- if (qptr->timep && (qptr->timep+Z_NOTICETIMELIMIT < tv.tv_sec))
+ if (qptr->timep &&
+ (qptr->timep+Z_NOTICETIMELIMIT < (unsigned long)tv.tv_sec))
Z_RemQueue(qptr);
qptr = next;
}
@@ -1154,9 +1155,9 @@ Z_SendFragmentedNotice(ZNotice_t *notice,
Code_t Z_XmitFragment(ZNotice_t *notice,
char *buf,
int len,
- int wait)
+ int waitforack)
{
- return(ZSendPacket(buf, len, wait));
+ return(ZSendPacket(buf, len, waitforack));
}
/* For debugging printing */
@@ -1285,14 +1286,13 @@ Z_InsertZcodeChecksum(krb5_keyblock *keyblock,
int cksum1_len; /* length of part after checksum */
krb5_data cksumbuf;
krb5_data cksum;
- unsigned char *key_data;
- int key_len;
+ unsigned char *cksum_data;
+ unsigned int cksum_data_len;
+ char *cksum_out_data;
krb5_enctype enctype;
krb5_cksumtype cksumtype;
Code_t result;
- key_data = Z_keydata(keyblock);
- key_len = Z_keylen(keyblock);
result = Z_ExtractEncCksum(keyblock, &enctype, &cksumtype);
if (result)
return (ZAUTH_FAILED);
@@ -1306,19 +1306,22 @@ Z_InsertZcodeChecksum(krb5_keyblock *keyblock,
cksumbuf.data = malloc(cksumbuf.length);
if (!cksumbuf.data)
return ENOMEM;
- memcpy(cksumbuf.data, cksum_start, cksum0_len);
- memcpy(cksumbuf.data + cksum0_len, cend, cksum1_len);
- memcpy(cksumbuf.data + cksum0_len + cksum1_len,
+ cksum_data = (unsigned char *)cksumbuf.data;
+ memcpy(cksum_data, cksum_start, cksum0_len);
+ memcpy(cksum_data + cksum0_len, cend, cksum1_len);
+ memcpy(cksum_data + cksum0_len + cksum1_len,
notice->z_message, notice->z_message_len);
/* compute the checksum */
result = Z_Checksum(&cksumbuf, keyblock, cksumtype,
from_server ? Z_KEYUSAGE_SRV_CKSUM
: Z_KEYUSAGE_CLT_CKSUM,
- (char **)&cksum.data, &cksum.length);
+ &cksum_out_data, &cksum_data_len);
if (result) {
free(cksumbuf.data);
return result;
}
+ cksum.data = cksum_out_data;
+ cksum.length = cksum_data_len;
/*
* OK.... we can zcode to a space starting at 'cstart',
@@ -1332,7 +1335,7 @@ Z_InsertZcodeChecksum(krb5_keyblock *keyblock,
free(cksum.data);
if (!result) {
int zcode_len = strlen(cstart) + 1;
- memcpy(cstart + zcode_len, cksumbuf.data + cksum0_len, cksum1_len);
+ memcpy(cstart + zcode_len, cksum_data + cksum0_len, cksum1_len);
*length_adjust = zcode_len - cksum_len + (cksum0_len + cksum1_len);
}
free(cksumbuf.data);
@@ -1366,7 +1369,6 @@ Z_krb5_verify_cksum(krb5_keyblock *keyblock,
#else
krb5_crypto cryptctx;
Checksum checksum;
- size_t xlen;
#endif
memset(&checksum, 0, sizeof(checksum));
diff --git a/lib/charset.c b/lib/charset.c
index 34806e3..14aec28 100644
--- a/lib/charset.c
+++ b/lib/charset.c
@@ -104,32 +104,33 @@ ZTransliterate(char *in, int inlen, char *inset, char *outset, char **out, int *
free(outset_t);
- if (ih != (iconv_t)-1) {
- size = inlen; /* doubling this should be enough, but.. */
- do {
- size = size * 2;
-
- *out = malloc(size);
- if (*out == NULL) {
- iconv_close(ih);
- return errno;
- }
-
- inleft = inlen;
- outleft = size;
-
- inp = in;
- outp = *out;
-
- retval = iconv(ih, &inp, &inleft, &outp, &outleft);
- if (retval < 0)
- free(*out);
- } while (retval < 0 && errno == E2BIG);
-
- iconv_close(ih);
- }
+ if (ih == (iconv_t)-1)
+ return errno;
+
+ size = inlen; /* doubling this should be enough, but.. */
+ do {
+ size = size * 2;
+
+ *out = malloc(size);
+ if (*out == NULL) {
+ iconv_close(ih);
+ return errno;
+ }
+
+ inleft = inlen;
+ outleft = size;
+
+ inp = in;
+ outp = *out;
+
+ retval = iconv(ih, &inp, &inleft, &outp, &outleft);
+ if (retval < 0)
+ free(*out);
+ } while (retval < 0 && errno == E2BIG);
+
+ iconv_close(ih);
- if (ih == (iconv_t)-1 || retval < 0)
+ if (retval < 0)
return errno;
*outlen = size - outleft;