From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from krisdoz.my.domain (schwarze@localhost [127.0.0.1]) by krisdoz.my.domain (8.14.5/8.14.5) with ESMTP id s3KKmspv021956 for ; Sun, 20 Apr 2014 16:48:54 -0400 (EDT) Received: (from schwarze@localhost) by krisdoz.my.domain (8.14.5/8.14.3/Submit) id s3KKmrE2002624; Sun, 20 Apr 2014 16:48:53 -0400 (EDT) Date: Sun, 20 Apr 2014 16:48:53 -0400 (EDT) Message-Id: <201404202048.s3KKmrE2002624@krisdoz.my.domain> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: schwarze@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: strlen+malloc+snprintf is error prone; rewrite post_lb() to use X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- strlen+malloc+snprintf is error prone; rewrite post_lb() to use asprintf(3) instead Modified Files: -------------- mdocml: mdoc_validate.c Revision Data ------------- Index: mdoc_validate.c =================================================================== RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_validate.c,v retrieving revision 1.211 retrieving revision 1.212 diff -Lmdoc_validate.c -Lmdoc_validate.c -u -p -r1.211 -r1.212 --- mdoc_validate.c +++ mdoc_validate.c @@ -1044,34 +1044,25 @@ post_bf(POST_ARGS) static int post_lb(POST_ARGS) { - const char *p; - char *buf; - size_t sz; + struct mdoc_node *n; + const char *stdlibname; + char *libname; check_count(mdoc, MDOC_ELEM, CHECK_WARN, CHECK_EQ, 1); - assert(mdoc->last->child); - assert(MDOC_TEXT == mdoc->last->child->type); + n = mdoc->last->child; - p = mdoc_a2lib(mdoc->last->child->string); + assert(n); + assert(MDOC_TEXT == n->type); - /* If lookup ok, replace with table value. */ + if (NULL == (stdlibname = mdoc_a2lib(n->string))) + mandoc_asprintf(&libname, + "library \\(lq%s\\(rq", n->string); + else + libname = mandoc_strdup(stdlibname); - if (p) { - free(mdoc->last->child->string); - mdoc->last->child->string = mandoc_strdup(p); - return(1); - } - - /* If not, use "library ``xxxx''. */ - - sz = strlen(mdoc->last->child->string) + 2 + - strlen("\\(lqlibrary\\(rq"); - buf = mandoc_malloc(sz); - snprintf(buf, sz, "library \\(lq%s\\(rq", - mdoc->last->child->string); - free(mdoc->last->child->string); - mdoc->last->child->string = buf; + free(n->string); + n->string = libname; return(1); } -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv