fix uninitialized memory reads found by purify
Gurusamy Sarathy [Fri, 11 Feb 2000 16:36:14 +0000 (16:36 +0000)]
p4raw-id: //depot/perl@5063

ext/Devel/Peek/Peek.xs
regcomp.c

index 8af8847..e7f5746 100644 (file)
@@ -3,12 +3,12 @@
 #include "perl.h"
 #include "XSUB.h"
 
-#ifdef PURIFY
-#define DeadCode() NULL
-#else
 SV *
 DeadCode(pTHX)
 {
+#ifdef PURIFY
+    return Nullsv;
+#else
     SV* sva;
     SV* sv, *dbg;
     SV* ret = newRV_noinc((SV*)newAV());
@@ -114,8 +114,8 @@ DeadCode(pTHX)
     PerlIO_printf(Perl_debug_log, "total: refs: %i, strings: %i in %i\targsarray: %i, argsstrings: %i\n", tref, tm, ts, ta, tas);
 
     return ret;
-}
 #endif /* !PURIFY */
+}
 
 #if defined(PERL_DEBUGGING_MSTATS) || defined(DEBUGGING_MSTATS) \
        || (defined(MYMALLOC) && !defined(PLAIN_MALLOC))
index 5df82c0..57a3bad 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -277,6 +277,7 @@ S_cl_is_anything(pTHX_ struct regnode_charclass_class *cl)
 STATIC void
 S_cl_init(pTHX_ struct regnode_charclass_class *cl)
 {
+    Zero(cl, 1, struct regnode_charclass_class);
     cl->type = ANYOF;
     cl_anything(cl);
 }
@@ -284,10 +285,9 @@ S_cl_init(pTHX_ struct regnode_charclass_class *cl)
 STATIC void
 S_cl_init_zero(pTHX_ struct regnode_charclass_class *cl)
 {
+    Zero(cl, 1, struct regnode_charclass_class);
     cl->type = ANYOF;
     cl_anything(cl);
-    ANYOF_CLASS_ZERO(cl);
-    ANYOF_BITMAP_ZERO(cl);
     if (LOC)
        cl->flags |= ANYOF_LOCALE;
 }