[Bug c++/67942] diagnose placement new buffer overflow

2016-07-23 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67942

--- Comment #8 from Martin Sebor  ---
*** Bug 67875 has been marked as a duplicate of this bug. ***

[Bug c++/67942] diagnose placement new buffer overflow

2015-11-08 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67942

--- Comment #7 from Martin Sebor  ---
Author: msebor
Date: Sun Nov  8 17:53:51 2015
New Revision: 229959

URL: https://gcc.gnu.org/viewcvs?rev=229959=gcc=rev
Log:
Clean up fallout on ILP32 from r229831.

gcc/
PR c++/67942 
* cp/init.c (warn_placement_new_too_small): Convert integer
operand of POINTER_PLUS_EXPR to ssize_t to determine its signed
value.

c-family/
* c.opt (Wplacement-new): Add a period to the end of
a sentence.

Modified:
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c.opt
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/init.c

[Bug c++/67942] diagnose placement new buffer overflow

2015-11-06 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67942

--- Comment #6 from Martin Sebor  ---
Author: msebor
Date: Fri Nov  6 15:42:41 2015
New Revision: 229857

URL: https://gcc.gnu.org/viewcvs?rev=229857=gcc=rev
Log:
Correct entry for PR c++/67942.

Modified:
trunk/gcc/ChangeLog

[Bug c++/67942] diagnose placement new buffer overflow

2015-11-05 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67942

--- Comment #3 from Martin Sebor  ---
Author: msebor
Date: Thu Nov  5 21:42:10 2015
New Revision: 229827

URL: https://gcc.gnu.org/viewcvs?rev=229827=gcc=rev
Log:
PR c++/67942 - diagnose placement new buffer overflow

gcc/
* invoke.texi (-Wplacement-new): Document new option.
* gcc/testsuite/g++.dg/warn/Wplacement-new-size.C: New test.

gcc/c-family/
* c.opt (-Wplacement-new): New option.

gcc/cp/
* cp/init.c (warn_placement_new_too_small): New function.
(build_new_1): Call it.

gcc/testsuite/
* g++.dg/warn/Wplacement-new-size.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/warn/Wplacement-new-size.C
Modified:
trunk/gcc/ChangeLog
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c.opt
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/init.c
trunk/gcc/doc/invoke.texi
trunk/gcc/testsuite/ChangeLog

[Bug c++/67942] diagnose placement new buffer overflow

2015-11-05 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67942

Martin Sebor  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #4 from Martin Sebor  ---
Committed in revision 229827.

[Bug c++/67942] diagnose placement new buffer overflow

2015-11-05 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67942

--- Comment #5 from Martin Sebor  ---
Author: msebor
Date: Fri Nov  6 01:08:53 2015
New Revision: 229831

URL: https://gcc.gnu.org/viewcvs?rev=229831=gcc=rev
Log:
PR c++/67942 - diagnose placement new buffer overflow

gcc/cp/
* cp/init.c (warn_placement_new_too_small): Avoid assuming
the size of the first operand of placement new or its type
is known.

gcc/testsuite/
* g++.dg/warn/Wplacement-new-size.C: Exercise placement new
invocations where the size of the destination buffer object
or its type (or both) is unknown.

Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/init.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.dg/warn/Wplacement-new-size.C

[Bug c++/67942] diagnose placement new buffer overflow

2015-10-13 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67942

Martin Sebor  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2015-10-13
 Ever confirmed|0   |1

--- Comment #2 from Martin Sebor  ---
Patch posted for review here:
https://gcc.gnu.org/ml/gcc-patches/2015-10/msg01284.html


[Bug c++/67942] diagnose placement new buffer overflow

2015-10-12 Thread msebor at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67942

Martin Sebor  changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |msebor at gcc dot 
gnu.org

--- Comment #1 from Martin Sebor  ---
A patch capable of detecting and diagnosing a limited subset of such overflows
will be posted for review shortly.  The output of the patch for the example
program in the Description is as follows:

$ g++ -Wall  u.cpp
u.cpp: In function ‘void f(S*)’:
u.cpp:22:27: warning: placement new constructing a 16-byte object of type ‘S’
in a region of type ‘char [8]’ that is 8 bytes large
 S *t = new (buf) S (*s);