~mdw
/
catacomb
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New function to decide whether a share is already inserted.
[catacomb]
/
key-attr.c
diff --git
a/key-attr.c
b/key-attr.c
index
3737a5d
..
27f4490
100644
(file)
--- a/
key-attr.c
+++ b/
key-attr.c
@@
-1,6
+1,6
@@
/* -*-c-*-
*
/* -*-c-*-
*
- * $Id
: key-attr.c,v 1.1 1999/12/22 15:47:48 mdw Exp
$
+ * $Id$
*
* Key attribute manipulation
*
*
* Key attribute manipulation
*
@@
-27,14
+27,6
@@
* MA 02111-1307, USA.
*/
* MA 02111-1307, USA.
*/
-/*----- Revision history --------------------------------------------------*
- *
- * $Log: key-attr.c,v $
- * Revision 1.1 1999/12/22 15:47:48 mdw
- * Major key-management revision.
- *
- */
-
/*----- Header files ------------------------------------------------------*/
#include <ctype.h>
/*----- Header files ------------------------------------------------------*/
#include <ctype.h>
@@
-43,7
+35,7
@@
#include <string.h>
#include <time.h>
#include <string.h>
#include <time.h>
-#include <mLib/
alloc
.h>
+#include <mLib/
dstr
.h>
#include <mLib/sym.h>
#include "key.h"
#include <mLib/sym.h>
#include "key.h"
@@
-61,7
+53,7
@@
int key_chkident(const char *p)
{
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))
return (-1);
while (*p) {
if (*p == ':' || *p == '.' || isspace((unsigned char)*p))
@@
-170,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 (!(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)
if (v) {
a = sym_find(&k->a, n, -1, sizeof(*a), &found);
if (found)
- free(a->p);
+
x
free(a->p);
a->p = xstrdup(v);
} else if ((a = sym_find(&k->a, n, -1, 0, 0)) != 0) {
a->p = xstrdup(v);
} else if ((a = sym_find(&k->a, n, -1, 0, 0)) != 0) {
- free(a->p);
+
x
free(a->p);
sym_remove(&k->a, a);
}
sym_remove(&k->a, a);
}
@@
-203,7
+197,7
@@
int key_setcomment(key_file *f, key *k, const char *c)
if (key_chkcomment(c))
return (KERR_BADCOMMENT);
if (k->c)
if (key_chkcomment(c))
return (KERR_BADCOMMENT);
if (k->c)
- free(k->c);
+
x
free(k->c);
if (c)
k->c = xstrdup(c);
else
if (c)
k->c = xstrdup(c);
else
@@
-246,7
+240,7
@@
int key_settag(key_file *f, key *k, const char *tag)
if (tag) {
kr = sym_find(&f->bytag, tag, -1, sizeof(*kr), &found);
if (tag) {
kr = sym_find(&f->bytag, tag, -1, sizeof(*kr), &found);
- if (found)
+ if (found
&& !KEY_EXPIRED(time(0), kr->k->del)
)
return (KERR_DUPTAG);
kr->k = k;
}
return (KERR_DUPTAG);
kr->k = k;
}
@@
-257,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);
kr = sym_find(&f->bytag, k->tag, -1, 0, 0);
assert(((void)"No bytag link", kr));
sym_remove(&f->bytag, kr);
- free(k->tag);
+
x
free(k->tag);
}
/* --- Done --- */
}
/* --- Done --- */