tech@mandoc.bsd.lv
 help / color / mirror / Atom feed
From: Ingo Schwarze <schwarze@usta.de>
To: "Anthony J. Bentley" <anthony@anjbe.name>
Cc: tech@mdocml.bsd.lv
Subject: Re: intermittent crash with makewhatisdb -a
Date: Mon, 12 Oct 2015 02:36:20 +0200	[thread overview]
Message-ID: <20151012003620.GK18880@athene.usta.de> (raw)
In-Reply-To: <6493.1444451817@CATHET.us>

Hi Anthony,

Anthony J. Bentley wrote on Fri, Oct 09, 2015 at 10:36:57PM -0600:

> Certain filenames will cause intermittent crashing with makewhatisdb -a.
> For example, on a fresh amd64 OpenBSD -current install, I can do this:
> 
> # touch /usr/share/man/1234567890.1234
> $ makewhatis -an
> Segmentation fault
> 
> backtrace:
> 
> Program received signal SIGSEGV, Segmentation fault.
> strlen () at /usr/src/lib/libc/arch/amd64/string/strlen.S:124
> 124             movq    (%rax),%rdx             /* get bytes to check */
> Current language:  auto; currently asm
> (gdb) bt
> #0  strlen () at /usr/src/lib/libc/arch/amd64/string/strlen.S:124
> #1  0x00000028b921cf1d in *_libc_strdup (
>     str=0x27e803ae7b '' <repeats 200 times>...)
>     at /usr/src/lib/libc/string/strdup.c:44
> #2  0x00000025e0818c79 in mandoc_strdup (ptr=Variable "ptr" is not available.
> ) at mandoc_aux.c:100
> #3  0x00000025e0844a8f in mlink_add (mlink=0x286734e000, st=0x28a5526890)
>     at mandocdb.c:910
> #4  0x00000025e0845611 in treescan () at mandocdb.c:685
> #5  0x00000025e0848caa in mandocdb (argc=0, argv=0x7f7ffffd6c78)
>     at mandocdb.c:515
> #6  0x00000025e082c844 in main (argc=2, argv=0x7f7ffffd6c68) at main.c:142

Fixed with the following patch; thanks for reporting!
  Ingo


Log message:
Clear dform and dsec when exiting a first-level directory in treescan().
Fixes a segfault reported by bentley@.
While here, do some style cleanup in the same function.

Index: mandocdb.c
===================================================================
RCS file: /cvs/src/usr.bin/mandoc/mandocdb.c,v
retrieving revision 1.152
diff -u -p -r1.152 mandocdb.c
--- mandocdb.c	12 Oct 2015 00:07:27 -0000	1.152
+++ mandocdb.c	12 Oct 2015 00:29:45 -0000
@@ -699,13 +699,16 @@ treescan(void)
 			 * If we're not in use_all, enforce it.
 			 */
 			cp = ff->fts_name;
-			if (FTS_DP == ff->fts_info)
+			if (ff->fts_info == FTS_DP) {
+				dform = FORM_NONE;
+				dsec = NULL;
 				break;
+			}
 
 			if (0 == strncmp(cp, "man", 3)) {
 				dform = FORM_SRC;
 				dsec = cp + 3;
 			} else if (0 == strncmp(cp, "cat", 3)) {
 				dform = FORM_CAT;
 				dsec = cp + 3;
 			} else {
--
 To unsubscribe send an email to tech+unsubscribe@mdocml.bsd.lv

      reply	other threads:[~2015-10-12  0:36 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-10  4:36 Anthony J. Bentley
2015-10-12  0:36 ` 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=20151012003620.GK18880@athene.usta.de \
    --to=schwarze@usta.de \
    --cc=anthony@anjbe.name \
    --cc=tech@mdocml.bsd.lv \
    /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).