public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug c++/53762] New: pointer-casts don't always check null-pointers @ 2012-06-24 16:09 imzhuli at vip dot qq.com 2012-06-24 16:26 ` [Bug c++/53762] " redi at gcc dot gnu.org ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: imzhuli at vip dot qq.com @ 2012-06-24 16:09 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53762 Bug #: 53762 Summary: pointer-casts don't always check null-pointers Classification: Unclassified Product: gcc Version: 4.2.1 Status: UNCONFIRMED Severity: major Priority: P3 Component: c++ AssignedTo: unassigned@gcc.gnu.org ReportedBy: imzhuli@vip.qq.com Created attachment 27695 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27695 examples of lacking null-pointer check under these situations, null-pointers are not converted to null-pointers as the standard says; 1. with 'this' pointer: class A { public: int asomething; // important: if there's nothing in class A, the functions seems right; }; class B : public A { public: virtual ~B() {} void* thisoffset() { return static_cast<A*>(this); } void* offset() { B * pb = this; return static_cast<A*>(pb); } }; the two 'offset' function returns a 'offset of object of type A in objec of type B ', and a null-pointer. i think null-point should be right. 2. with reference from DERIVED class to BASE class: // class A & B defined as the above A* pa = NULL; B*pb = NULL; pa = &static_cast<A&>(*pb); ^^^^^^^^^^^^^^^^^^^^^^^^^^ will not perform null-pointer check; A* pa = NULL; B*pb = NULL; pa = static_cast<A*>(pb); ^^^^^^^^^^^^^^^^^^^^^^^^^ will perform null-pointer check; ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/53762] pointer-casts don't always check null-pointers 2012-06-24 16:09 [Bug c++/53762] New: pointer-casts don't always check null-pointers imzhuli at vip dot qq.com @ 2012-06-24 16:26 ` redi at gcc dot gnu.org 2012-06-24 16:31 ` redi at gcc dot gnu.org 2012-06-24 18:09 ` pinskia at gcc dot gnu.org 2 siblings, 0 replies; 4+ messages in thread From: redi at gcc dot gnu.org @ 2012-06-24 16:26 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53762 Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|major |normal --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-06-24 16:26:17 UTC --- Your program dereferences null pointers, that's undefined behaviour. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/53762] pointer-casts don't always check null-pointers 2012-06-24 16:09 [Bug c++/53762] New: pointer-casts don't always check null-pointers imzhuli at vip dot qq.com 2012-06-24 16:26 ` [Bug c++/53762] " redi at gcc dot gnu.org @ 2012-06-24 16:31 ` redi at gcc dot gnu.org 2012-06-24 18:09 ` pinskia at gcc dot gnu.org 2 siblings, 0 replies; 4+ messages in thread From: redi at gcc dot gnu.org @ 2012-06-24 16:31 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53762 --- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-06-24 16:30:54 UTC --- These are allowed: pa = static_cast<A*>(pb); pb = static_cast<B*>(pa); All the other casts are not because they involve dereferencing a null pointer which is not allowed by [expr.unary.op]/1 Also, GCC 4.2 is not supported or maintained so there's no point reporting bugs against it, you should check a newer release before reporting bugs. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug c++/53762] pointer-casts don't always check null-pointers 2012-06-24 16:09 [Bug c++/53762] New: pointer-casts don't always check null-pointers imzhuli at vip dot qq.com 2012-06-24 16:26 ` [Bug c++/53762] " redi at gcc dot gnu.org 2012-06-24 16:31 ` redi at gcc dot gnu.org @ 2012-06-24 18:09 ` pinskia at gcc dot gnu.org 2 siblings, 0 replies; 4+ messages in thread From: pinskia at gcc dot gnu.org @ 2012-06-24 18:09 UTC (permalink / raw) To: gcc-bugs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53762 Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-06-24 18:09:39 UTC --- Invalid as mentioned as: pa = &static_cast<A&>(*pb); ^^^ Deferences a null pointer at the caret. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-06-24 18:09 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2012-06-24 16:09 [Bug c++/53762] New: pointer-casts don't always check null-pointers imzhuli at vip dot qq.com 2012-06-24 16:26 ` [Bug c++/53762] " redi at gcc dot gnu.org 2012-06-24 16:31 ` redi at gcc dot gnu.org 2012-06-24 18:09 ` pinskia at gcc dot gnu.org
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).