diff --git a/config/cert_exp_33_realloc.c b/config/cert_exp_33_realloc.c
index 7dea4655aed70f39e6923c3c9746935685b890bc..8cb4bf9fbc83ad89a3477fb4b6bf5259cfd8374e 100644
--- a/config/cert_exp_33_realloc.c
+++ b/config/cert_exp_33_realloc.c
@@ -1,41 +1,43 @@
 #include <stdlib.h>
 #include <stdio.h>
+#include <string.h>
+ 
 enum { OLD_SIZE = 10, NEW_SIZE = 20 };
-
-int *resize_array(int *array, size_t count) {
-  if (0 == count) {
+  
+int *resize_array(int *array, size_t old_count, size_t new_count) {
+  if (0 == new_count) {
     return 0;
   }
-
-  int *ret = (int *)realloc(array, count * sizeof(int));
+  
+  int *ret = (int *)realloc(array, new_count * sizeof(int));
   if (!ret) {
     free(array);
     return 0;
   }
-
+  
+  if (new_count > old_count) {
+    memset(ret + old_count, 0, (new_count - old_count) * sizeof(int));
+  }
+  
   return ret;
 }
-
+  
 void func(void) {
-
+  
   int *array = (int *)malloc(OLD_SIZE * sizeof(int));
   if (0 == array) {
     /* Handle error */
-    return;
   }
-	
-  /*@ loop unroll OLD_SIZE; */
+  
   for (size_t i = 0; i < OLD_SIZE; ++i) {
     array[i] = i;
   }
-
-  array = resize_array(array, NEW_SIZE);
+  
+  array = resize_array(array, OLD_SIZE, NEW_SIZE);
   if (0 == array) {
     /* Handle error */
-    return;
   }
   
-  /*@ loop unroll NEW_SIZE; */
   for (size_t i = 0; i < NEW_SIZE; ++i) {
     printf("%d ", array[i]);
   }