diff options
author | cinap_lenrek <cinap_lenrek@centraldogma> | 2011-10-10 19:54:15 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@centraldogma> | 2011-10-10 19:54:15 +0200 |
commit | 4ad59914e8a570d869f4e66540578cc3bdbc04eb (patch) | |
tree | 68e0b5ba990ec1dbcc7439a3d7cb323805703d61 /sys/src/cmd/mothra/forms.c | |
parent | 19d38407011bf4b6b16053b699cca8a689bf5808 (diff) |
mothra: fix unicode buffer overflow and spurious select crash, webfs: dont rewrite relative url
Diffstat (limited to 'sys/src/cmd/mothra/forms.c')
-rw-r--r-- | sys/src/cmd/mothra/forms.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/src/cmd/mothra/forms.c b/sys/src/cmd/mothra/forms.c index 2c1e3b22b..9ce604efb 100644 --- a/sys/src/cmd/mothra/forms.c +++ b/sys/src/cmd/mothra/forms.c @@ -225,7 +225,7 @@ void rdform(Hglob *g){ break; case Tag_option: if(g->form==0) goto BadTag; - f=g->form->efields; + if((f=g->form->efields)==0) goto BadTag; o=emallocz(sizeof(Option), 1); for(op=&f->options;*op;op=&(*op)->next); *op=o; @@ -288,6 +288,8 @@ void rdform(Hglob *g){ * Called by rdhtml on seeing a forms-related end tag */ void endform(Hglob *g){ + Field *f; + switch(g->tag){ case Tag_form: g->form=0; @@ -295,8 +297,10 @@ void endform(Hglob *g){ case Tag_select: if(g->form==0) htmlerror(g->name, g->lineno, "</select> not in form, ignored\n"); + else if((f=g->form->efields)==0) + htmlerror(g->name, g->lineno, "spurious </select>\n"); else - pl_htmloutput(g, g->nsp, g->form->efields->name,g->form->efields); + pl_htmloutput(g, g->nsp, f->name, f); break; case Tag_textarea: break; |