X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/8c0e800f0d7b8254dd13f7bb7e183bac4b54ae34..025c5f4aa5ffbf8948482a4233318db81c2df5d2:/key-attr.c diff --git a/key-attr.c b/key-attr.c index d4f2e05..27f4490 100644 --- a/key-attr.c +++ b/key-attr.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: key-attr.c,v 1.3 2001/06/22 19:39:43 mdw Exp $ + * $Id$ * * Key attribute manipulation * @@ -27,20 +27,6 @@ * MA 02111-1307, USA. */ -/*----- Revision history --------------------------------------------------* - * - * $Log: key-attr.c,v $ - * Revision 1.3 2001/06/22 19:39:43 mdw - * Allow tagging if the tag is owned by a deleted key. - * - * Revision 1.2 2000/02/12 18:21:02 mdw - * Overhaul of key management (again). - * - * Revision 1.1 1999/12/22 15:47:48 mdw - * Major key-management revision. - * - */ - /*----- Header files ------------------------------------------------------*/ #include @@ -67,7 +53,7 @@ int key_chkident(const char *p) { - if (!p || !*p) + if (!p || !*p || strlen(p) > 255) return (-1); while (*p) { if (*p == ':' || *p == '.' || isspace((unsigned char)*p)) @@ -176,14 +162,16 @@ int key_putattr(key_file *f, key *k, const char *n, const char *v) if (!(f->f & KF_WRITE)) return (KERR_READONLY); + if (strlen(n) > 255) + return (KERR_BADATTR); if (v) { a = sym_find(&k->a, n, -1, sizeof(*a), &found); if (found) - free(a->p); + xfree(a->p); a->p = xstrdup(v); } else if ((a = sym_find(&k->a, n, -1, 0, 0)) != 0) { - free(a->p); + xfree(a->p); sym_remove(&k->a, a); } @@ -209,7 +197,7 @@ int key_setcomment(key_file *f, key *k, const char *c) if (key_chkcomment(c)) return (KERR_BADCOMMENT); if (k->c) - free(k->c); + xfree(k->c); if (c) k->c = xstrdup(c); else @@ -263,7 +251,7 @@ int key_settag(key_file *f, key *k, const char *tag) kr = sym_find(&f->bytag, k->tag, -1, 0, 0); assert(((void)"No bytag link", kr)); sym_remove(&f->bytag, kr); - free(k->tag); + xfree(k->tag); } /* --- Done --- */