On Sun, 3 Jan 2016 18:12:47 +0100
Branko Čibej <br...@apache.org> wrote:

> GCC (or any other compiler) may do a lot of things, but it's not
> allowed to change the way APR pool allocation works. We're not using
> malloc(); we're using apr_palloc() & co.

Okay, I think we have a misunderstanding here.

The error I encountered is not by code allocated by apr_palloc. It
actually comes from this line in notify.c:
  SVN_ERR(svn_dirent_get_absolute(&nb->path_prefix, "", pool));

The memory that is read out of bounds is the "" string literal.

I have pasted the address sanitizer trace below.



==29553==ERROR: AddressSanitizer: global-buffer-overflow on address 
0x00000046a360 at pc 0x7f70c17916b4 bp 0x7fffcbe44ab0 sp 0x7fffcbe44aa0
READ of size 8 at 0x00000046a360 thread T0
    #0 0x7f70c17916b3 in first_non_fsm_start_char_cstring 
subversion/libsvn_subr/utf_validate.c:321
    #1 0x7f70c1791945 in svn_utf__cstring_is_valid 
subversion/libsvn_subr/utf_validate.c:367
    #2 0x7f70c1788cf6 in check_cstring_utf8 subversion/libsvn_subr/utf.c:675
    #3 0x7f70c178a5e4 in svn_utf_cstring_from_utf8 
subversion/libsvn_subr/utf.c:901
    #4 0x7f70c1743766 in svn_path_cstring_from_utf8 
subversion/libsvn_subr/path.c:1141
    #5 0x7f70c16ffde9 in svn_dirent_get_absolute 
subversion/libsvn_subr/dirent_uri.c:1598
    #6 0x43e444 in svn_cl__get_notifier subversion/svn/notify.c:1123
    #7 0x453a29 in sub_main subversion/svn/svn.c:2932
    #8 0x454542 in main subversion/svn/svn.c:3126
    #9 0x7f70c030d62f in __libc_start_main (/lib64/libc.so.6+0x2062f)
    #10 0x4071c8 in _start 
(/mnt/ram/subversion-1.9.3/subversion/svn/.libs/svn+0x4071c8)

0x00000046a361 is located 0 bytes to the right of global variable '*.LC0' from 
'subversion/svn/notify.c' (0x46a360) of size 1
  '*.LC0' is ascii string ''
SUMMARY: AddressSanitizer: global-buffer-overflow 
subversion/libsvn_subr/utf_validate.c:321 first_non_fsm_start_char_cstring
Shadow bytes around the buggy address:
  0x000080085410: f9 f9 f9 f9 00 03 f9 f9 f9 f9 f9 f9 00 00 00 00
  0x000080085420: 00 00 04 f9 f9 f9 f9 f9 00 00 00 00 03 f9 f9 f9
  0x000080085430: f9 f9 f9 f9 00 00 00 00 00 00 00 00 00 00 00 02
  0x000080085440: f9 f9 f9 f9 00 00 00 00 00 00 00 04 f9 f9 f9 f9
  0x000080085450: 00 03 f9 f9 f9 f9 f9 f9 00 00 00 00 00 00 00 00
=>0x000080085460: 00 06 f9 f9 f9 f9 f9 f9 00 00 00 00[01]f9 f9 f9
  0x000080085470: f9 f9 f9 f9 00 05 f9 f9 f9 f9 f9 f9 00 03 f9 f9
  0x000080085480: f9 f9 f9 f9 00 00 00 f9 f9 f9 f9 f9 00 00 07 f9
  0x000080085490: f9 f9 f9 f9 00 00 00 f9 f9 f9 f9 f9 00 00 06 f9
  0x0000800854a0: f9 f9 f9 f9 00 00 00 02 f9 f9 f9 f9 00 00 06 f9
  0x0000800854b0: f9 f9 f9 f9 00 00 00 03 f9 f9 f9 f9 00 00 00 07
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Contiguous container OOB:fc
  ASan internal:           fe
==29553==ABORTING


-- 
Hanno Böck
http://hboeck.de/

mail/jabber: ha...@hboeck.de
GPG: BBB51E42

Attachment: pgpMLLrPZ1h3d.pgp
Description: OpenPGP digital signature

Reply via email to