GNU bug report logs - #19784
build fails on make-prime-list when asan is enabled

Previous Next

Package: coreutils;

Reported by: Yury Usishchev <y.usishchev <at> samsung.com>

Date: Thu, 5 Feb 2015 16:53:02 UTC

Severity: normal

Done: Pádraig Brady <P <at> draigBrady.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Pádraig Brady <P <at> draigBrady.com>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#19784: closed (build fails on make-prime-list when asan is
 enabled)
Date: Thu, 05 Feb 2015 18:07:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Thu, 05 Feb 2015 18:06:34 +0000
with message-id <54D3B12A.7030900 <at> draigBrady.com>
and subject line Re: bug#19784: build fails on make-prime-list when asan is enabled
has caused the debbugs.gnu.org bug report #19784,
regarding build fails on make-prime-list when asan is enabled
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
19784: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19784
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Yury Usishchev <y.usishchev <at> samsung.com>
To: bug-coreutils <at> gnu.org
Cc: Vyacheslav Barinov <v.barinov <at> samsung.com>,
 박찬호 <chanho61.park <at> samsung.com>
Subject: build fails on make-prime-list when asan is enabled
Date: Thu, 05 Feb 2015 18:21:06 +0300
[Message part 3 (text/plain, inline)]
Hello!

We tried to build coreutils with address sanitizer enabled and 
encountered an error:

  GEN      src/primes.h
==12657== ERROR: AddressSanitizer: heap-buffer-overflow

This can be reproduced on git master using gcc-4.8 or gcc-4.9 by
git clone
export CFLAGS="-fsanitize=address"
./bootstrap
./configure
make

and is caused by line
src/make-prime-list.c:214:      while (i < size && sieve[++i] == 0)

When 'i' reaches 'size-1' it gets incremented and then 
(unallocated)memory is accessed.

I attached patch that can fix this issue.

-- 
BR,
Yury Usishchev

[asan_prime_fix.diff (text/x-diff, attachment)]
[Message part 5 (message/rfc822, inline)]
From: Pádraig Brady <P <at> draigBrady.com>
To: Yury Usishchev <y.usishchev <at> samsung.com>, 19784-done <at> debbugs.gnu.org
Cc: Vyacheslav Barinov <v.barinov <at> samsung.com>,
 박찬호 <chanho61.park <at> samsung.com>
Subject: Re: bug#19784: build fails on make-prime-list when asan is enabled
Date: Thu, 05 Feb 2015 18:06:34 +0000
On 05/02/15 15:21, Yury Usishchev wrote:
> Hello!
> 
> We tried to build coreutils with address sanitizer enabled and 
> encountered an error:
> 
>    GEN      src/primes.h
> ==12657== ERROR: AddressSanitizer: heap-buffer-overflow
> 
> This can be reproduced on git master using gcc-4.8 or gcc-4.9 by
> git clone
> export CFLAGS="-fsanitize=address"
> ./bootstrap
> ./configure
> make
> 
> and is caused by line
> src/make-prime-list.c:214:      while (i < size && sieve[++i] == 0)
> 
> When 'i' reaches 'size-1' it gets incremented and then 
> (unallocated)memory is accessed.
> 
> I attached patch that can fix this issue.

Oh nice one. That was not rerun when I ran my checks.
The released tools (still) pass with -fsanitize=address.

How about this fix instead?  I'll push in your name if
you're ok with it.

diff --git a/src/make-prime-list.c b/src/make-prime-list.c
index 68c972a..69b91e8 100644
--- a/src/make-prime-list.c
+++ b/src/make-prime-list.c
@@ -211,7 +211,7 @@ main (int argc, char **argv)
       for (j = (p*p - 3)/2; j < size; j+= p)
         sieve[j] = 0;

-      while (i < size && sieve[++i] == 0)
+      while (++i < size && sieve[i] == 0)
         ;
     }



This bug report was last modified 10 years and 169 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.