diff mbox

[libsanitizer] Cherry-pick r211008 [Was: Re: libsanitizer merge from upstream r208536]

Message ID 53A8627D.4020107@oracle.com
State New
Headers show

Commit Message

Paolo Carlini June 23, 2014, 5:23 p.m. UTC
Hi,

On 06/16/2014 10:42 AM, Konstantin Serebryany wrote:
> On Wed, Jun 11, 2014 at 2:28 PM, Paolo Carlini <paolo.carlini@oracle.com> wrote:
>> Hi,
>>
>> On 05/22/2014 09:02 PM, Jakub Jelinek wrote:
>>> In file included from
>>> ../../../../trunk/libsanitizer/asan/asan_interceptors.cc:147:0:
>>>
>>> ../../../../trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:
>>> In function ‘int __interceptor_accept4(int, void*, unsigned int*,
>>> int)’:
>>>
>>> ../../../../trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:1821:12:
>>> warning: ‘addrlen0’ may be used uninitialized in this function
>>> [-Wmaybe-uninitialized]
>>> unsigned addrlen0;
>>> ^
>>>
>>> ../../../../trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:
>>> In function ‘int __interceptor_accept(int, void*, unsigned int*)’:
>>>
>>> ../../../../trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:1799:12:
>>> warning: ‘addrlen0’ may be used uninitialized in this function
>>> [-Wmaybe-uninitialized]
>>> unsigned addrlen0;
>>> ^
>>> That sounds like a false positive warning:
>>>     unsigned addrlen0;
>>>     if (addrlen) {
>>>       COMMON_INTERCEPTOR_READ_RANGE(ctx, addrlen, sizeof(*addrlen));
>>>       addrlen0 = *addrlen;
>>>     }
>>>     int fd2 = REAL(accept4)(fd, addr, addrlen, f);
>>>     if (fd2 >= 0) {
>>>       if (fd >= 0) COMMON_INTERCEPTOR_FD_SOCKET_ACCEPT(ctx, fd, fd2);
>>>       if (addr && addrlen)
>>>         COMMON_INTERCEPTOR_WRITE_RANGE(ctx, addr, Min(*addrlen, addrlen0));
>>>     }
>>> (unless the COMMON_INTERCEPTOR* macros do too weird stuff), wonder why the
>>> predicate aware uninit doesn't handle this.
>> By the way, I'm still seeing the above. Maybe a maintainer can have a look,
>> double check it's just a false positive a shut it up somehow?
> I've "fixed" this in upstream trunk:
> http://llvm.org/viewvc/llvm-project?view=revision&revision=211008
> This will get into GCC with the next merge; or feel free to cherry pick.
Thus, can I apply the below?

Thanks!
Paolo.

/////////////////////
2014-06-23  Paolo Carlini  <paolo.carlini@oracle.com>

	* sanitizer_common/sanitizer_common_interceptors.inc:
	Cherry pick upstream r211008.

Comments

Jakub Jelinek June 23, 2014, 6:16 p.m. UTC | #1
On Mon, Jun 23, 2014 at 07:23:09PM +0200, Paolo Carlini wrote:
> /////////////////////

> 2014-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
> 
> 	* sanitizer_common/sanitizer_common_interceptors.inc:
> 	Cherry pick upstream r211008.

Sure, thanks.

> Index: sanitizer_common/sanitizer_common_interceptors.inc
> ===================================================================
> --- sanitizer_common/sanitizer_common_interceptors.inc	(revision 211905)
> +++ sanitizer_common/sanitizer_common_interceptors.inc	(working copy)
> @@ -1796,7 +1796,7 @@ INTERCEPTOR(int, getsockopt, int sockfd, int level
>  INTERCEPTOR(int, accept, int fd, void *addr, unsigned *addrlen) {
>    void *ctx;
>    COMMON_INTERCEPTOR_ENTER(ctx, accept, fd, addr, addrlen);
> -  unsigned addrlen0;
> +  unsigned addrlen0 = 0;
>    if (addrlen) {
>      COMMON_INTERCEPTOR_READ_RANGE(ctx, addrlen, sizeof(*addrlen));
>      addrlen0 = *addrlen;
> @@ -1818,7 +1818,7 @@ INTERCEPTOR(int, accept, int fd, void *addr, unsig
>  INTERCEPTOR(int, accept4, int fd, void *addr, unsigned *addrlen, int f) {
>    void *ctx;
>    COMMON_INTERCEPTOR_ENTER(ctx, accept4, fd, addr, addrlen, f);
> -  unsigned addrlen0;
> +  unsigned addrlen0 = 0;
>    if (addrlen) {
>      COMMON_INTERCEPTOR_READ_RANGE(ctx, addrlen, sizeof(*addrlen));
>      addrlen0 = *addrlen;


	Jakub
diff mbox

Patch

Index: sanitizer_common/sanitizer_common_interceptors.inc
===================================================================
--- sanitizer_common/sanitizer_common_interceptors.inc	(revision 211905)
+++ sanitizer_common/sanitizer_common_interceptors.inc	(working copy)
@@ -1796,7 +1796,7 @@  INTERCEPTOR(int, getsockopt, int sockfd, int level
 INTERCEPTOR(int, accept, int fd, void *addr, unsigned *addrlen) {
   void *ctx;
   COMMON_INTERCEPTOR_ENTER(ctx, accept, fd, addr, addrlen);
-  unsigned addrlen0;
+  unsigned addrlen0 = 0;
   if (addrlen) {
     COMMON_INTERCEPTOR_READ_RANGE(ctx, addrlen, sizeof(*addrlen));
     addrlen0 = *addrlen;
@@ -1818,7 +1818,7 @@  INTERCEPTOR(int, accept, int fd, void *addr, unsig
 INTERCEPTOR(int, accept4, int fd, void *addr, unsigned *addrlen, int f) {
   void *ctx;
   COMMON_INTERCEPTOR_ENTER(ctx, accept4, fd, addr, addrlen, f);
-  unsigned addrlen0;
+  unsigned addrlen0 = 0;
   if (addrlen) {
     COMMON_INTERCEPTOR_READ_RANGE(ctx, addrlen, sizeof(*addrlen));
     addrlen0 = *addrlen;