From: Ingo Schwarze <schwarze@usta.de>
To: discuss@mdocml.bsd.lv
Cc: Thomas Klausner <wiz@NetBSD.org>
Subject: Re: NetBSD PR bin/48438: mandoc(1) fails to handle nested double quote correctly.
Date: Mon, 16 Dec 2013 01:23:43 +0100 [thread overview]
Message-ID: <20131216002343.GD30435@iris.usta.de> (raw)
In-Reply-To: <20131210092643.GA25354@danbala.tuwien.ac.at>
Hi Thomas,
Thomas Klausner wrote on Tue, Dec 10, 2013 at 10:26:43AM +0100:
> FYI: A bug report filed against the mandoc in NetBSD.
> Thomas
I just fixed this in OpenBSD and bsd.lv, with minimal tweaking to make
sure the quoted literal is always NUL-terminated.
Many thanks to Enami-san for the excellent patch elegantly solving
a long-standing problem and to wiz@ for forwarding it here!
Yours,
Ingo
> ----- Forwarded message from tsugutomo.enami@jp.sony.com -----
>
> Date: Tue, 10 Dec 2013 08:45:00 +0000 (UTC)
> From: tsugutomo.enami@jp.sony.com
> To: gnats-admin@netbsd.org, netbsd-bugs@netbsd.org
> Cc:
> Subject: bin/48438: mandoc(1) fails to handle nested double quote correctly.
>
> >Number: 48438
> >Category: bin
> >Synopsis: mandoc(1) fails to handle nested double quote correctly.
> >Confidential: no
> >Severity: non-critical
> >Priority: medium
> >Responsible: bin-bug-people
> >State: open
> >Class: sw-bug
> >Submitter-Id: net
> >Arrival-Date: Tue Dec 10 08:45:00 +0000 2013
> >Originator: enami tsugutomo
> >Release: NetBSD 6.1_STABLE
> >Organization:
> >Environment:
> System: NetBSD sigtrap.sm.sony.co.jp 6.1_STABLE NetBSD 6.1_STABLE (GENERIC) #44: Mon Oct 21 17:13:31 JST 2013 enami@sigtrap.sm.sony.co.jp:/home/enami/src/netbsd-6/obj.amd64/sys/arch/amd64/compile/GENERIC amd64
> Architecture: x86_64
> Machine: amd64
> >Description:
> mandoc(1) fails to handle nested double quote correctly.
>
> >How-To-Repeat:
>
> % cd /usr/src
> % for c in 'nroff -mandoc' mandoc; do $c usr.bin/jot/jot.1; done | grep grep
> grep `jot -s "" -b . 80`
> grep `jot -s """" -b . 80`
> %
>
> The former is correct output by nroff -mandoc and the latter is incorrect
> output by mandoc command.
>
> >Fix:
>
> Skip double qoute inside double quote like mandoc_getarg() does.
>
> Index: dist/mdoc_argv.c
> ===================================================================
> RCS file: /cvsroot/src/external/bsd/mdocml/dist/mdoc_argv.c,v
> retrieving revision 1.4
> diff -u -r1.4 mdoc_argv.c
> --- dist/mdoc_argv.c 3 Apr 2013 14:50:26 -0000 1.4
> +++ dist/mdoc_argv.c 10 Dec 2013 08:39:42 -0000
> @@ -550,6 +550,7 @@
> */
>
> if (MDOC_PHRASELIT & m->flags || '\"' == buf[*pos]) {
> + int pairs = 0;
> if ( ! (MDOC_PHRASELIT & m->flags))
> *v = &buf[++(*pos)];
>
> @@ -557,11 +558,14 @@
> m->flags |= MDOC_PHRASELIT;
>
> for ( ; buf[*pos]; (*pos)++) {
> + if (pairs)
> + buf[*pos - pairs] = buf[*pos];
> if ('\"' != buf[*pos])
> continue;
> if ('\"' != buf[*pos + 1])
> break;
> (*pos)++;
> + pairs++;
> }
>
> if ('\0' == buf[*pos]) {
> @@ -572,7 +576,7 @@
> }
>
> m->flags &= ~MDOC_PHRASELIT;
> - buf[(*pos)++] = '\0';
> + buf[(*pos)++ - pairs] = '\0';
>
> if ('\0' == buf[*pos])
> return(ARGS_QWORD);
--
To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv
prev parent reply other threads:[~2013-12-16 0:23 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-10 9:26 Thomas Klausner
2013-12-10 15:09 ` Anthony J. Bentley
2013-12-16 0:23 ` Ingo Schwarze [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20131216002343.GD30435@iris.usta.de \
--to=schwarze@usta.de \
--cc=discuss@mdocml.bsd.lv \
--cc=wiz@NetBSD.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).