From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from danbala.ifoer.tuwien.ac.at (danbala.ifoer.tuwien.ac.at [128.130.168.64]) by krisdoz.my.domain (8.14.5/8.14.5) with ESMTP id rBA9QjHN019923 for ; Tue, 10 Dec 2013 04:26:45 -0500 (EST) Received: by danbala.ifoer.tuwien.ac.at (Postfix, from userid 116) id 285D4390355; Tue, 10 Dec 2013 10:26:43 +0100 (CET) Date: Tue, 10 Dec 2013 10:26:43 +0100 From: Thomas Klausner To: discuss@mdocml.bsd.lv Subject: NetBSD PR bin/48438: mandoc(1) fails to handle nested double quote correctly. Message-ID: <20131210092643.GA25354@danbala.tuwien.ac.at> X-Mailinglist: mdocml-discuss Reply-To: discuss@mdocml.bsd.lv MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline FYI: A bug report filed against the mandoc in NetBSD. Thomas ----- 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); ----- End forwarded message ----- -- To unsubscribe send an email to discuss+unsubscribe@mdocml.bsd.lv