From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from krisdoz.my.domain (kristaps@localhost [127.0.0.1]) by krisdoz.my.domain (8.14.3/8.14.3) with ESMTP id p34FjCpL022346 for ; Mon, 4 Apr 2011 11:45:12 -0400 (EDT) Received: (from kristaps@localhost) by krisdoz.my.domain (8.14.3/8.14.3/Submit) id p34FjCnH014685; Mon, 4 Apr 2011 11:45:12 -0400 (EDT) Date: Mon, 4 Apr 2011 11:45:12 -0400 (EDT) Message-Id: <201104041545.p34FjCnH014685@krisdoz.my.domain> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: kristaps@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: Fix possible segfaults in `Lk' -T[x]html handler, which made X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- Fix possible segfaults in `Lk' -T[x]html handler, which made some assumptions about its children. Also remove superfluous reassignment to local variable. Modified Files: -------------- mdocml: Makefile mdoc_html.c Revision Data ------------- Index: mdoc_html.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_html.c,v retrieving revision 1.157 retrieving revision 1.158 diff -Lmdoc_html.c -Lmdoc_html.c -u -p -r1.157 -r1.158 --- mdoc_html.c +++ mdoc_html.c @@ -1603,20 +1603,22 @@ mdoc_sp_pre(MDOC_ARGS) static int mdoc_lk_pre(MDOC_ARGS) { - const struct mdoc_node *nn; - struct htmlpair tag[2]; + struct htmlpair tag[2]; - nn = n->child; + if (NULL == (n = n->child)) + return(0); + + assert(MDOC_TEXT == n->type); PAIR_CLASS_INIT(&tag[0], "link-ext"); - PAIR_HREF_INIT(&tag[1], nn->string); - print_otag(h, TAG_A, 2, tag); + PAIR_HREF_INIT(&tag[1], n->string); - if (NULL == nn || NULL == nn->next) - return(1); + print_otag(h, TAG_A, 2, tag); - for (nn = nn->next; nn; nn = nn->next) - print_text(h, nn->string); + for (n = n->next; n; n = n->next) { + assert(MDOC_TEXT == n->type); + print_text(h, n->string); + } return(0); } Index: Makefile =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/Makefile,v retrieving revision 1.327 retrieving revision 1.328 diff -LMakefile -LMakefile -u -p -r1.327 -r1.328 --- Makefile +++ Makefile @@ -317,7 +317,7 @@ mandoc: $(MANDOC_OBJS) libmandoc.a # You'll need -ldb for Linux. mandoc-db: $(MANDOCDB_OBJS) libmandoc.a - $(CC) -o $@ $(MANDOCDB_OBJS) libmandoc.a + $(CC) -o $@ $(MANDOCDB_OBJS) libmandoc.a -ldb llib-lmandoc.ln: $(MANDOC_LNS) $(LINT) $(LINTFLAGS) -Cmandoc $(MANDOC_LNS) -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv