From 34733b12e2cff13e8e884753583fa04fe564570a Mon Sep 17 00:00:00 2001 From: Simon Josefsson Date: Mon, 8 Sep 2003 16:19:08 +0000 Subject: [PATCH] Fix. --- lib/asn1.c | 23 ++++++++++++----------- lib/kdcreq.c | 10 +++++++--- lib/shishi.h.in | 15 +++++++-------- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/lib/asn1.c b/lib/asn1.c index 7543c2fe..09c6fdb0 100644 --- a/lib/asn1.c +++ b/lib/asn1.c @@ -173,19 +173,20 @@ shishi_asn1_read_integer (Shishi * handle, Shishi_asn1 node, int shishi_asn1_read_bitstring (Shishi * handle, Shishi_asn1 node, - const char *field, int *flags) + const char *field, uint32_t *flags) { - unsigned char buf[4]; - int buflen; - int i; + char *buf; + size_t buflen; + size_t i; int res; - memset (buf, 0, sizeof (buf)); - buflen = sizeof (buf); - res = shishi_asn1_read (handle, node, field, buf, &buflen); + res = shishi_asn1_read2 (handle, node, field, &buf, &buflen); if (res != SHISHI_OK) return res; + if (buflen < 4) + return SHISHI_ASN1_ERROR; + *flags = 0; for (i = 0; i < 4; i++) { @@ -195,7 +196,8 @@ shishi_asn1_read_bitstring (Shishi * handle, Shishi_asn1 node, ((buf[i] >> 1) & 0x08) | ((buf[i] << 1) & 0x10) | ((buf[i] << 3) & 0x20) | - ((buf[i] << 5) & 0x40) | ((buf[i] << 7) & 0x80)) << (8 * i); + ((buf[i] << 5) & 0x40) | + ((buf[i] << 7) & 0x80)) << (8 * i); } return SHISHI_OK; @@ -279,11 +281,10 @@ shishi_asn1_write_integer (Shishi * handle, Shishi_asn1 node, int shishi_asn1_write_bitstring (Shishi * handle, Shishi_asn1 node, - const char *field, int flags) + const char *field, uint32_t flags) { unsigned char buf[4]; - int buflen; - int i; + size_t i; int res; /* XXX diff --git a/lib/kdcreq.c b/lib/kdcreq.c index e480601c..d6534df9 100644 --- a/lib/kdcreq.c +++ b/lib/kdcreq.c @@ -569,7 +569,7 @@ shishi_kdcreq_set_etype (Shishi * handle, * Return value: Returns SHISHI_OK iff successful. **/ int -shishi_kdcreq_options (Shishi * handle, Shishi_asn1 kdcreq, int *flags) +shishi_kdcreq_options (Shishi * handle, Shishi_asn1 kdcreq, uint32_t *flags) { return shishi_asn1_read_bitstring (handle, kdcreq, "req-body.kdc-options", flags); @@ -613,7 +613,9 @@ shishi_kdcreq_renewable_p (Shishi * handle, Shishi_asn1 kdcreq) * Return value: Returns SHISHI_OK iff successful. **/ int -shishi_kdcreq_options_set (Shishi * handle, Shishi_asn1 kdcreq, int options) +shishi_kdcreq_options_set (Shishi * handle, + Shishi_asn1 kdcreq, + uint32_t options) { int res; @@ -636,7 +638,9 @@ shishi_kdcreq_options_set (Shishi * handle, Shishi_asn1 kdcreq, int options) * Return value: Returns SHISHI_OK iff successful. **/ int -shishi_kdcreq_options_add (Shishi * handle, Shishi_asn1 kdcreq, int option) +shishi_kdcreq_options_add (Shishi * handle, + Shishi_asn1 kdcreq, + uint32_t option) { int options; int res; diff --git a/lib/shishi.h.in b/lib/shishi.h.in index 44d72d80..c29cafb8 100644 --- a/lib/shishi.h.in +++ b/lib/shishi.h.in @@ -514,9 +514,7 @@ Shishi_krb_error; typedef enum { - SHISHI_TKTSHINTFLAGS_ACCEPT_EXPIRED = 1, - SHISHI_TKTSHINTFLAGS_RENEWABLE_TICKET = 2, - SHISHI_TKTSHINTFLAGS_PROXIABLE_TICKET = 4 + SHISHI_TKTSHINTFLAGS_ACCEPT_EXPIRED = 1 } Shishi_tkts_hintflags; @@ -528,6 +526,7 @@ struct Shishi_tkts_hint char *client; char *clientrealm; int flags; + Shishi_ticketflags tktflags; int32_t etype; char *passwd; time_t starttime; @@ -1013,12 +1012,12 @@ extern int shishi_kdcreq_etype (Shishi * handle, Shishi_asn1 kdcreq, extern int shishi_kdcreq_set_etype (Shishi * handle, Shishi_asn1 kdcreq, int32_t * etype, int netype); extern int shishi_kdcreq_options (Shishi * handle, Shishi_asn1 kdcreq, - int *flags); + uint32_t *flags); extern int shishi_kdcreq_renewable_p (Shishi * handle, Shishi_asn1 kdcreq); extern int shishi_kdcreq_options_set (Shishi * handle, Shishi_asn1 kdcreq, - int options); + uint32_t options); extern int shishi_kdcreq_options_add (Shishi * handle, Shishi_asn1 kdcreq, - int option); + uint32_t option); extern int shishi_kdcreq_clear_padata (Shishi * handle, Shishi_asn1 kdcreq); extern int shishi_kdcreq_get_padata (Shishi * handle, Shishi_asn1 kdcreq, @@ -1434,7 +1433,7 @@ extern int shishi_asn1_read_int32 (Shishi * handle, Shishi_asn1 node, extern int shishi_asn1_read_uint32 (Shishi * handle, Shishi_asn1 node, const char *field, uint32_t * i); extern int shishi_asn1_read_bitstring (Shishi * handle, Shishi_asn1 node, - const char *field, int *flags); + const char *field, uint32_t *flags); extern int shishi_asn1_read_optional (Shishi * handle, Shishi_asn1 node, const char *field, char *data, size_t * datalen); @@ -1450,7 +1449,7 @@ extern int shishi_asn1_write_int32 (Shishi * handle, Shishi_asn1 node, extern int shishi_asn1_write_uint32 (Shishi * handle, Shishi_asn1 node, const char *field, uint32_t n); extern int shishi_asn1_write_bitstring (Shishi * handle, Shishi_asn1 node, - const char *field, int flags); + const char *field, uint32_t flags); extern int shishi_asn1_number_of_elements (Shishi * handle, Shishi_asn1 node, const char *field, size_t * n); -- 2.11.4.GIT