Re: Doubts regarding the issue (bug 62181)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Respected Sir,
I am getting the same warning for clang and no warning for gcc.
I did try the code with fsanitize=address for a detailed note.It is a
global buffer overflow,This is the exact error:
==18062==ERROR: AddressSanitizer: global-buffer-overflow on address
0x5607c52ff66f at pc 0x5607c523468b bp 0x7ffc44b71dd0 sp 0x7ffc44b71548
READ of size 1 at 0x5607c52ff66f thread T0
    #0 0x5607c523468a in printf_common(void*, char const*, __va_list_tag*)
(/home/krishna/xyz/str+0x8268a)
    #1 0x5607c52356ac in vprintf (/home/krishna/xyz/str+0x836ac)
    #2 0x5607c52357a6 in printf (/home/krishna/xyz/str+0x837a6)
    #3 0x5607c52e6a9d in main (/home/krishna/xyz/str+0x134a9d)
    #4 0x7f6ebf30e0b2 in __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
    #5 0x5607c51ba41d in _start (/home/krishna/xyz/str+0x841d)
0x5607c52ff66f is located 36 bytes to the right of global variable '*.LC3'
defined in 'str.c' (0x5607c52ff640) of size 11
  '*.LC3' is ascii string '%s, %s, %s'
SUMMARY: AddressSanitizer: global-buffer-overflow
(/home/krishna/xyz/str+0x8268a) in printf_common(void*, char const*,
__va_list_tag*)
Shadow bytes around the buggy address:
  0x0ac178a57e70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0ac178a57e80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0ac178a57e90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0ac178a57ea0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0ac178a57eb0: 03 f9 f9 f9 f9 f9 f9 f9 03 f9 f9 f9 f9 f9 f9 f9
=>0x0ac178a57ec0: 03 f9 f9 f9 f9 f9 f9 f9 00 03 f9 f9 f9[f9]f9 f9
  0x0ac178a57ed0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0ac178a57ee0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0ac178a57ef0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0ac178a57f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0ac178a57f10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
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
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==18062==ABORTING
Thanks and Regards,
Krishna Narayanan.

On Fri, Feb 4, 2022 at 5:43 PM Jonathan Wakely <jwakely.gcc@xxxxxxxxx>
wrote:

> On Fri, 4 Feb 2022 at 11:36, Krishna Narayanan via Gcc-help
> <gcc-help@xxxxxxxxxxx> wrote:
> >
> > Respected sir,
> > I went through the compiler flags and mistake was on my side using the
> 'w'
> > suppressor flag to remove the warnings without knowing it.Thanks for the
> > docs and reply.
> >
> > By unicode I meant there is a question mark inside a diagonal.(unicode
> > error symbol)
>
> That means it's printing garbage characters that can't be processed as
> valid UTF-8, so explicitly NOT unicode. Calling that unicode is very
> confusing.
>
>
> > Sir this is perspective with the third print that is
> > "cc"+foobar() where I get zR for gcc (9.3.0) and unicode for g++-10.1.
> > I got your point regarding the garbage value and to throw a warning is
> > better than to get such an unwanted output.
> >
> > I thought there would be a specific reason why it had come because in
> const
> > char *a ="aa"+'operator/number' i.e when I add some character with some
> > change it gives blank space for numbers and operators, where as for
> > addition of 'a' in *a= "aa"+'a' it give 4 times the unicode symbol but
> for
> > *c="cc" +'c' and *b="bb"+'b' gives a space as output.Yes it has been
> quite
> > unpredictable and undefined behaviour.
>
> The nature of undefined behaviour is to be unpredictable.
>
> Compile with -fsanitize=address to get a lot more detail about what
> your buggy code is doing. You'll see an explanation of where the
> pointer arithmetic goes, and what's in memory there.
>
>
>
> >
> > So has the request of warning been granted in the upcoming gcc version!?
>
> Do you get any warning when compiling your buggy example with gcc? I don't.
>
> However, when I compile it with clang I get:
>
> oflow.c:10:23: warning: adding 'char' to a string does not append to
> the string [-Wstring-plus-int]
> const char *b = "bb" + bar();
>                 ~~~~~^~~~~~~
> oflow.c:10:23: note: use array indexing to silence this warning
> const char *b = "bb" + bar();
>                      ^
>                 &    [      ]
> oflow.c:11:22: warning: adding 'int' to a string does not append to
> the string [-Wstring-plus-int]
> const char *c = "cc" + foobar();
>                ~~~~~^~~~~~~~~~
> oflow.c:11:22: note: use array indexing to silence this warning
> const char *c = "cc" + foobar();
>                     ^
>                &    [         ]
> 2 warnings generated.
>



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux