chiark
/
gitweb
/
~ianmdlvl
/
secnet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
make-secnet-sites: Fix error handling if caller is in wrong group
[secnet.git]
/
pubkeys.fl.pl
diff --git
a/pubkeys.fl.pl
b/pubkeys.fl.pl
index 69cc3c925aee2ab249529d32d631c5cfb4f8f399..da1e4d40ce396e255ff685c181710b531c23f8b8 100755
(executable)
--- a/
pubkeys.fl.pl
+++ b/
pubkeys.fl.pl
@@
-134,6
+134,7
@@
L [ \t]*
S [ \t]+
BASE91S []-~!#-&(-[]+
%x SKIPNL
S [ \t]+
BASE91S []-~!#-&(-[]+
%x SKIPNL
+%x SYNTAXERR
%option yylineno
%option noyywrap
%option yylineno
%option noyywrap
@@
-226,16
+227,16
@@
static struct pubkeyset_context c[1];
!FINAL {
if (c->building->nkeys >= MAX_SIG_KEYS) DOSKIP("too many public keys");
struct sigpubkey_if *pubkey;
!FINAL {
if (c->building->nkeys >= MAX_SIG_KEYS) DOSKIP("too many public keys");
struct sigpubkey_if *pubkey;
+ closure_t *cl;
bool_t ok=c->scheme->loadpub(c->scheme,c->data_buf,
bool_t ok=c->scheme->loadpub(c->scheme,c->data_buf,
- &pubkey,c->log,c->loc);
+ &pubkey,
&cl,
c->log,c->loc);
if (!ok) break;
if (!ok) break;
- memcpy(c->building->keys[c->building->nkeys].id.b,
- c->grpid,
- GRPIDSZ);
+ struct peer_pubkey *fill=&c->building->keys[c->building->nkeys];
+ memcpy(fill->id.b,c->grpid,GRPIDSZ);
assert(ALGIDSZ==1); /* otherwise need htons or htonl or something */
assert(ALGIDSZ==1); /* otherwise need htons or htonl or something */
- c->building->keys[c->building->nkeys].id.b[GRPIDSZ]=
-
c->scheme->algid
;
- c->building->
keys[c->building->nkeys++].pubkey=pubkey
;
+ fill->id.b[GRPIDSZ]=c->scheme->algid;
+
fill->pubkey=pubkey
;
+ c->building->
nkeys++
;
!}
!KEYWORD serial
!}
!KEYWORD serial
@@
-267,7
+268,14
@@
static struct pubkeyset_context c[1];
<INITIAL><<EOF>> { return 0; }
<INITIAL><<EOF>> { return 0; }
-<*>. { FAIL("syntax error"); }
+<*>. {
+ yymore();
+ BEGIN(SYNTAXERR);
+}
+<SYNTAXERR>.* {
+ slilog(LI,M_DEBUG,"pubkeys syntax error at `%s'", yytext);
+ FAIL("syntax error");
+}
<*>\n { FAIL("syntax error - unexpected newline"); }
<<EOF>> { FAIL("syntax error - unexpected eof"); }
<*>\n { FAIL("syntax error - unexpected newline"); }
<<EOF>> { FAIL("syntax error - unexpected eof"); }
@@
-303,10
+311,6
@@
keyset_load(const char *path, struct buffer_if *data_buf,
int r=pkyylex();
if (r) goto err_bad;
int r=pkyylex();
if (r) goto err_bad;
- if (!c->had_serial) {
- slilog(LI,M_ERR,"missing serial number in %s",path);
- goto err_bad;
- }
if (!c->building->nkeys) {
slilog(LI,M_ERR,"no useable keys in %s",path);
goto err_bad;
if (!c->building->nkeys) {
slilog(LI,M_ERR,"no useable keys in %s",path);
goto err_bad;