/* -*-c-*-
*
- * $Id: key-attr.c,v 1.3 2001/06/22 19:39:43 mdw Exp $
+ * $Id$
*
* Key attribute manipulation
*
* 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 <ctype.h>
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))
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);
}
if (key_chkcomment(c))
return (KERR_BADCOMMENT);
if (k->c)
- free(k->c);
+ xfree(k->c);
if (c)
k->c = xstrdup(c);
else
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 --- */