2003-05-05 Theodore Ts'o <tytso@mit.edu>
+ * et_c.awk, et_h.awk, com_err.h, com_right.c: Add full Heimdall
+ compatibility.
+
* et_c.awk: Add support for OV-style continuations in compile_et.
(Closes Debian bug #191900).
all:: compile_et
-OBJS= error_message.o et_name.o init_et.o com_err.o
+OBJS= error_message.o et_name.o init_et.o com_err.o com_right.o
SRCS = $(srcdir)/error_message.c $(srcdir)/et_name.c $(srcdir)/init_et.c \
- $(srcdir)/com_err.c
+ $(srcdir)/com_err.c $(srcdir)/com_right.c
HFILES= com_err.h
SHARE_FILES= et_c.awk et_h.awk
init_et.o: $(srcdir)/init_et.c $(srcdir)/com_err.h $(srcdir)/error_table.h
com_err.o: $(srcdir)/com_err.c $(srcdir)/com_err.h $(srcdir)/error_table.h \
$(srcdir)/internal.h
+com_right.o: $(srcdir)/com_right.c $(srcdir)/com_err.h \
+ $(srcdir)/error_table.h
extern errcode_t remove_error_table(const struct error_table * et);
extern void add_to_error_table(struct et_list *new_table);
+/* Provided for Heimdall compatibility */
+extern const char *com_right(struct et_list *list, long code);
+extern void initialize_error_table_r(struct et_list **list,
+ const char **messages,
+ int num_errors,
+ long base);
+extern void free_error_table(struct et_list *et);
#define __COM_ERR_H
#endif /* ! defined(__COM_ERR_H) */
--- /dev/null
+/*
+ * com_right.c -- provide Heimdall / Kerberos4kth com_err interfaces
+ * for backwards compatbility
+ *
+ * Copyright (c) 2003 by Theodore Ts'o
+ *
+ * Taken from lib/com_err/error.c from Kerberos4kth distribution.
+ *
+ * Copyright (c) 1997, 1998, 2001 Kungliga Tekniska Högskolan
+ * (Royal Institute of Technology, Stockholm, Sweden).
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "com_err.h"
+#include "error_table.h"
+
+const char *
+com_right(struct et_list *list, long code)
+{
+ struct et_list *p;
+ for (p = list; p; p = p->next) {
+ if (code >= p->table->base && code < p->table->base + p->table->n_msgs)
+ return p->table->msgs[code - p->table->base];
+ }
+ return NULL;
+}
+
+struct foobar {
+ struct et_list etl;
+ struct error_table tab;
+};
+
+/*
+ * We provide this routine for compatibility with Heimdall generated
+ * foo_err.c files, but we don't use this ourselves for foo_err.c
+ * files generated by our compile_et. This is so our foo_err.c
+ * files can be used with older com_err libraries without running
+ * afoul of dependencies.
+ */
+void
+initialize_error_table_r(struct et_list **list,
+ const char **messages,
+ int num_errors,
+ long base)
+{
+ struct et_list *et, **end;
+ struct error_table *tab;
+ struct foobar *f;
+
+ for (end = list, et = *list; et; end = &et->next, et = et->next)
+ if (et->table->msgs == messages)
+ return;
+ f = malloc(sizeof(*f));
+ if (f == NULL)
+ return;
+ et = &f->etl;
+ et->table = tab = &f->tab;
+ tab->msgs = messages;
+ tab->n_msgs = num_errors;
+ tab->base = base;
+ et->next = NULL;
+ *end = et;
+}
+
+
+void
+free_error_table(struct et_list *et)
+{
+ while(et){
+ struct et_list *p = et;
+ et = et->next;
+ free(p);
+ }
+}
print " */" > outfile
print "" > outfile
+ print "#include <stdlib.h>" > outfile
+ print "" > outfile
print "static const char * const text[] = {" > outfile
table_item_count = 0
}
}
skipone=0
}
-END {
+/^[ \t]*(prefix)[ \t]+[A-Z_0-9]+/ {
+ prefix_str = $2 "_"
+}
+
+/^[ \t]*(index)[ \t]+[A-Z_0-9]+/ {
+ new_idx = $2
+ for (i = table_item_count ; i < new_idx; i++) {
+ printf "\t\"Reserved %s error (%d)\",\n", \
+ table_name, table_item_count++ > outfile
+ }
+}
+END {
print " 0" > outfile
print "};" > outfile
print "" > outfile
print " _et_list = &link;" > outfile
print " }" > outfile
print "}" > outfile
-
-
+ print "" > outfile
+ print "/* For Heimdall compatibility */" > outfile
+ print "void initialize_" table_name "_error_table_r(struct et_list **list)" > outfile
+ print "{" > outfile
+ print " struct et_list *et, **end;" > outfile
+ print "" > outfile
+ print " for (end = list, et = *list; et; end = &et->next, et = et->next)" > outfile
+ print " if (et->table->msgs == text)" > outfile
+ print " return;" > outfile
+ print " et = malloc(sizeof(struct et_list));" > outfile
+ print " if (et == 0)" > outfile
+ print " return;" > outfile
+ print " et->table = &et_" table_name "_error_table;" > outfile
+ print " et->next = 0;" > outfile
+ print " *end = et;" > outfile
+ print "}" > outfile
}
tab_base_high--
}
}
+ prefix_str = ""
+ curr_idx = 0
curr_low = tab_base_low
curr_high = tab_base_high
curr_sign = tab_base_sign
}
/^[ \t]*(error_code|ec)[ \t]+[A-Z_0-9]+,/ {
- tag=substr($2,1,length($2)-1)
+ tag=prefix_str substr($2,1,length($2)-1)
if (curr_high == 0) {
printf "#define %-40s (%dL)\n", tag, \
curr_sign*curr_low > outfile
curr_low > outfile
}
curr_low += curr_sign;
+ curr_idx++;
if (curr_low >= mod_base) {
curr_low -= mod_base;
curr_high++
}
}
+/^[ \t]*(prefix)[ \t]+[A-Z_0-9]+/ {
+ prefix_str = $2 "_"
+}
+
+/^[ \t]*(index)[ \t]+[A-Z_0-9]+/ {
+ new_idx = $2
+ curr_low += curr_sign * (new_idx - curr_idx)
+ curr_idx = new_idx
+ if (curr_low >= mod_base) {
+ curr_low -= mod_base;
+ curr_high++
+ }
+ if (curr_low < 0) {
+ cur_low += mod_base
+ cur_high--
+ }
+}
+
+
END {
print "extern const struct error_table et_" table_name "_error_table;" > outfile
print "extern void initialize_" table_name "_error_table(void);" > outfile
* This file is automatically generated; please do not edit it.
*/
+#include <stdlib.h>
+
static const char * const text[] = {
"New password was found in a dictionary of possible passwords and\ntherefore may be easily guessed. Please choose another password.\nSee the ovpasswd man page for help in choosing a good password.",
0
};
extern struct et_list *_et_list;
-const struct error_table et_kadm5_error_table = { text, 156463126912L, 1 };
+const struct error_table et_ovk_error_table = { text, 43787520L, 1 };
static struct et_list link = { 0, 0 };
-void initialize_kadm5_error_table(void);
+void initialize_ovk_error_table(void);
-void initialize_kadm5_error_table(void) {
+void initialize_ovk_error_table(void) {
if (!link.table) {
link.next = _et_list;
- link.table = &et_kadm5_error_table;
+ link.table = &et_ovk_error_table;
_et_list = &link;
}
}
+
+/* For Heimdall compatibility */
+void initialize_ovk_error_table_r(struct et_list **list)
+{
+ struct et_list *et, **end;
+
+ for (end = list, et = *list; et; end = &et->next, et = et->next)
+ if (et->table->msgs == text)
+ return;
+ et = malloc(sizeof(struct et_list));
+ if (et == 0)
+ return;
+ et->table = &et_ovk_error_table;
+ et->next = 0;
+ *end = et;
+}
- error_table kadm5
+ error_table ovk
error_code CHPASS_UTIL_PASSWORD_IN_DICTIONARY,
"New password was found in a dictionary of possible passwords and\n\
#include <et/com_err.h>
-#define CHPASS_UTIL_PASSWORD_IN_DICTIONARY (156463126912L)
-extern const struct error_table et_kadm5_error_table;
-extern void initialize_kadm5_error_table(void);
-#define ERROR_TABLE_BASE_kadm5 (156463126912L)
+#define CHPASS_UTIL_PASSWORD_IN_DICTIONARY (43787520L)
+extern const struct error_table et_ovk_error_table;
+extern void initialize_ovk_error_table(void);
+#define ERROR_TABLE_BASE_ovk (43787520L)
/* for compatibility with older versions... */
-#define init_kadm5_err_tbl initialize_kadm5_error_table
-#define kadm5_err_base ERROR_TABLE_BASE_kadm5
+#define init_ovk_err_tbl initialize_ovk_error_table
+#define ovk_err_base ERROR_TABLE_BASE_ovk
--- /dev/null
+/*
+ * heimdall.c:
+ * This file is automatically generated; please do not edit it.
+ */
+
+#include <stdlib.h>
+
+static const char * const text[] = {
+ "Kerberos successful",
+ "Kerberos principal expired",
+ "Kerberos service expired",
+ "Kerberos auth expired",
+ "Incorrect kerberos master key version",
+ "Incorrect kerberos master key version",
+ "Incorrect kerberos master key version",
+ "Kerberos error: byte order unknown",
+ "Kerberos principal unknown",
+ "Kerberos principal not unique",
+ "Kerberos principal has null key",
+ "Reserved krb error (11)",
+ "Reserved krb error (12)",
+ "Reserved krb error (13)",
+ "Reserved krb error (14)",
+ "Reserved krb error (15)",
+ "Reserved krb error (16)",
+ "Reserved krb error (17)",
+ "Reserved krb error (18)",
+ "Reserved krb error (19)",
+ "Generic error from Kerberos KDC",
+ "Can't read Kerberos ticket file",
+ "Can't find Kerberos ticket or TGT",
+ "Reserved krb error (23)",
+ "Reserved krb error (24)",
+ "Reserved krb error (25)",
+ "Kerberos TGT Expired",
+ "Reserved krb error (27)",
+ "Reserved krb error (28)",
+ "Reserved krb error (29)",
+ "Reserved krb error (30)",
+ "Kerberos error: Can't decode authenticator",
+ "Kerberos ticket expired",
+ "Kerberos ticket not yet valid",
+ "Kerberos error: Repeated request",
+ "The kerberos ticket isn't for us",
+ "Kerberos request inconsistent",
+ "Kerberos error: delta_t too big",
+ "Kerberos error: incorrect net address",
+ "Kerberos protocol version mismatch",
+ "Kerberos error: invalid msg type",
+ "Kerberos error: message stream modified",
+ "Kerberos error: message out of order",
+ "Kerberos error: unauthorized request",
+ "Reserved krb error (44)",
+ "Reserved krb error (45)",
+ "Reserved krb error (46)",
+ "Reserved krb error (47)",
+ "Reserved krb error (48)",
+ "Reserved krb error (49)",
+ "Reserved krb error (50)",
+ "Kerberos error: current PW is null",
+ "Kerberos error: Incorrect current password",
+ "Kerberos protocol error",
+ "Error returned by Kerberos KDC",
+ "Null Kerberos ticket returned by KDC",
+ "Kerberos error: Retry count exceeded",
+ "Kerberos error: Can't send request",
+ "Reserved krb error (58)",
+ "Reserved krb error (59)",
+ "Reserved krb error (60)",
+ "Kerberos error: not all tickets returned",
+ "Kerberos error: incorrect password",
+ "Kerberos error: Protocol Error",
+ "Reserved krb error (64)",
+ "Reserved krb error (65)",
+ "Reserved krb error (66)",
+ "Reserved krb error (67)",
+ "Reserved krb error (68)",
+ "Reserved krb error (69)",
+ "Other error",
+ "Don't have Kerberos ticket-granting ticket",
+ "Reserved krb error (72)",
+ "Reserved krb error (73)",
+ "Reserved krb error (74)",
+ "Reserved krb error (75)",
+ "No ticket file found",
+ "Couldn't access ticket file",
+ "Couldn't lock ticket file",
+ "Bad ticket file format",
+ "tf_init not called first",
+ "Bad Kerberos name format",
+ 0
+};
+
+struct error_table {
+ char const * const * msgs;
+ long base;
+ int n_msgs;
+};
+struct et_list {
+ struct et_list *next;
+ const struct error_table * table;
+};
+extern struct et_list *_et_list;
+
+const struct error_table et_krb_error_table = { text, 39525376L, 82 };
+
+static struct et_list link = { 0, 0 };
+
+void initialize_krb_error_table(void);
+
+void initialize_krb_error_table(void) {
+ if (!link.table) {
+ link.next = _et_list;
+ link.table = &et_krb_error_table;
+ _et_list = &link;
+ }
+}
+
+/* For Heimdall compatibility */
+void initialize_krb_error_table_r(struct et_list **list)
+{
+ struct et_list *et, **end;
+
+ for (end = list, et = *list; et; end = &et->next, et = et->next)
+ if (et->table->msgs == text)
+ return;
+ et = malloc(sizeof(struct et_list));
+ if (et == 0)
+ return;
+ et->table = &et_krb_error_table;
+ et->next = 0;
+ *end = et;
+}
--- /dev/null
+# Copyright 1987,1988 Massachusetts Institute of Technology
+#
+# For copying and distribution information, see the file
+# "mit-copyright.h".
+#
+# This might look like a com_err file, but is not
+#
+id "$Id: krb_err.et,v 1.7 1998/03/29 14:19:52 bg Exp $"
+
+error_table krb
+
+prefix KRBET
+ec KSUCCESS, "Kerberos successful"
+ec KDC_NAME_EXP, "Kerberos principal expired"
+ec KDC_SERVICE_EXP, "Kerberos service expired"
+ec KDC_AUTH_EXP, "Kerberos auth expired"
+ec KDC_PKT_VER, "Incorrect kerberos master key version"
+ec KDC_P_MKEY_VER, "Incorrect kerberos master key version"
+ec KDC_S_MKEY_VER, "Incorrect kerberos master key version"
+ec KDC_BYTE_ORDER, "Kerberos error: byte order unknown"
+ec KDC_PR_UNKNOWN, "Kerberos principal unknown"
+ec KDC_PR_N_UNIQUE, "Kerberos principal not unique"
+ec KDC_NULL_KEY, "Kerberos principal has null key"
+index 20
+ec KDC_GEN_ERR, "Generic error from Kerberos KDC"
+ec GC_TKFIL, "Can't read Kerberos ticket file"
+ec GC_NOTKT, "Can't find Kerberos ticket or TGT"
+index 26
+ec MK_AP_TGTEXP, "Kerberos TGT Expired"
+index 31
+ec RD_AP_UNDEC, "Kerberos error: Can't decode authenticator"
+ec RD_AP_EXP, "Kerberos ticket expired"
+ec RD_AP_NYV, "Kerberos ticket not yet valid"
+ec RD_AP_REPEAT, "Kerberos error: Repeated request"
+ec RD_AP_NOT_US, "The kerberos ticket isn't for us"
+ec RD_AP_INCON, "Kerberos request inconsistent"
+ec RD_AP_TIME, "Kerberos error: delta_t too big"
+ec RD_AP_BADD, "Kerberos error: incorrect net address"
+ec RD_AP_VERSION, "Kerberos protocol version mismatch"
+ec RD_AP_MSG_TYPE, "Kerberos error: invalid msg type"
+ec RD_AP_MODIFIED, "Kerberos error: message stream modified"
+ec RD_AP_ORDER, "Kerberos error: message out of order"
+ec RD_AP_UNAUTHOR, "Kerberos error: unauthorized request"
+index 51
+ec GT_PW_NULL, "Kerberos error: current PW is null"
+ec GT_PW_BADPW, "Kerberos error: Incorrect current password"
+ec GT_PW_PROT, "Kerberos protocol error"
+ec GT_PW_KDCERR, "Error returned by Kerberos KDC"
+ec GT_PW_NULLTKT, "Null Kerberos ticket returned by KDC"
+ec SKDC_RETRY, "Kerberos error: Retry count exceeded"
+ec SKDC_CANT, "Kerberos error: Can't send request"
+index 61
+ec INTK_W_NOTALL, "Kerberos error: not all tickets returned"
+ec INTK_BADPW, "Kerberos error: incorrect password"
+ec INTK_PROT, "Kerberos error: Protocol Error"
+index 70
+ec INTK_ERR, "Other error"
+ec AD_NOTGT, "Don't have Kerberos ticket-granting ticket"
+index 76
+ec NO_TKT_FIL, "No ticket file found"
+ec TKT_FIL_ACC, "Couldn't access ticket file"
+ec TKT_FIL_LCK, "Couldn't lock ticket file"
+ec TKT_FIL_FMT, "Bad ticket file format"
+ec TKT_FIL_INI, "tf_init not called first"
+ec KNAME_FMT, "Bad Kerberos name format"
--- /dev/null
+/*
+ * heimdall.h:
+ * This file is automatically generated; please do not edit it.
+ */
+
+#include <et/com_err.h>
+
+#define KRBET_KSUCCESS (39525376L)
+#define KRBET_KDC_NAME_EXP (39525377L)
+#define KRBET_KDC_SERVICE_EXP (39525378L)
+#define KRBET_KDC_AUTH_EXP (39525379L)
+#define KRBET_KDC_PKT_VER (39525380L)
+#define KRBET_KDC_P_MKEY_VER (39525381L)
+#define KRBET_KDC_S_MKEY_VER (39525382L)
+#define KRBET_KDC_BYTE_ORDER (39525383L)
+#define KRBET_KDC_PR_UNKNOWN (39525384L)
+#define KRBET_KDC_PR_N_UNIQUE (39525385L)
+#define KRBET_KDC_NULL_KEY (39525386L)
+#define KRBET_KDC_GEN_ERR (39525396L)
+#define KRBET_GC_TKFIL (39525397L)
+#define KRBET_GC_NOTKT (39525398L)
+#define KRBET_MK_AP_TGTEXP (39525402L)
+#define KRBET_RD_AP_UNDEC (39525407L)
+#define KRBET_RD_AP_EXP (39525408L)
+#define KRBET_RD_AP_NYV (39525409L)
+#define KRBET_RD_AP_REPEAT (39525410L)
+#define KRBET_RD_AP_NOT_US (39525411L)
+#define KRBET_RD_AP_INCON (39525412L)
+#define KRBET_RD_AP_TIME (39525413L)
+#define KRBET_RD_AP_BADD (39525414L)
+#define KRBET_RD_AP_VERSION (39525415L)
+#define KRBET_RD_AP_MSG_TYPE (39525416L)
+#define KRBET_RD_AP_MODIFIED (39525417L)
+#define KRBET_RD_AP_ORDER (39525418L)
+#define KRBET_RD_AP_UNAUTHOR (39525419L)
+#define KRBET_GT_PW_NULL (39525427L)
+#define KRBET_GT_PW_BADPW (39525428L)
+#define KRBET_GT_PW_PROT (39525429L)
+#define KRBET_GT_PW_KDCERR (39525430L)
+#define KRBET_GT_PW_NULLTKT (39525431L)
+#define KRBET_SKDC_RETRY (39525432L)
+#define KRBET_SKDC_CANT (39525433L)
+#define KRBET_INTK_W_NOTALL (39525437L)
+#define KRBET_INTK_BADPW (39525438L)
+#define KRBET_INTK_PROT (39525439L)
+#define KRBET_INTK_ERR (39525446L)
+#define KRBET_AD_NOTGT (39525447L)
+#define KRBET_NO_TKT_FIL (39525452L)
+#define KRBET_TKT_FIL_ACC (39525453L)
+#define KRBET_TKT_FIL_LCK (39525454L)
+#define KRBET_TKT_FIL_FMT (39525455L)
+#define KRBET_TKT_FIL_INI (39525456L)
+#define KRBET_KNAME_FMT (39525457L)
+extern const struct error_table et_krb_error_table;
+extern void initialize_krb_error_table(void);
+#define ERROR_TABLE_BASE_krb (39525376L)
+
+/* for compatibility with older versions... */
+#define init_krb_err_tbl initialize_krb_error_table
+#define krb_err_base ERROR_TABLE_BASE_krb
--- /dev/null
+/*
+ * heimdall2.c:
+ * This file is automatically generated; please do not edit it.
+ */
+
+#include <stdlib.h>
+
+static const char * const text[] = {
+ "$Id: kadm_err.et,v 1.5 1998/01/16 23:11:27 joda Exp $",
+ "Cannot fetch local realm",
+ "Unable to fetch credentials",
+ "Bad key supplied",
+ "Can't encrypt data",
+ "Cannot encode/decode authentication info",
+ "Principal attemping change is in wrong realm",
+ "Packet is too large",
+ "Version number is incorrect",
+ "Checksum does not match",
+ "Unsealing private data failed",
+ "Unsupported operation",
+ "Could not find administrating host",
+ "Administrating host name is unknown",
+ "Could not find service name in services database",
+ "Could not create socket",
+ "Could not connect to server",
+ "Could not fetch local socket address",
+ "Could not fetch master key",
+ "Could not verify master key",
+ "Entry already exists in database",
+ "Database store error",
+ "Database read error",
+ "Insufficient access to perform requested operation",
+ "Data is available for return to client",
+ "No such entry in the database",
+ "Memory exhausted",
+ "Could not fetch system hostname",
+ "Could not bind port",
+ "Length mismatch problem",
+ "Illegal use of wildcard",
+ "Database is locked or in use--try again later",
+ "Insecure password rejected",
+ "Cleartext password and DES key did not match",
+ "Invalid principal for change srvtab request",
+ "Attempt do delete immutable principal",
+ "Reserved kadm error (36)",
+ "Reserved kadm error (37)",
+ "Reserved kadm error (38)",
+ "Reserved kadm error (39)",
+ "Reserved kadm error (40)",
+ "Reserved kadm error (41)",
+ "Reserved kadm error (42)",
+ "Reserved kadm error (43)",
+ "Reserved kadm error (44)",
+ "Reserved kadm error (45)",
+ "Reserved kadm error (46)",
+ "Reserved kadm error (47)",
+ "Reserved kadm error (48)",
+ "Reserved kadm error (49)",
+ "Reserved kadm error (50)",
+ "Reserved kadm error (51)",
+ "Reserved kadm error (52)",
+ "Reserved kadm error (53)",
+ "Reserved kadm error (54)",
+ "Reserved kadm error (55)",
+ "Reserved kadm error (56)",
+ "Reserved kadm error (57)",
+ "Reserved kadm error (58)",
+ "Reserved kadm error (59)",
+ "Reserved kadm error (60)",
+ "Reserved kadm error (61)",
+ "Reserved kadm error (62)",
+ "Reserved kadm error (63)",
+ "Null passwords are not allowed",
+ "Password is too short",
+ "Too few character classes in password",
+ "Password is in the password dictionary",
+ 0
+};
+
+struct error_table {
+ char const * const * msgs;
+ long base;
+ int n_msgs;
+};
+struct et_list {
+ struct et_list *next;
+ const struct error_table * table;
+};
+extern struct et_list *_et_list;
+
+const struct error_table et_kadm_error_table = { text, -1783126272L, 68 };
+
+static struct et_list link = { 0, 0 };
+
+void initialize_kadm_error_table(void);
+
+void initialize_kadm_error_table(void) {
+ if (!link.table) {
+ link.next = _et_list;
+ link.table = &et_kadm_error_table;
+ _et_list = &link;
+ }
+}
+
+/* For Heimdall compatibility */
+void initialize_kadm_error_table_r(struct et_list **list)
+{
+ struct et_list *et, **end;
+
+ for (end = list, et = *list; et; end = &et->next, et = et->next)
+ if (et->table->msgs == text)
+ return;
+ et = malloc(sizeof(struct et_list));
+ if (et == 0)
+ return;
+ et->table = &et_kadm_error_table;
+ et->next = 0;
+ *end = et;
+}
--- /dev/null
+# $Id: kadm_err.et,v 1.5 1998/01/16 23:11:27 joda Exp $
+#
+# Copyright 1988 by the Massachusetts Institute of Technology.
+#
+# For copying and distribution information, please see the file
+# <mit-copyright.h>.
+#
+# Kerberos administration server error table
+#
+ et kadm
+
+# KADM_SUCCESS, as all success codes should be, is zero
+
+ec KADM_RCSID, "$Id: kadm_err.et,v 1.5 1998/01/16 23:11:27 joda Exp $"
+# /* Building and unbuilding the packet errors */
+ec KADM_NO_REALM, "Cannot fetch local realm"
+ec KADM_NO_CRED, "Unable to fetch credentials"
+ec KADM_BAD_KEY, "Bad key supplied"
+ec KADM_NO_ENCRYPT, "Can't encrypt data"
+ec KADM_NO_AUTH, "Cannot encode/decode authentication info"
+ec KADM_WRONG_REALM, "Principal attemping change is in wrong realm"
+ec KADM_NO_ROOM, "Packet is too large"
+ec KADM_BAD_VER, "Version number is incorrect"
+ec KADM_BAD_CHK, "Checksum does not match"
+ec KADM_NO_READ, "Unsealing private data failed"
+ec KADM_NO_OPCODE, "Unsupported operation"
+ec KADM_NO_HOST, "Could not find administrating host"
+ec KADM_UNK_HOST, "Administrating host name is unknown"
+ec KADM_NO_SERV, "Could not find service name in services database"
+ec KADM_NO_SOCK, "Could not create socket"
+ec KADM_NO_CONN, "Could not connect to server"
+ec KADM_NO_HERE, "Could not fetch local socket address"
+ec KADM_NO_MAST, "Could not fetch master key"
+ec KADM_NO_VERI, "Could not verify master key"
+
+# /* From the server side routines */
+ec KADM_INUSE, "Entry already exists in database"
+ec KADM_UK_SERROR, "Database store error"
+ec KADM_UK_RERROR, "Database read error"
+ec KADM_UNAUTH, "Insufficient access to perform requested operation"
+# KADM_DATA isn't really an error, but...
+ec KADM_DATA, "Data is available for return to client"
+ec KADM_NOENTRY, "No such entry in the database"
+
+ec KADM_NOMEM, "Memory exhausted"
+ec KADM_NO_HOSTNAME, "Could not fetch system hostname"
+ec KADM_NO_BIND, "Could not bind port"
+ec KADM_LENGTH_ERROR, "Length mismatch problem"
+ec KADM_ILL_WILDCARD, "Illegal use of wildcard"
+
+ec KADM_DB_INUSE, "Database is locked or in use--try again later"
+
+ec KADM_INSECURE_PW, "Insecure password rejected"
+ec KADM_PW_MISMATCH, "Cleartext password and DES key did not match"
+
+ec KADM_NOT_SERV_PRINC, "Invalid principal for change srvtab request"
+ec KADM_IMMUTABLE, "Attempt do delete immutable principal"
+# password quality basically stolen from OV libkadm5
+index 64
+prefix KADM_PASS_Q
+ec NULL, "Null passwords are not allowed"
+ec TOOSHORT, "Password is too short"
+ec CLASS, "Too few character classes in password"
+ec DICT, "Password is in the password dictionary"
+end
--- /dev/null
+/*
+ * heimdall2.h:
+ * This file is automatically generated; please do not edit it.
+ */
+
+#include <et/com_err.h>
+
+#define KADM_RCSID (-1783126272L)
+#define KADM_NO_REALM (-1783126271L)
+#define KADM_NO_CRED (-1783126270L)
+#define KADM_BAD_KEY (-1783126269L)
+#define KADM_NO_ENCRYPT (-1783126268L)
+#define KADM_NO_AUTH (-1783126267L)
+#define KADM_WRONG_REALM (-1783126266L)
+#define KADM_NO_ROOM (-1783126265L)
+#define KADM_BAD_VER (-1783126264L)
+#define KADM_BAD_CHK (-1783126263L)
+#define KADM_NO_READ (-1783126262L)
+#define KADM_NO_OPCODE (-1783126261L)
+#define KADM_NO_HOST (-1783126260L)
+#define KADM_UNK_HOST (-1783126259L)
+#define KADM_NO_SERV (-1783126258L)
+#define KADM_NO_SOCK (-1783126257L)
+#define KADM_NO_CONN (-1783126256L)
+#define KADM_NO_HERE (-1783126255L)
+#define KADM_NO_MAST (-1783126254L)
+#define KADM_NO_VERI (-1783126253L)
+#define KADM_INUSE (-1783126252L)
+#define KADM_UK_SERROR (-1783126251L)
+#define KADM_UK_RERROR (-1783126250L)
+#define KADM_UNAUTH (-1783126249L)
+#define KADM_DATA (-1783126248L)
+#define KADM_NOENTRY (-1783126247L)
+#define KADM_NOMEM (-1783126246L)
+#define KADM_NO_HOSTNAME (-1783126245L)
+#define KADM_NO_BIND (-1783126244L)
+#define KADM_LENGTH_ERROR (-1783126243L)
+#define KADM_ILL_WILDCARD (-1783126242L)
+#define KADM_DB_INUSE (-1783126241L)
+#define KADM_INSECURE_PW (-1783126240L)
+#define KADM_PW_MISMATCH (-1783126239L)
+#define KADM_NOT_SERV_PRINC (-1783126238L)
+#define KADM_IMMUTABLE (-1783126237L)
+#define KADM_PASS_Q_NULL (-1783126208L)
+#define KADM_PASS_Q_TOOSHORT (-1783126207L)
+#define KADM_PASS_Q_CLASS (-1783126206L)
+#define KADM_PASS_Q_DICT (-1783126205L)
+extern const struct error_table et_kadm_error_table;
+extern void initialize_kadm_error_table(void);
+#define ERROR_TABLE_BASE_kadm (-1783126272L)
+
+/* for compatibility with older versions... */
+#define init_kadm_err_tbl initialize_kadm_error_table
+#define kadm_err_base ERROR_TABLE_BASE_kadm
* This file is automatically generated; please do not edit it.
*/
+#include <stdlib.h>
+
static const char * const text[] = {
"Can't read ticket file",
"Can't find ticket or TGT",
_et_list = &link;
}
}
+
+/* For Heimdall compatibility */
+void initialize_krb_error_table_r(struct et_list **list)
+{
+ struct et_list *et, **end;
+
+ for (end = list, et = *list; et; end = &et->next, et = et->next)
+ if (et->table->msgs == text)
+ return;
+ et = malloc(sizeof(struct et_list));
+ if (et == 0)
+ return;
+ et->table = &et_krb_error_table;
+ et->next = 0;
+ *end = et;
+}