diff options
author | Zack Weinberg <zack@gcc.gnu.org> | 2003-12-01 23:29:59 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 2003-12-01 23:29:59 +0000 |
commit | 75d3baee1823eb2211f58f8f3e0e718e4f128f08 (patch) | |
tree | 13d311306a2e450cead72959b52908f3a1874875 /libobjc | |
parent | bb9cfd00626b99a5d7cd770c91093ea27a907f84 (diff) | |
download | gcc-75d3baee1823eb2211f58f8f3e0e718e4f128f08.zip gcc-75d3baee1823eb2211f58f8f3e0e718e4f128f08.tar.gz gcc-75d3baee1823eb2211f58f8f3e0e718e4f128f08.tar.bz2 |
re PR libobjc/11433 (Crash due to dereferencing null pointer when querying protocol)
PR 11433
gcc/testsuite:
* objc.dg/proto-lossage-3.m: New test.
libobjc:
* Protocol.m (descriptionForInstanceMethod): Don't dereference
instance_methods if it's NULL.
(descriptionForClassMethod): Likewise for class_methods.
From-SVN: r74137
Diffstat (limited to 'libobjc')
-rw-r--r-- | libobjc/ChangeLog | 15 | ||||
-rw-r--r-- | libobjc/Protocol.m | 22 |
2 files changed, 23 insertions, 14 deletions
diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog index 3032e7a..f900eaf 100644 --- a/libobjc/ChangeLog +++ b/libobjc/ChangeLog @@ -1,3 +1,10 @@ +2003-12-01 Zack Weinberg <zack@codesourcery.com> + + PR 11433 + * Protocol.m (descriptionForInstanceMethod): Don't dereference + instance_methods if it's NULL. + (descriptionForClassMethod): Likewise for class_methods. + 2003-10-24 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> * Makefile.in (runtime-info.h): Remove -Wp. @@ -36,14 +43,14 @@ Thu Jul 10 10:27:43 2003 Nicola Pero <n.pero@mi.flashnet.it> (objc_msg_lookup): Similar fixes. (__objc_init_install_dtable): Lock the runtime before checking if the table is installed. - + 2003-05-23 Nathanael Nerode <neroden@gcc.gnu.org> * hash.c, init.c, libobjc.def, libobjc_entry.c, linking.m, makefile.dos, misc.c, nil_method.c, objects.c, sarray.c, selector.c, sendmsg.c, thr-dce.c, thr-decosf1.c, thr-irix.c, thr-mach.c, thr-objc.c, thr-os2.c, thr-posix.c, thr-pthreads.c, - thr-rtems.c, thr-single.c, thr-solaris.c, thr-vxworks.c, + thr-rtems.c, thr-single.c, thr-solaris.c, thr-vxworks.c, thr-win32.c, thr.c: Replace "GNU CC" with "GCC". * Makefile.in, NXConstStr.m, Object.m, Protocol.m, archive.c, class.c, encoding.c, gc.c, objc/NXConstStr.h, objc/Object.h, @@ -52,14 +59,14 @@ Thu Jul 10 10:27:43 2003 Nicola Pero <n.pero@mi.flashnet.it> objc/thr.h, objc/typedstream.h: Replace "GNU CC" with "GCC". Tue May 13 14:56:03 2003 Richard Frith-Macdonald <rfm@gnu.org> - Nicola Pero <n.pero@mi.flashnet.it> + Nicola Pero <n.pero@mi.flashnet.it> libobjc/10742 * init.c (class_superclass_of_class): New function. (create_tree_of_subclasses_inherited_from): Use it. (__objc_tree_insert_class): Likewise. (class_is_subclass_of_class): Likewise. - + 2003-04-11 David Chad <davidc@freebsd.org> Loren J. Rittle <ljrittle@acm.org> diff --git a/libobjc/Protocol.m b/libobjc/Protocol.m index 8191dc2..06a25ac 100644 --- a/libobjc/Protocol.m +++ b/libobjc/Protocol.m @@ -80,11 +80,12 @@ struct objc_method_description_list { const char* name = sel_get_name (aSel); struct objc_method_description *result; - for (i = 0; i < instance_methods->count; i++) - { - if (!strcmp ((char*)instance_methods->list[i].name, name)) - return &(instance_methods->list[i]); - } + if (instance_methods) + for (i = 0; i < instance_methods->count; i++) + { + if (!strcmp ((char*)instance_methods->list[i].name, name)) + return &(instance_methods->list[i]); + } for (proto_list = protocol_list; proto_list; proto_list = proto_list->next) { @@ -107,11 +108,12 @@ struct objc_method_description_list { const char* name = sel_get_name (aSel); struct objc_method_description *result; - for (i = 0; i < class_methods->count; i++) - { - if (!strcmp ((char*)class_methods->list[i].name, name)) - return &(class_methods->list[i]); - } + if (class_methods) + for (i = 0; i < class_methods->count; i++) + { + if (!strcmp ((char*)class_methods->list[i].name, name)) + return &(class_methods->list[i]); + } for (proto_list = protocol_list; proto_list; proto_list = proto_list->next) { |