Subject: bug#7082: closed (Re: bug#7082: 24.0.50; Bug in src/doc.c (Fsnarf_documentation))

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 21 Sep 2010 19:35:02 +0000

Your bug report

#7082: 24.0.50; Bug in src/doc.c (Fsnarf_documentation)

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
7082: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7082
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#7082: 24.0.50; Bug in src/doc.c (Fsnarf_documentation)
From: Andreas Schwab <[email-masked]>
To: Ari Roponen <[email-masked]>
Cc: [email-masked]
Date: Tue, 21 Sep 2010 21:37:29 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Ari Roponen <[email-masked]> writes:

> 2010-09-21  Ari Roponen  <[email-masked]>  (tiny change)
>
> 	* doc.c (Fsnarf_documentation): Use memmove instead of memcpy as
> 	the regions may overlap.

Thanks, installed.

Andreas.

-- 
Andreas Schwab, [email-masked]
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

Subject: 24.0.50; Bug in src/doc.c (Fsnarf_documentation)
From: Ari Roponen <[email-masked]>
To: [email-masked]
Date: Tue, 21 Sep 2010 17:39:31 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

recently compiling Emacs has not worked for me. The compilation always
aborts with this error:

  Loading emacs-lisp/float-sup...
  Loading vc/vc-hooks...
  Loading vc/ediff-hook...
  Loading tooltip...
  Finding pointers to doc strings...
  /bin/sh: line 8: 10391 Segmentation fault      (core dumped) LC_ALL=C `/bin/pwd`/temacs -batch -l loadup dump
  make[1]: *** [emacs] Error 1
  make[1]: Leaving directory `/usr/local/repos/emacs.git/src'
  make: *** [src] Error 2

After some debugging, I may have found the cause. I added an assert to
Fsnarf_documentation in src/doc.c just before the memcpy and it failed:

  Assertion `buf + filled < end' failed.

This means we should use memmove instead, as it can handle overlapping
regions properly.

2010-09-21  Ari Roponen  <[email-masked]>  (tiny change)

	* doc.c (Fsnarf_documentation): Use memmove instead of memcpy as
	the regions may overlap.

diff --git a/src/doc.c b/src/doc.c
index f8ab9d0..36f7c0e 100644
--- a/src/doc.c
+++ b/src/doc.c
@@ -678,7 +678,7 @@ the same file name is found in the `doc-directory'.  */)
 	}
       pos += end - buf;
       filled -= end - buf;
-      memcpy (buf, end, filled);
+      memmove (buf, end, filled);
     }
   emacs_close (fd);
   return Qnil;

In GNU Emacs 24.0.50.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.90.5)
 of 2010-09-21 on arirop
Windowing system distributor `Fedora Project', version 11.0.10899905
configured using `configure  '--with-x-toolkit=gtk3' '--with-imagemagick''

-- 
Ari Roponen