1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

r9680: Update Heimdal to current lorikeet-heimdal (which was itself updated

to Heimdal CVS as of 2005-08-27).

Andrew Bartlett
This commit is contained in:
Andrew Bartlett 2005-08-27 11:49:06 +00:00 committed by Gerald (Jerry) Carter
parent 50e6229c7a
commit 913924a499
25 changed files with 784 additions and 326 deletions

View File

@ -1,10 +1,11 @@
#! /bin/sh
# $Id: fix-export,v 1.38 2005/07/05 14:00:51 lha Exp $
# $Id: fix-export,v 1.39 2005/08/11 08:57:52 lha Exp $
echo "fixing distribution in $1..."
distdir="$1"
echo "fixing distribution in $distdir..."
test -d "$1" || { echo not a dir in \$1 ; exit 1 ; }
cd $1
test -d "$distdir" || { echo not a dir in \$distdir ; exit 1 ; }
cd $distdir
if test "$DATEDVERSION"; then
ed -s configure.in << END
@ -26,11 +27,6 @@ echo "$M" | sed -e 's/./*/g'
echo "$M"
echo "$M" | sed -e 's/./*/g'
ed -s configure.in << END
/test -z/s,^,#,
w
q
END
autoreconf --force --install
(cd doc && makeinfo heimdal.texi)
@ -76,7 +72,8 @@ make_proto appl/login login_protos.h /dev/null '$(login_SOURCES)'
make_proto kcm kcm_protos.h /dev/null '$(kcm_SOURCES)'
make_proto kdc kdc-protos.h /dev/null '$(libkdc_la_SOURCES)'
rm fix-export make-release make-release.el
find . -name .cvsignore -print | xargs rm
find . -name .__afs\* -print | xargs rm
rm -fr autom4te*.cache
echo "tar cf - ${distdir} \| gzip -9 > ${distdir}.tar.gz"
echo "gpg -ba -u 0x45D901D8 ${distdir}.tar.gz"

View File

@ -32,7 +32,7 @@
*/
/*
* $Id: kdc_locl.h,v 1.72 2005/08/12 08:46:39 lha Exp $
* $Id: kdc_locl.h,v 1.73 2005/08/15 11:07:25 lha Exp $
*/
#ifndef __KDC_LOCL_H__
@ -118,6 +118,7 @@ krb5_error_code _kdc_pk_mk_pa_reply(krb5_context,
pk_client_params *,
const hdb_entry *,
const KDC_REQ *,
const krb5_data *,
krb5_keyblock **,
METHOD_DATA *);
krb5_error_code _kdc_pk_check_client(krb5_context,

View File

@ -33,7 +33,7 @@
#include "gen_locl.h"
RCSID("$Id: gen.c,v 1.62 2005/07/19 18:46:50 lha Exp $");
RCSID("$Id: gen.c,v 1.63 2005/08/23 10:49:16 lha Exp $");
FILE *headerfile, *codefile, *logfile;
@ -41,7 +41,7 @@ FILE *headerfile, *codefile, *logfile;
static const char *orig_filename;
static char *header;
static char *headerbase = STEM;
static const char *headerbase = STEM;
/*
* list of all IMPORTs
@ -77,9 +77,9 @@ init_generate (const char *filename, const char *base)
orig_filename = filename;
if (base != NULL) {
asprintf(&headerbase, "%s", base);
headerbase = strdup(base);
if (headerbase == NULL)
errx(1, "malloc");
errx(1, "strdup");
}
asprintf(&header, "%s.h", headerbase);
if (header == NULL)
@ -349,7 +349,7 @@ space(int level)
fprintf(headerfile, " ");
}
static char *
static const char *
last_member_p(struct member *m)
{
struct member *n = ASN1_TAILQ_NEXT(m, members);
@ -521,7 +521,7 @@ define_asn1 (int level, Type *t)
}
static void
define_type (int level, char *name, Type *t, int typedefp, int preservep)
define_type (int level, const char *name, Type *t, int typedefp, int preservep)
{
switch (t->type) {
case TType:

View File

@ -34,7 +34,7 @@
#include "gen_locl.h"
#include "lex.h"
RCSID("$Id: gen_decode.c,v 1.27 2005/07/19 18:09:30 lha Exp $");
RCSID("$Id: gen_decode.c,v 1.28 2005/08/23 11:51:25 lha Exp $");
static void
decode_primitive (const char *typename, const char *name, const char *forwstr)
@ -198,7 +198,7 @@ find_tag (const Type *t,
static int
decode_type (const char *name, const Type *t, int optional,
const char *forwstr)
const char *forwstr, const char *tmpstr)
{
switch (t->type) {
case TType: {
@ -304,7 +304,7 @@ decode_type (const char *name, const Type *t, int optional,
name, m->gen_name);
if (s == NULL)
errx(1, "malloc");
decode_type (s, m->type, m->optional, forwstr);
decode_type (s, m->type, m->optional, forwstr, m->gen_name);
free (s);
}
@ -346,7 +346,7 @@ decode_type (const char *name, const Type *t, int optional,
"%s = calloc(1, sizeof(*%s));\n"
"if (%s == NULL) { e = ENOMEM; %s; }\n",
s, s, s, forwstr);
decode_type (s, m->type, 0, forwstr);
decode_type (s, m->type, 0, forwstr, m->gen_name);
free (s);
fprintf(codefile, "members |= (1 << %d);\n", memno);
@ -382,33 +382,45 @@ decode_type (const char *name, const Type *t, int optional,
case TSetOf:
case TSequenceOf: {
char *n;
char *sname;
fprintf (codefile,
"{\n"
"size_t origlen = len;\n"
"size_t oldret = ret;\n"
"void *tmp;\n"
"size_t %s_origlen = len;\n"
"size_t %s_oldret = ret;\n"
"void *%s_tmp;\n"
"ret = 0;\n"
"(%s)->len = 0;\n"
"(%s)->val = NULL;\n"
"while(ret < origlen) {\n"
"tmp = realloc((%s)->val, "
"while(ret < %s_origlen) {\n"
"%s_tmp = realloc((%s)->val, "
" sizeof(*((%s)->val)) * ((%s)->len + 1));\n"
"if (tmp == NULL) { %s; }\n"
"if (%s_tmp == NULL) { %s; }\n"
"(%s)->len++;\n"
"(%s)->val = tmp;\n",
name, name, name, name, name, forwstr, name, name);
"(%s)->val = %s_tmp;\n",
tmpstr, tmpstr, tmpstr,
name, name,
tmpstr, tmpstr,
name, name, name,
tmpstr,
forwstr, name, name,
tmpstr);
asprintf (&n, "&(%s)->val[(%s)->len-1]", name, name);
if (n == NULL)
errx(1, "malloc");
decode_type (n, t->subtype, 0, forwstr);
asprintf (&sname, "%s_s_of", tmpstr);
if (sname == NULL)
errx(1, "malloc");
decode_type (n, t->subtype, 0, forwstr, sname);
fprintf (codefile,
"len = origlen - ret;\n"
"len = %s_origlen - ret;\n"
"}\n"
"ret += oldret;\n"
"}\n");
"ret += %s_oldret;\n"
"}\n",
tmpstr, tmpstr);
free (n);
free (sname);
break;
}
case TGeneralizedTime:
@ -418,17 +430,21 @@ decode_type (const char *name, const Type *t, int optional,
decode_primitive ("general_string", name, forwstr);
break;
case TTag:{
char *tname;
fprintf(codefile,
"{\n"
"size_t tagdatalen, oldlen;\n");
"size_t %s_datalen, %s_oldlen;\n",
tmpstr, tmpstr);
if(dce_fix)
fprintf(codefile,
"int dce_fix;\n");
fprintf(codefile, "e = der_match_tag_and_length(p, len, %s, %s, %s, "
"&tagdatalen, &l);\n",
"&%s_datalen, &l);\n",
classname(t->tag.tagclass),
is_primitive_type(t->subtype->type) ? "PRIM" : "CONS",
valuename(t->tag.tagclass, t->tag.tagvalue));
valuename(t->tag.tagclass, t->tag.tagvalue),
tmpstr);
if(optional) {
fprintf(codefile,
"if(e) {\n"
@ -442,32 +458,38 @@ decode_type (const char *name, const Type *t, int optional,
}
fprintf (codefile,
"p += l; len -= l; ret += l;\n"
"oldlen = len;\n");
"%s_oldlen = len;\n",
tmpstr);
if(dce_fix)
fprintf (codefile,
"if((dce_fix = _heim_fix_dce(tagdatalen, &len)) < 0)\n"
"if((dce_fix = _heim_fix_dce(%s_datalen, &len)) < 0)\n"
"{ e = ASN1_BAD_FORMAT; %s; }\n",
forwstr);
tmpstr, forwstr);
else
fprintf(codefile,
"if (tagdatalen > len) { e = ASN1_OVERRUN; %s; }\n"
"len = tagdatalen;\n", forwstr);
decode_type (name, t->subtype, 0, forwstr);
"if (%s_datalen > len) { e = ASN1_OVERRUN; %s; }\n"
"len = %s_datalen;\n", tmpstr, forwstr, tmpstr);
asprintf (&tname, "%s_Tag", tmpstr);
if (tname == NULL)
errx(1, "malloc");
decode_type (name, t->subtype, 0, forwstr, tname);
if(dce_fix)
fprintf(codefile,
"if(dce_fix){\n"
"e = der_match_tag_and_length (p, len, "
"(Der_class)0,(Der_type)0, UT_EndOfContent, "
"&tagdatalen, &l);\n"
"&%s_datalen, &l);\n"
"if(e) %s;\np += l; len -= l; ret += l;\n"
"} else \n", forwstr);
"} else \n", tmpstr, forwstr);
fprintf(codefile,
"len = oldlen - tagdatalen;\n");
"len = %s_oldlen - %s_datalen;\n",
tmpstr, tmpstr);
if(optional)
fprintf(codefile,
"}\n");
fprintf(codefile,
"}\n");
free(tname);
break;
}
case TChoice: {
@ -501,7 +523,7 @@ decode_type (const char *name, const Type *t, int optional,
name, m->gen_name);
if (s == NULL)
errx(1, "malloc");
decode_type (s, m->type, m->optional, forwstr);
decode_type (s, m->type, m->optional, forwstr, m->gen_name);
fprintf(codefile,
"(%s)->element = %s;\n",
name, m->label);
@ -573,71 +595,73 @@ decode_type (const char *name, const Type *t, int optional,
void
generate_type_decode (const Symbol *s)
{
int preserve = preserve_type(s->name) ? TRUE : FALSE;
int preserve = preserve_type(s->name) ? TRUE : FALSE;
fprintf (headerfile,
"int "
"decode_%s(const unsigned char *, size_t, %s *, size_t *);\n",
s->gen_name, s->gen_name);
fprintf (headerfile,
"int "
"decode_%s(const unsigned char *, size_t, %s *, size_t *);\n",
s->gen_name, s->gen_name);
fprintf (codefile, "int\n"
"decode_%s(const unsigned char *p,"
" size_t len, %s *data, size_t *size)\n"
"{\n",
s->gen_name, s->gen_name);
fprintf (codefile, "int\n"
"decode_%s(const unsigned char *p,"
" size_t len, %s *data, size_t *size)\n"
"{\n",
s->gen_name, s->gen_name);
switch (s->type->type) {
case TInteger:
case TBoolean:
case TOctetString:
case TOID:
case TGeneralizedTime:
case TGeneralString:
case TUTF8String:
case TPrintableString:
case TIA5String:
case TBMPString:
case TUniversalString:
case TUTCTime:
case TNull:
case TEnumerated:
case TBitString:
case TSequence:
case TSequenceOf:
case TSet:
case TSetOf:
case TTag:
case TType:
case TChoice:
fprintf (codefile,
"size_t ret = 0, reallen;\n"
"size_t l;\n"
"int e;\n");
if (preserve)
fprintf (codefile, "const unsigned char *begin = p;\n");
fprintf (codefile, "\n");
fprintf (codefile, "memset(data, 0, sizeof(*data));\n");
fprintf (codefile, "reallen = 0;\n"); /* hack to avoid `unused variable' */
decode_type ("data", s->type, 0, "goto fail");
if (preserve)
switch (s->type->type) {
case TInteger:
case TBoolean:
case TOctetString:
case TOID:
case TGeneralizedTime:
case TGeneralString:
case TUTF8String:
case TPrintableString:
case TIA5String:
case TBMPString:
case TUniversalString:
case TUTCTime:
case TNull:
case TEnumerated:
case TBitString:
case TSequence:
case TSequenceOf:
case TSet:
case TSetOf:
case TTag:
case TType:
case TChoice:
fprintf (codefile,
"data->_save.data = calloc(1, ret);\n"
"if (data->_save.data == NULL) { e = ENOMEM; goto fail; }\n"
"data->_save.length = ret;\n"
"memcpy(data->_save.data, begin, ret);\n");
fprintf (codefile,
"if(size) *size = ret;\n"
"return 0;\n");
fprintf (codefile,
"fail:\n"
"free_%s(data);\n"
"return e;\n",
s->gen_name);
break;
default:
abort ();
}
fprintf (codefile, "}\n\n");
"size_t ret = 0, reallen;\n"
"size_t l;\n"
"int e;\n");
if (preserve)
fprintf (codefile, "const unsigned char *begin = p;\n");
fprintf (codefile, "\n");
fprintf (codefile, "memset(data, 0, sizeof(*data));\n"); /* hack to avoid `unused variable' */
fprintf (codefile, "reallen = 0;\n");
decode_type ("data", s->type, 0, "goto fail", "Top");
if (preserve)
fprintf (codefile,
"data->_save.data = calloc(1, ret);\n"
"if (data->_save.data == NULL) { \n"
"e = ENOMEM; goto fail; \n"
"}\n"
"data->_save.length = ret;\n"
"memcpy(data->_save.data, begin, ret);\n");
fprintf (codefile,
"if(size) *size = ret;\n"
"return 0;\n");
fprintf (codefile,
"fail:\n"
"free_%s(data);\n"
"return e;\n",
s->gen_name);
break;
default:
abort ();
}
fprintf (codefile, "}\n\n");
}

View File

@ -33,7 +33,7 @@
#include "gen_locl.h"
RCSID("$Id: gen_encode.c,v 1.18 2005/07/13 10:40:23 lha Exp $");
RCSID("$Id: gen_encode.c,v 1.19 2005/08/23 11:52:16 lha Exp $");
static void
encode_primitive (const char *typename, const char *name)
@ -62,7 +62,7 @@ valuename(Der_class class, int value)
static char s[32];
struct {
int value;
char *s;
const char *s;
} *p, values[] = {
#define X(Y) { Y, #Y }
X(UT_BMPString),
@ -105,7 +105,7 @@ valuename(Der_class class, int value)
}
static int
encode_type (const char *name, const Type *t)
encode_type (const char *name, const Type *t, const char *tmpstr)
{
int constructed = 1;
@ -260,10 +260,10 @@ encode_type (const char *name, const Type *t)
else if(m->defval)
gen_compare_defval(s + 1, m->defval);
fprintf (codefile, "{\n");
fprintf (codefile, "size_t oldret = ret;\n");
fprintf (codefile, "size_t %s_oldret = ret;\n", tmpstr);
fprintf (codefile, "ret = 0;\n");
encode_type (s, m->type);
fprintf (codefile, "ret += oldret;\n");
encode_type (s, m->type, m->gen_name);
fprintf (codefile, "ret += %s_oldret;\n", tmpstr);
fprintf (codefile, "}\n");
free (s);
}
@ -333,20 +333,26 @@ encode_type (const char *name, const Type *t)
}
case TSequenceOf: {
char *n;
char *sname;
fprintf (codefile,
"for(i = (%s)->len - 1; i >= 0; --i) {\n"
"size_t oldret = ret;\n"
"size_t %s_for_oldret = ret;\n"
"ret = 0;\n",
name);
name, tmpstr);
asprintf (&n, "&(%s)->val[i]", name);
if (n == NULL)
errx(1, "malloc");
encode_type (n, t->subtype);
asprintf (&sname, "%s_S_Of", tmpstr);
if (sname == NULL)
errx(1, "malloc");
encode_type (n, t->subtype, sname);
fprintf (codefile,
"ret += oldret;\n"
"}\n");
"ret += %s_for_oldret;\n"
"}\n",
tmpstr);
free (n);
free (sname);
break;
}
case TGeneralizedTime:
@ -358,13 +364,19 @@ encode_type (const char *name, const Type *t)
constructed = 0;
break;
case TTag: {
int c = encode_type (name, t->subtype);
char *tname;
int c;
asprintf (&tname, "%s_tag", tmpstr);
if (tname == NULL)
errx(1, "malloc");
c = encode_type (name, t->subtype, tname);
fprintf (codefile,
"e = der_put_length_and_tag (p, len, ret, %s, %s, %s, &l);\n"
"if (e) return e;\np -= l; len -= l; ret += l;\n\n",
classname(t->tag.tagclass),
c ? "CONS" : "PRIM",
valuename(t->tag.tagclass, t->tag.tagvalue));
free (tname);
break;
}
case TChoice:{
@ -396,11 +408,10 @@ encode_type (const char *name, const Type *t)
errx(1, "malloc");
if (m->optional)
fprintf (codefile, "if(%s) {\n", s2);
fprintf (codefile, "size_t oldret;\n");
fprintf (codefile, "oldret = ret;\n");
fprintf (codefile, "size_t %s_oldret = ret;\n", tmpstr);
fprintf (codefile, "ret = 0;\n");
constructed = encode_type (s2, m->type);
fprintf (codefile, "ret += oldret;\n");
constructed = encode_type (s2, m->type, m->gen_name);
fprintf (codefile, "ret += %s_oldret;\n", tmpstr);
if(m->optional)
fprintf (codefile, "}\n");
fprintf(codefile, "break;\n");
@ -469,53 +480,53 @@ encode_type (const char *name, const Type *t)
void
generate_type_encode (const Symbol *s)
{
fprintf (headerfile,
"int "
"encode_%s(unsigned char *, size_t, const %s *, size_t *);\n",
s->gen_name, s->gen_name);
fprintf (headerfile,
"int "
"encode_%s(unsigned char *, size_t, const %s *, size_t *);\n",
s->gen_name, s->gen_name);
fprintf (codefile, "int\n"
"encode_%s(unsigned char *p, size_t len,"
" const %s *data, size_t *size)\n"
"{\n",
s->gen_name, s->gen_name);
fprintf (codefile, "int\n"
"encode_%s(unsigned char *p, size_t len,"
" const %s *data, size_t *size)\n"
"{\n",
s->gen_name, s->gen_name);
switch (s->type->type) {
case TInteger:
case TBoolean:
case TOctetString:
case TGeneralizedTime:
case TGeneralString:
case TUTCTime:
case TUTF8String:
case TPrintableString:
case TIA5String:
case TBMPString:
case TUniversalString:
case TNull:
case TBitString:
case TEnumerated:
case TOID:
case TSequence:
case TSequenceOf:
case TSet:
case TSetOf:
case TTag:
case TType:
case TChoice:
fprintf (codefile,
"size_t ret = 0;\n"
"size_t l;\n"
"int i, e;\n\n");
fprintf(codefile, "i = 0;\n"); /* hack to avoid `unused variable' */
switch (s->type->type) {
case TInteger:
case TBoolean:
case TOctetString:
case TGeneralizedTime:
case TGeneralString:
case TUTCTime:
case TUTF8String:
case TPrintableString:
case TIA5String:
case TBMPString:
case TUniversalString:
case TNull:
case TBitString:
case TEnumerated:
case TOID:
case TSequence:
case TSequenceOf:
case TSet:
case TSetOf:
case TTag:
case TType:
case TChoice:
fprintf (codefile,
"size_t ret = 0;\n"
"size_t l;\n"
"int i, e;\n\n");
fprintf(codefile, "i = 0;\n"); /* hack to avoid `unused variable' */
encode_type("data", s->type);
encode_type("data", s->type, "Top");
fprintf (codefile, "*size = ret;\n"
"return 0;\n");
break;
default:
abort ();
}
fprintf (codefile, "}\n\n");
fprintf (codefile, "*size = ret;\n"
"return 0;\n");
break;
default:
abort ();
}
fprintf (codefile, "}\n\n");
}

View File

@ -33,7 +33,7 @@
#include "gen_locl.h"
RCSID("$Id: gen_length.c,v 1.18 2005/07/19 18:01:59 lha Exp $");
RCSID("$Id: gen_length.c,v 1.19 2005/08/23 11:51:41 lha Exp $");
static void
length_primitive (const char *typename,
@ -59,7 +59,8 @@ length_tag(unsigned int tag)
static int
length_type (const char *name, const Type *t, const char *variable)
length_type (const char *name, const Type *t,
const char *variable, const char *tmpstr)
{
switch (t->type) {
case TType:
@ -158,10 +159,10 @@ length_type (const char *name, const Type *t, const char *variable)
else if(m->defval)
gen_compare_defval(s + 1, m->defval);
fprintf (codefile, "{\n"
"size_t oldret = %s;\n"
"%s = 0;\n", variable, variable);
length_type (s, m->type, "ret");
fprintf (codefile, "ret += oldret;\n");
"size_t %s_oldret = %s;\n"
"%s = 0;\n", tmpstr, variable, variable);
length_type (s, m->type, "ret", m->gen_name);
fprintf (codefile, "ret += %s_oldret;\n", tmpstr);
fprintf (codefile, "}\n");
free (s);
if(t->type == TChoice)
@ -183,29 +184,34 @@ length_type (const char *name, const Type *t, const char *variable)
case TSetOf:
case TSequenceOf: {
char *n;
char *sname;
fprintf (codefile,
"{\n"
"int oldret = %s;\n"
"int %s_oldret = %s;\n"
"int i;\n"
"%s = 0;\n",
variable, variable);
tmpstr, variable, variable);
fprintf (codefile, "for(i = (%s)->len - 1; i >= 0; --i){\n", name);
fprintf (codefile, "int oldret = %s;\n"
"%s = 0;\n", variable, variable);
fprintf (codefile, "int %s_for_oldret = %s;\n"
"%s = 0;\n", tmpstr, variable, variable);
asprintf (&n, "&(%s)->val[i]", name);
if (n == NULL)
errx(1, "malloc");
length_type(n, t->subtype, variable);
fprintf (codefile, "%s += oldret;\n",
variable);
asprintf (&sname, "%s_S_Of", tmpstr);
if (sname == NULL)
errx(1, "malloc");
length_type(n, t->subtype, variable, sname);
fprintf (codefile, "%s += %s_for_oldret;\n",
variable, tmpstr);
fprintf (codefile, "}\n");
fprintf (codefile,
"%s += oldret;\n"
"}\n", variable);
"%s += %s_oldret;\n"
"}\n", variable, tmpstr);
free(n);
free(sname);
break;
}
case TGeneralizedTime:
@ -235,11 +241,17 @@ length_type (const char *name, const Type *t, const char *variable)
case TNull:
fprintf (codefile, "/* NULL */\n");
break;
case TTag:
length_type (name, t->subtype, variable);
case TTag:{
char *tname;
asprintf(&tname, "%s_tag", tmpstr);
if (tname == NULL)
errx(1, "malloc");
length_type (name, t->subtype, variable, tname);
fprintf (codefile, "ret += %lu + length_len (ret);\n",
(unsigned long)length_tag(t->tag.tagvalue));
free(tname);
break;
}
case TOID:
length_primitive ("oid", name, variable);
break;
@ -252,18 +264,18 @@ length_type (const char *name, const Type *t, const char *variable)
void
generate_type_length (const Symbol *s)
{
fprintf (headerfile,
"size_t length_%s(const %s *);\n",
s->gen_name, s->gen_name);
fprintf (codefile,
"size_t\n"
"length_%s(const %s *data)\n"
"{\n"
"size_t ret = 0;\n",
s->gen_name, s->gen_name);
length_type ("data", s->type, "ret");
fprintf (codefile, "return ret;\n}\n\n");
fprintf (headerfile,
"size_t length_%s(const %s *);\n",
s->gen_name, s->gen_name);
fprintf (codefile,
"size_t\n"
"length_%s(const %s *data)\n"
"{\n"
"size_t ret = 0;\n",
s->gen_name, s->gen_name);
length_type ("data", s->type, "ret", "Top");
fprintf (codefile, "return ret;\n}\n\n");
}

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*/
/* $Id: gen_locl.h,v 1.12 2005/07/12 06:27:30 lha Exp $ */
/* $Id: gen_locl.h,v 1.13 2005/08/23 10:48:15 lha Exp $ */
#ifndef __GEN_LOCL_H__
#define __GEN_LOCL_H__
@ -56,26 +56,26 @@
void generate_type (const Symbol *);
void generate_constant (const Symbol *);
void generate_type_encode (const Symbol *s);
void generate_type_decode (const Symbol *s);
void generate_seq_type_decode (const Symbol *s);
void generate_type_free (const Symbol *s);
void generate_type_length (const Symbol *s);
void generate_type_copy (const Symbol *s);
void generate_type_maybe (const Symbol *s);
void generate_type_encode (const Symbol *);
void generate_type_decode (const Symbol *);
void generate_seq_type_decode (const Symbol *);
void generate_type_free (const Symbol *);
void generate_type_length (const Symbol *);
void generate_type_copy (const Symbol *);
void generate_type_maybe (const Symbol *);
void generate_glue (const Type *, const char*);
const char *classname(Der_class);
const char *valuename(Der_class class, int);
const char *valuename(Der_class, int);
void gen_compare_defval(const char *var, struct value *val);
void gen_assign_defval(const char *var, struct value *val);
void gen_compare_defval(const char *, struct value *);
void gen_assign_defval(const char *, struct value *);
void init_generate (const char *filename, const char *basename);
void init_generate (const char *, const char *);
const char *get_filename (void);
void close_generate(void);
void add_import(const char *module);
void add_import(const char *);
int yyparse(void);
int preserve_type(const char *);

View File

@ -1,4 +1,4 @@
-- $Id: k5.asn1,v 1.45 2005/07/13 05:29:49 lha Exp $
-- $Id: k5.asn1,v 1.46 2005/08/22 19:09:25 lha Exp $
KERBEROS5 DEFINITIONS ::=
BEGIN
@ -68,7 +68,11 @@ PADATA-TYPE ::= INTEGER {
KRB5-PADATA-TD-APP-DEFINED-ERROR(106), -- application specific
KRB5-PADATA-TD-REQ-NONCE(107), -- INTEGER
KRB5-PADATA-TD-REQ-SEQ(108), -- INTEGER
KRB5-PADATA-PA-PAC-REQUEST(128) -- jbrezak@exchange.microsoft.com
KRB5-PADATA-PA-PAC-REQUEST(128), -- jbrezak@exchange.microsoft.com
KRB5-PADATA-PK-AS-09-BINDING(132) -- client send this to
-- tell KDC that is supports
-- the asCheckSum in the
-- PK-AS-REP
}
AUTHDATA-TYPE ::= INTEGER {

View File

@ -35,7 +35,7 @@
#include <getarg.h>
#include "lex.h"
RCSID("$Id: main.c,v 1.14 2005/07/12 06:27:34 lha Exp $");
RCSID("$Id: main.c,v 1.15 2005/08/23 10:50:12 lha Exp $");
extern FILE *yyin;
@ -77,8 +77,8 @@ int
main(int argc, char **argv)
{
int ret;
char *file;
char *name = NULL;
const char *file;
const char *name = NULL;
int optidx = 0;
setprogname(argv[0]);

View File

@ -247,11 +247,11 @@
#include "gen_locl.h"
#include "der.h"
RCSID("$Id: parse.y,v 1.24 2005/07/12 06:27:35 lha Exp $");
RCSID("$Id: parse.y,v 1.25 2005/08/23 10:52:31 lha Exp $");
static Type *new_type (Typetype t);
static Type *new_tag(int tagclass, int tagvalue, int tagenv, Type *oldtype);
void yyerror (char *);
void yyerror (const char *);
static struct objid *new_objid(const char *label, int value);
static void add_oid_to_tail(struct objid *, struct objid *);
static void fix_labels(Symbol *s);
@ -2298,7 +2298,7 @@ yyreturn:
void
yyerror (char *s)
yyerror (const char *s)
{
error_message ("%s\n", s);
}

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*/
/* $Id: parse.y,v 1.24 2005/07/12 06:27:35 lha Exp $ */
/* $Id: parse.y,v 1.25 2005/08/23 10:52:31 lha Exp $ */
%{
#ifdef HAVE_CONFIG_H
@ -45,11 +45,11 @@
#include "gen_locl.h"
#include "der.h"
RCSID("$Id: parse.y,v 1.24 2005/07/12 06:27:35 lha Exp $");
RCSID("$Id: parse.y,v 1.25 2005/08/23 10:52:31 lha Exp $");
static Type *new_type (Typetype t);
static Type *new_tag(int tagclass, int tagvalue, int tagenv, Type *oldtype);
void yyerror (char *);
void yyerror (const char *);
static struct objid *new_objid(const char *label, int value);
static void add_oid_to_tail(struct objid *, struct objid *);
static void fix_labels(Symbol *s);
@ -810,7 +810,7 @@ ObjectIdentifierValue: objid
%%
void
yyerror (char *s)
yyerror (const char *s)
{
error_message ("%s\n", s);
}

View File

@ -33,12 +33,12 @@
#include "gssapi_locl.h"
RCSID("$Id: display_status.c,v 1.12 2005/03/16 13:15:03 lha Exp $");
RCSID("$Id: display_status.c,v 1.13 2005/08/23 08:30:55 lha Exp $");
static char *
static const char *
calling_error(OM_uint32 v)
{
static char *msgs[] = {
static const char *msgs[] = {
NULL, /* 0 */
"A required input parameter could not be read.", /* */
"A required output parameter could not be written.", /* */
@ -55,10 +55,10 @@ calling_error(OM_uint32 v)
return msgs[v];
}
static char *
static const char *
routine_error(OM_uint32 v)
{
static char *msgs[] = {
static const char *msgs[] = {
NULL, /* 0 */
"An unsupported mechanism was requested",
"An invalid name was supplied",
@ -91,10 +91,10 @@ routine_error(OM_uint32 v)
return msgs[v];
}
static char *
static const char *
supplementary_error(OM_uint32 v)
{
static char *msgs[] = {
static const char *msgs[] = {
"normal completion",
"continuation call to routine required",
"duplicate per-message token detected",

View File

@ -33,7 +33,7 @@
#include "gssapi_locl.h"
RCSID("$Id: external.c,v 1.6 2003/09/08 15:34:19 lha Exp $");
RCSID("$Id: external.c,v 1.7 2005/08/23 11:59:47 lha Exp $");
/*
* The implementation must reserve static storage for a
@ -48,8 +48,7 @@ RCSID("$Id: external.c,v 1.6 2003/09/08 15:34:19 lha Exp $");
*/
static gss_OID_desc gss_c_nt_user_name_oid_desc =
{10, (void *)"\x2a\x86\x48\x86\xf7\x12"
"\x01\x02\x01\x01"};
{10, rk_UNCONST("\x2a\x86\x48\x86\xf7\x12" "\x01\x02\x01\x01")};
gss_OID GSS_C_NT_USER_NAME = &gss_c_nt_user_name_oid_desc;
@ -66,8 +65,7 @@ gss_OID GSS_C_NT_USER_NAME = &gss_c_nt_user_name_oid_desc;
*/
static gss_OID_desc gss_c_nt_machine_uid_name_oid_desc =
{10, (void *)"\x2a\x86\x48\x86\xf7\x12"
"\x01\x02\x01\x02"};
{10, rk_UNCONST("\x2a\x86\x48\x86\xf7\x12" "\x01\x02\x01\x02")};
gss_OID GSS_C_NT_MACHINE_UID_NAME = &gss_c_nt_machine_uid_name_oid_desc;
@ -84,8 +82,7 @@ gss_OID GSS_C_NT_MACHINE_UID_NAME = &gss_c_nt_machine_uid_name_oid_desc;
*/
static gss_OID_desc gss_c_nt_string_uid_name_oid_desc =
{10, (void *)"\x2a\x86\x48\x86\xf7\x12"
"\x01\x02\x01\x03"};
{10, rk_UNCONST("\x2a\x86\x48\x86\xf7\x12" "\x01\x02\x01\x03")};
gss_OID GSS_C_NT_STRING_UID_NAME = &gss_c_nt_string_uid_name_oid_desc;
@ -108,7 +105,7 @@ gss_OID GSS_C_NT_STRING_UID_NAME = &gss_c_nt_string_uid_name_oid_desc;
*/
static gss_OID_desc gss_c_nt_hostbased_service_x_oid_desc =
{6, (void *)"\x2b\x06\x01\x05\x06\x02"};
{6, rk_UNCONST("\x2b\x06\x01\x05\x06\x02")};
gss_OID GSS_C_NT_HOSTBASED_SERVICE_X = &gss_c_nt_hostbased_service_x_oid_desc;
@ -124,7 +121,7 @@ gss_OID GSS_C_NT_HOSTBASED_SERVICE_X = &gss_c_nt_hostbased_service_x_oid_desc;
* to point to that gss_OID_desc.
*/
static gss_OID_desc gss_c_nt_hostbased_service_oid_desc =
{10, (void *)"\x2a\x86\x48\x86\xf7\x12" "\x01\x02\x01\x04"};
{10, rk_UNCONST("\x2a\x86\x48\x86\xf7\x12" "\x01\x02\x01\x04")};
gss_OID GSS_C_NT_HOSTBASED_SERVICE = &gss_c_nt_hostbased_service_oid_desc;
@ -140,7 +137,7 @@ gss_OID GSS_C_NT_HOSTBASED_SERVICE = &gss_c_nt_hostbased_service_oid_desc;
*/
static gss_OID_desc gss_c_nt_anonymous_oid_desc =
{6, (void *)"\x2b\x06\01\x05\x06\x03"};
{6, rk_UNCONST("\x2b\x06\01\x05\x06\x03")};
gss_OID GSS_C_NT_ANONYMOUS = &gss_c_nt_anonymous_oid_desc;
@ -156,7 +153,7 @@ gss_OID GSS_C_NT_ANONYMOUS = &gss_c_nt_anonymous_oid_desc;
*/
static gss_OID_desc gss_c_nt_export_name_oid_desc =
{6, (void *)"\x2b\x06\x01\x05\x06\x04"};
{6, rk_UNCONST("\x2b\x06\x01\x05\x06\x04") };
gss_OID GSS_C_NT_EXPORT_NAME = &gss_c_nt_export_name_oid_desc;
@ -168,7 +165,7 @@ gss_OID GSS_C_NT_EXPORT_NAME = &gss_c_nt_export_name_oid_desc;
*/
static gss_OID_desc gss_krb5_nt_principal_name_oid_desc =
{10, (void *)"\x2a\x86\x48\x86\xf7\x12\x01\x02\x02\x01"};
{10, rk_UNCONST("\x2a\x86\x48\x86\xf7\x12\x01\x02\x02\x01") };
gss_OID GSS_KRB5_NT_PRINCIPAL_NAME = &gss_krb5_nt_principal_name_oid_desc;
@ -219,12 +216,12 @@ gss_OID GSS_KRB5_NT_STRING_UID_NAME = &gss_c_nt_string_uid_name_oid_desc;
#if 0 /* This is the old OID */
static gss_OID_desc gss_krb5_mechanism_oid_desc =
{5, (void *)"\x2b\x05\x01\x05\x02"};
{5, rk_UNCONST("\x2b\x05\x01\x05\x02")};
#endif
static gss_OID_desc gss_krb5_mechanism_oid_desc =
{9, (void *)"\x2a\x86\x48\x86\xf7\x12\x01\x02\x02"};
{9, rk_UNCONST("\x2a\x86\x48\x86\xf7\x12\x01\x02\x02") };
gss_OID GSS_KRB5_MECHANISM = &gss_krb5_mechanism_oid_desc;
@ -236,7 +233,7 @@ gss_OID GSS_KRB5_MECHANISM = &gss_krb5_mechanism_oid_desc;
*/
static gss_OID_desc gss_spnego_mechanism_oid_desc =
{6, (void *)"\x2b\x06\x01\x05\x05\x02"};
{6, rk_UNCONST("\x2b\x06\x01\x05\x05\x02")};
gss_OID GSS_SPNEGO_MECHANISM = &gss_spnego_mechanism_oid_desc;
@ -254,12 +251,12 @@ gss_OID GSS_SPNEGO_MECHANISM = &gss_spnego_mechanism_oid_desc;
*/
static gss_OID_desc gss_iakerb_proxy_mechanism_oid_desc =
{7, (void *)"\x2b\x06\x01\x05\x05\x0a\x01"};
{7, rk_UNCONST("\x2b\x06\x01\x05\x05\x0a\x01")};
gss_OID GSS_IAKERB_PROXY_MECHANISM = &gss_iakerb_proxy_mechanism_oid_desc;
static gss_OID_desc gss_iakerb_min_msg_mechanism_oid_desc =
{7, (void *)"\x2b\x06\x01\x05\x05\x0a\x02"};
{7, rk_UNCONST("\x2b\x06\x01\x05\x05\x0a\x02") };
gss_OID GSS_IAKERB_MIN_MSG_MECHANISM = &gss_iakerb_min_msg_mechanism_oid_desc;

View File

@ -8,6 +8,317 @@
extern "C" {
#endif
unsigned
HDBFlags2int (HDBFlags /*f*/);
int
copy_Event (
const Event */*from*/,
Event */*to*/);
int
copy_GENERATION (
const GENERATION */*from*/,
GENERATION */*to*/);
int
copy_HDBFlags (
const HDBFlags */*from*/,
HDBFlags */*to*/);
int
copy_HDB_Ext_Aliases (
const HDB_Ext_Aliases */*from*/,
HDB_Ext_Aliases */*to*/);
int
copy_HDB_Ext_Constrained_delegation_acl (
const HDB_Ext_Constrained_delegation_acl */*from*/,
HDB_Ext_Constrained_delegation_acl */*to*/);
int
copy_HDB_Ext_Lan_Manager_OWF (
const HDB_Ext_Lan_Manager_OWF */*from*/,
HDB_Ext_Lan_Manager_OWF */*to*/);
int
copy_HDB_Ext_PKINIT_acl (
const HDB_Ext_PKINIT_acl */*from*/,
HDB_Ext_PKINIT_acl */*to*/);
int
copy_HDB_Ext_PKINIT_certificate (
const HDB_Ext_PKINIT_certificate */*from*/,
HDB_Ext_PKINIT_certificate */*to*/);
int
copy_HDB_Ext_Password (
const HDB_Ext_Password */*from*/,
HDB_Ext_Password */*to*/);
int
copy_HDB_extension (
const HDB_extension */*from*/,
HDB_extension */*to*/);
int
copy_HDB_extensions (
const HDB_extensions */*from*/,
HDB_extensions */*to*/);
int
copy_Key (
const Key */*from*/,
Key */*to*/);
int
copy_Salt (
const Salt */*from*/,
Salt */*to*/);
int
copy_hdb_entry (
const hdb_entry */*from*/,
hdb_entry */*to*/);
int
decode_Event (
const unsigned char */*p*/,
size_t /*len*/,
Event */*data*/,
size_t */*size*/);
int
decode_GENERATION (
const unsigned char */*p*/,
size_t /*len*/,
GENERATION */*data*/,
size_t */*size*/);
int
decode_HDBFlags (
const unsigned char */*p*/,
size_t /*len*/,
HDBFlags */*data*/,
size_t */*size*/);
int
decode_HDB_Ext_Aliases (
const unsigned char */*p*/,
size_t /*len*/,
HDB_Ext_Aliases */*data*/,
size_t */*size*/);
int
decode_HDB_Ext_Constrained_delegation_acl (
const unsigned char */*p*/,
size_t /*len*/,
HDB_Ext_Constrained_delegation_acl */*data*/,
size_t */*size*/);
int
decode_HDB_Ext_Lan_Manager_OWF (
const unsigned char */*p*/,
size_t /*len*/,
HDB_Ext_Lan_Manager_OWF */*data*/,
size_t */*size*/);
int
decode_HDB_Ext_PKINIT_acl (
const unsigned char */*p*/,
size_t /*len*/,
HDB_Ext_PKINIT_acl */*data*/,
size_t */*size*/);
int
decode_HDB_Ext_PKINIT_certificate (
const unsigned char */*p*/,
size_t /*len*/,
HDB_Ext_PKINIT_certificate */*data*/,
size_t */*size*/);
int
decode_HDB_Ext_Password (
const unsigned char */*p*/,
size_t /*len*/,
HDB_Ext_Password */*data*/,
size_t */*size*/);
int
decode_HDB_extension (
const unsigned char */*p*/,
size_t /*len*/,
HDB_extension */*data*/,
size_t */*size*/);
int
decode_HDB_extensions (
const unsigned char */*p*/,
size_t /*len*/,
HDB_extensions */*data*/,
size_t */*size*/);
int
decode_Key (
const unsigned char */*p*/,
size_t /*len*/,
Key */*data*/,
size_t */*size*/);
int
decode_Salt (
const unsigned char */*p*/,
size_t /*len*/,
Salt */*data*/,
size_t */*size*/);
int
decode_hdb_entry (
const unsigned char */*p*/,
size_t /*len*/,
hdb_entry */*data*/,
size_t */*size*/);
int
encode_Event (
unsigned char */*p*/,
size_t /*len*/,
const Event */*data*/,
size_t */*size*/);
int
encode_GENERATION (
unsigned char */*p*/,
size_t /*len*/,
const GENERATION */*data*/,
size_t */*size*/);
int
encode_HDBFlags (
unsigned char */*p*/,
size_t /*len*/,
const HDBFlags */*data*/,
size_t */*size*/);
int
encode_HDB_Ext_Aliases (
unsigned char */*p*/,
size_t /*len*/,
const HDB_Ext_Aliases */*data*/,
size_t */*size*/);
int
encode_HDB_Ext_Constrained_delegation_acl (
unsigned char */*p*/,
size_t /*len*/,
const HDB_Ext_Constrained_delegation_acl */*data*/,
size_t */*size*/);
int
encode_HDB_Ext_Lan_Manager_OWF (
unsigned char */*p*/,
size_t /*len*/,
const HDB_Ext_Lan_Manager_OWF */*data*/,
size_t */*size*/);
int
encode_HDB_Ext_PKINIT_acl (
unsigned char */*p*/,
size_t /*len*/,
const HDB_Ext_PKINIT_acl */*data*/,
size_t */*size*/);
int
encode_HDB_Ext_PKINIT_certificate (
unsigned char */*p*/,
size_t /*len*/,
const HDB_Ext_PKINIT_certificate */*data*/,
size_t */*size*/);
int
encode_HDB_Ext_Password (
unsigned char */*p*/,
size_t /*len*/,
const HDB_Ext_Password */*data*/,
size_t */*size*/);
int
encode_HDB_extension (
unsigned char */*p*/,
size_t /*len*/,
const HDB_extension */*data*/,
size_t */*size*/);
int
encode_HDB_extensions (
unsigned char */*p*/,
size_t /*len*/,
const HDB_extensions */*data*/,
size_t */*size*/);
int
encode_Key (
unsigned char */*p*/,
size_t /*len*/,
const Key */*data*/,
size_t */*size*/);
int
encode_Salt (
unsigned char */*p*/,
size_t /*len*/,
const Salt */*data*/,
size_t */*size*/);
int
encode_hdb_entry (
unsigned char */*p*/,
size_t /*len*/,
const hdb_entry */*data*/,
size_t */*size*/);
void
free_Event (Event */*data*/);
void
free_GENERATION (GENERATION */*data*/);
void
free_HDBFlags (HDBFlags */*data*/);
void
free_HDB_Ext_Aliases (HDB_Ext_Aliases */*data*/);
void
free_HDB_Ext_Constrained_delegation_acl (HDB_Ext_Constrained_delegation_acl */*data*/);
void
free_HDB_Ext_Lan_Manager_OWF (HDB_Ext_Lan_Manager_OWF */*data*/);
void
free_HDB_Ext_PKINIT_acl (HDB_Ext_PKINIT_acl */*data*/);
void
free_HDB_Ext_PKINIT_certificate (HDB_Ext_PKINIT_certificate */*data*/);
void
free_HDB_Ext_Password (HDB_Ext_Password */*data*/);
void
free_HDB_extension (HDB_extension */*data*/);
void
free_HDB_extensions (HDB_extensions */*data*/);
void
free_Key (Key */*data*/);
void
free_Salt (Salt */*data*/);
void
free_hdb_entry (hdb_entry */*data*/);
krb5_error_code
hdb_add_master_key (
krb5_context /*context*/,
@ -297,6 +608,54 @@ hdb_write_master_key (
const char */*filename*/,
hdb_master_key /*mkey*/);
void
initialize_hdb_error_table_r (struct et_list **/*list*/);
HDBFlags
int2HDBFlags (unsigned /*n*/);
size_t
length_Event (const Event */*data*/);
size_t
length_GENERATION (const GENERATION */*data*/);
size_t
length_HDBFlags (const HDBFlags */*data*/);
size_t
length_HDB_Ext_Aliases (const HDB_Ext_Aliases */*data*/);
size_t
length_HDB_Ext_Constrained_delegation_acl (const HDB_Ext_Constrained_delegation_acl */*data*/);
size_t
length_HDB_Ext_Lan_Manager_OWF (const HDB_Ext_Lan_Manager_OWF */*data*/);
size_t
length_HDB_Ext_PKINIT_acl (const HDB_Ext_PKINIT_acl */*data*/);
size_t
length_HDB_Ext_PKINIT_certificate (const HDB_Ext_PKINIT_certificate */*data*/);
size_t
length_HDB_Ext_Password (const HDB_Ext_Password */*data*/);
size_t
length_HDB_extension (const HDB_extension */*data*/);
size_t
length_HDB_extensions (const HDB_extensions */*data*/);
size_t
length_Key (const Key */*data*/);
size_t
length_Salt (const Salt */*data*/);
size_t
length_hdb_entry (const hdb_entry */*data*/);
#ifdef __cplusplus
}
#endif

View File

@ -33,7 +33,7 @@
#include "hdb_locl.h"
RCSID("$Id: hdb.c,v 1.54 2005/05/29 18:12:28 lha Exp $");
RCSID("$Id: hdb.c,v 1.55 2005/08/19 13:07:03 lha Exp $");
#ifdef HAVE_DLFCN_H
#include <dlfcn.h>
@ -174,9 +174,14 @@ hdb_check_db_format(krb5_context context, HDB *db)
unsigned ver;
int foo;
ret = db->hdb_lock(context, db, HDB_RLOCK);
if (ret)
return ret;
tag.data = HDB_DB_FORMAT_ENTRY;
tag.length = strlen(tag.data);
ret = (*db->hdb__get)(context, db, tag, &version);
db->hdb_unlock(context, db);
if(ret)
return ret;
foo = sscanf(version.data, "%u", &ver);
@ -200,12 +205,19 @@ hdb_init_db(krb5_context context, HDB *db)
if(ret != HDB_ERR_NOENTRY)
return ret;
ret = db->hdb_lock(context, db, HDB_WLOCK);
if (ret)
return ret;
tag.data = HDB_DB_FORMAT_ENTRY;
tag.length = strlen(tag.data);
snprintf(ver, sizeof(ver), "%u", HDB_DB_FORMAT);
version.data = ver;
version.length = strlen(version.data) + 1; /* zero terminated */
ret = (*db->hdb__put)(context, db, 0, tag, version);
ret = db->hdb_unlock(context, db);
if (ret)
return ret;
return ret;
}

View File

@ -36,7 +36,7 @@
#define O_BINARY 0
#endif
RCSID("$Id: mkey.c,v 1.20 2005/08/10 08:41:03 lha Exp $");
RCSID("$Id: mkey.c,v 1.21 2005/08/19 13:07:03 lha Exp $");
struct hdb_master_key_data {
krb5_keytab_entry keytab;
@ -486,6 +486,9 @@ hdb_seal_key_mkey(krb5_context context, Key *k, hdb_master_key mkey)
krb5_data res;
hdb_master_key key;
if(k->mkvno != NULL)
return 0;
key = _hdb_find_master_key(k->mkvno, mkey);
if (key == NULL)

View File

@ -34,7 +34,7 @@
#include "krb5_locl.h"
#include <resolve.h>
RCSID("$Id: get_host_realm.c,v 1.34 2005/04/19 18:52:51 lha Exp $");
RCSID("$Id: get_host_realm.c,v 1.35 2005/08/23 08:14:02 lha Exp $");
/* To automagically find the correct realm of a host (without
* [domain_realm] in krb5.conf) add a text record for your domain with
@ -94,30 +94,41 @@ dns_find_realm(krb5_context context,
const char *domain,
krb5_realm **realms)
{
static char *default_labels[] = { "_kerberos", NULL };
static const char *default_labels[] = { "_kerberos", NULL };
char dom[MAXHOSTNAMELEN];
struct dns_reply *r;
char **labels;
const char **labels;
char **config_labels;
int i, ret;
labels = krb5_config_get_strings(context, NULL, "libdefaults",
"dns_lookup_realm_labels", NULL);
if(labels == NULL)
config_labels = krb5_config_get_strings(context, NULL, "libdefaults",
"dns_lookup_realm_labels", NULL);
if(config_labels != NULL)
labels = (const char **)config_labels;
else
labels = default_labels;
if(*domain == '.')
domain++;
for (i = 0; labels[i] != NULL; i++) {
ret = snprintf(dom, sizeof(dom), "%s.%s.", labels[i], domain);
if(ret < 0 || ret >= sizeof(dom))
if(ret < 0 || ret >= sizeof(dom)) {
if (config_labels)
krb5_config_free_strings(config_labels);
return -1;
}
r = dns_lookup(dom, "TXT");
if(r != NULL) {
ret = copy_txt_to_realms (r->head, realms);
dns_free_data(r);
if(ret == 0)
if(ret == 0) {
if (config_labels)
krb5_config_free_strings(config_labels);
return 0;
}
}
}
if (config_labels)
krb5_config_free_strings(config_labels);
return -1;
}

View File

@ -309,6 +309,7 @@ _krb5_pk_rd_pa_reply (
void */*c*/,
krb5_enctype /*etype*/,
unsigned /*nonce*/,
const krb5_data */*req_buffer*/,
PA_DATA */*pa*/,
krb5_keyblock **/*key*/);

View File

@ -20,6 +20,15 @@ extern "C" {
#endif
#endif
void
initialize_heim_error_table_r (struct et_list **/*list*/);
void
initialize_k524_error_table_r (struct et_list **/*list*/);
void
initialize_krb5_error_table_r (struct et_list **/*list*/);
krb5_error_code KRB5_LIB_FUNCTION
krb524_convert_creds_kdc (
krb5_context /*context*/,
@ -2392,7 +2401,7 @@ krb5_prepend_config_files_default (
const char */*filelist*/,
char ***/*pfilenames*/);
krb5_realm*
krb5_realm* KRB5_LIB_FUNCTION
krb5_princ_realm (
krb5_context /*context*/,
krb5_principal /*principal*/);
@ -2418,18 +2427,18 @@ krb5_principal_compare_any_realm (
const char* KRB5_LIB_FUNCTION
krb5_principal_get_comp_string (
krb5_context /*context*/,
krb5_principal /*principal*/,
krb5_const_principal /*principal*/,
unsigned int /*component*/);
const char* KRB5_LIB_FUNCTION
krb5_principal_get_realm (
krb5_context /*context*/,
krb5_principal /*principal*/);
krb5_const_principal /*principal*/);
int KRB5_LIB_FUNCTION
krb5_principal_get_type (
krb5_context /*context*/,
krb5_principal /*principal*/);
krb5_const_principal /*principal*/);
krb5_boolean KRB5_LIB_FUNCTION
krb5_principal_match (
@ -3154,6 +3163,12 @@ krb5_unparse_name (
krb5_const_principal /*principal*/,
char **/*name*/);
krb5_error_code KRB5_LIB_FUNCTION
krb5_unparse_name_always_short (
krb5_context /*context*/,
krb5_const_principal /*principal*/,
char **/*name*/);
krb5_error_code KRB5_LIB_FUNCTION
krb5_unparse_name_fixed (
krb5_context /*context*/,

View File

@ -41,7 +41,7 @@
#include <fnmatch.h>
#include "resolve.h"
RCSID("$Id: principal.c,v 1.90 2005/06/30 01:38:15 lha Exp $");
RCSID("$Id: principal.c,v 1.91 2005/08/23 08:34:40 lha Exp $");
#define princ_num_comp(P) ((P)->name.name_string.len)
#define princ_type(P) ((P)->name.name_type)
@ -69,21 +69,21 @@ krb5_principal_set_type(krb5_context context,
int KRB5_LIB_FUNCTION
krb5_principal_get_type(krb5_context context,
krb5_principal principal)
krb5_const_principal principal)
{
return princ_type(principal);
}
const char* KRB5_LIB_FUNCTION
krb5_principal_get_realm(krb5_context context,
krb5_principal principal)
krb5_const_principal principal)
{
return princ_realm(principal);
}
const char* KRB5_LIB_FUNCTION
krb5_principal_get_comp_string(krb5_context context,
krb5_principal principal,
krb5_const_principal principal,
unsigned int component)
{
if(component >= princ_num_comp(principal))
@ -268,16 +268,6 @@ unparse_name_fixed(krb5_context context,
return ERANGE;
}
/* add realm if different from default realm */
if(short_form) {
krb5_realm r;
krb5_error_code ret;
ret = krb5_get_default_realm(context, &r);
if(ret)
return ret;
if(strcmp(princ_realm(principal), r) != 0)
short_form = 0;
free(r);
}
if(!short_form) {
add_char(name, idx, len, '@');
idx = quote_string(princ_realm(principal), name, idx, len);
@ -296,13 +286,31 @@ krb5_unparse_name_fixed(krb5_context context,
return unparse_name_fixed(context, principal, name, len, FALSE);
}
krb5_error_code KRB5_LIB_FUNCTION
krb5_unparse_name_norealm_fixed(krb5_context context,
krb5_const_principal principal,
char *name,
size_t len)
{
return unparse_name_fixed(context, principal, name, len, TRUE);
}
krb5_error_code KRB5_LIB_FUNCTION
krb5_unparse_name_fixed_short(krb5_context context,
krb5_const_principal principal,
char *name,
size_t len)
{
return unparse_name_fixed(context, principal, name, len, TRUE);
krb5_realm r;
krb5_error_code ret;
krb5_boolean short_form = TRUE;
ret = krb5_get_default_realm(context, &r);
if(ret)
return ret;
if(strcmp(princ_realm(principal), r) != 0)
short_form = 0;
free(r);
return unparse_name_fixed(context, principal, name, len, short_form);
}
static krb5_error_code
@ -355,6 +363,23 @@ krb5_error_code KRB5_LIB_FUNCTION
krb5_unparse_name_short(krb5_context context,
krb5_const_principal principal,
char **name)
{
krb5_realm r;
krb5_error_code ret;
krb5_boolean short_form = TRUE;
ret = krb5_get_default_realm(context, &r);
if(ret)
return ret;
if(strcmp(princ_realm(principal), r) != 0)
short_form = 0;
free(r);
return unparse_name(context, principal, name, short_form);
}
krb5_error_code KRB5_LIB_FUNCTION
krb5_unparse_name_norealm(krb5_context context,
krb5_const_principal principal,
char **name)
{
return unparse_name(context, principal, name, TRUE);
}
@ -372,7 +397,7 @@ krb5_unparse_name_ext(krb5_context context,
#endif
krb5_realm*
krb5_realm* KRB5_LIB_FUNCTION
krb5_princ_realm(krb5_context context,
krb5_principal principal)
{
@ -380,6 +405,7 @@ krb5_princ_realm(krb5_context context,
}
void KRB5_LIB_FUNCTION
krb5_princ_set_realm(krb5_context context,
krb5_principal principal,
@ -764,7 +790,6 @@ krb5_425_conv_principal_ext2(krb5_context context,
}
#else
struct addrinfo hints, *ai;
int ret;
memset (&hints, 0, sizeof(hints));
hints.ai_flags = AI_CANONNAME;

View File

@ -45,7 +45,7 @@
#include <assert.h>
RCSID("$Id: resolve.c,v 1.51 2005/06/16 16:46:16 lha Exp $");
RCSID("$Id: resolve.c,v 1.52 2005/08/22 19:16:21 lha Exp $");
#ifdef _AIX /* AIX have broken res_nsearch() in 5.1 (5.0 also ?) */
#undef HAVE_RES_NSEARCH
@ -534,7 +534,11 @@ dns_lookup_int(const char *domain, int rr_class, int rr_type)
}
if (len < 0) {
#ifdef HAVE_RES_NSEARCH
#ifdef HAVE_RES_NDESTROY
res_ndestroy(&state);
#else
res_nclose(&state);
#endif
#endif
free(reply);
return NULL;

View File

@ -33,7 +33,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
RCSID("$Id: setprogname.c,v 1.3 2005/04/12 11:29:05 lha Exp $");
RCSID("$Id: setprogname.c,v 1.4 2005/08/23 10:19:20 lha Exp $");
#endif
#include "roken.h"
@ -47,12 +47,12 @@ void ROKEN_LIB_FUNCTION
setprogname(const char *argv0)
{
#ifndef HAVE___PROGNAME
char *p;
const char *p;
if(argv0 == NULL)
return;
p = strrchr(argv0, '/');
if(p == NULL)
p = (char *)argv0;
p = argv0;
else
p++;
__progname = p;

View File

@ -33,7 +33,7 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
RCSID("$Id: strpool.c,v 1.1 2005/06/28 22:46:57 lha Exp $");
RCSID("$Id: strpool.c,v 1.2 2005/08/25 14:59:06 lha Exp $");
#endif
#include <stdarg.h>
@ -81,19 +81,18 @@ rk_strpoolprintf(struct rk_strpool *p, const char *fmt, ...)
len = vasprintf(&str, fmt, ap);
va_end(ap);
if (str == NULL) {
printf("vasprintf");
rk_strpoolfree(p);
return NULL;
}
str2 = realloc(p->str, len + p->len + 1);
if (str2 == NULL) {
printf("realloc");
rk_strpoolfree(p);
return NULL;
}
p->str = str2;
memcpy(p->str + p->len, str, len + 1);
p->len += len;
free(str);
return p;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 1998 - 2001 Kungliga Tekniska Högskolan
* Copyright (c) 1998 - 2004 Kungliga Tekniska Högskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@ -33,46 +33,23 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
RCSID("$Id: print_version.c,v 1.9 2005/04/12 11:29:00 lha Exp $");
RCSID("$Id: print_version.c,v 1.9 2005/01/01 14:27:47 lha Exp $");
#endif
#include "roken.h"
#include "print_version.h"
void ROKEN_LIB_FUNCTION
void
print_version(const char *progname)
{
const char *arg[] = VERSIONLIST;
const int num_args = sizeof(arg) / sizeof(arg[0]);
char *msg;
size_t len = 0;
int i;
const char *package_list = VERSIONLIST;
if(progname == NULL)
progname = getprogname();
if(num_args == 0)
msg = "no version information";
else {
for(i = 0; i < num_args; i++) {
if(i > 0)
len += 2;
len += strlen(arg[i]);
}
msg = malloc(len + 1);
if(msg == NULL) {
fprintf(stderr, "%s: out of memory\n", progname);
return;
}
msg[0] = '\0';
for(i = 0; i < num_args; i++) {
if(i > 0)
strcat(msg, ", ");
strcat(msg, arg[i]);
}
}
fprintf(stderr, "%s (%s)\n", progname, msg);
fprintf(stderr, "Copyright (c) 1999 - 2001 Kungliga Tekniska Högskolan\n");
if(num_args != 0)
free(msg);
if(*package_list == '\0')
package_list = "no version information";
fprintf(stderr, "%s (%s)\n", progname, package_list);
fprintf(stderr, "Copyright 1999-2005 Kungliga Tekniska Högskolan\n");
fprintf(stderr, "Send bug-reports to %s\n", PACKAGE_BUGREPORT);
}

View File

@ -330,6 +330,14 @@ NOPROTO = YES
# End SUBSYSTEM HEIMDAL_ROKEN
#######################
#######################
# Start SUBSYSTEM HEIMDAL_VERS
[SUBSYSTEM::HEIMDAL_VERS]
ADD_OBJ_FILES = heimdal/lib/vers/print_version.o
NOPROTO = YES
# End SUBSYSTEM HEIMDAL_VERS
#######################
#######################
# Start SUBSYSTEM HEIMDAL_GLUE
[SUBSYSTEM::HEIMDAL_GLUE]
@ -364,7 +372,6 @@ ADD_OBJ_FILES = \
heimdal/lib/asn1/parse.o \
heimdal/lib/roken/emalloc.o \
heimdal/lib/roken/getarg.o \
heimdal/lib/roken/print_version.o \
heimdal/lib/roken/setprogname.o \
heimdal/lib/roken/strupr.o \
heimdal/lib/roken/getprogname.o \
@ -380,7 +387,7 @@ NOPROTO = YES
#######################
# Start BINARY asn1_compile
[BINARY::asn1_compile]
REQUIRED_SUBSYSTEMS = ASN1_COMPILER LIBREPLACE
REQUIRED_SUBSYSTEMS = ASN1_COMPILER LIBREPLACE HEIMDAL_VERS
# End BINARY asn1_compile
#######################
@ -395,7 +402,6 @@ ADD_OBJ_FILES = \
heimdal/lib/roken/get_window_size.o \
heimdal/lib/roken/getprogname.o \
heimdal/lib/roken/strupr.o \
heimdal/lib/roken/print_version.o \
heimdal/lib/roken/setprogname.o \
heimdal_build/replace.o
NOPROTO = YES
@ -405,7 +411,7 @@ NOPROTO = YES
#######################
# Start BINARY compile_et
[BINARY::compile_et]
REQUIRED_SUBSYSTEMS = COMPILE_ET LIBREPLACE
REQUIRED_SUBSYSTEMS = COMPILE_ET LIBREPLACE HEIMDAL_VERS
# End BINARY compile_et
#######################
@ -454,7 +460,7 @@ heimdal_clean: hdb_asn1_clean spnego_asn1_clean krb5_asn1_clean
NOPROTO = YES
REQUIRED_SUBSYSTEMS = \
HEIMDAL_GSSAPI HEIMDAL_KRB5 \
HEIMDAL_ASN1 HEIMDAL_DES HEIMDAL_ROKEN HEIMDAL_COM_ERR HEIMDAL_GLUE
HEIMDAL_ASN1 HEIMDAL_DES HEIMDAL_ROKEN HEIMDAL_COM_ERR HEIMDAL_VERS HEIMDAL_GLUE
# End SUBSYSTEM HEIMDAL
#######################