On 10/10/2012 06:02 PM, Dodji Seketeli wrote:

I just have one question for own education.

Regarding:

@@ -2450,7 +2450,13 @@
          if (array_p && TYPE_VEC_NEW_USES_COOKIE (elt_type))
            size = size_binop (PLUS_EXPR, size, cookie_size);
          else
-           cookie_size = NULL_TREE;
+           {
+             cookie_size = NULL_TREE;
+             /* No size arithmetic necessary, so the size check is
+                not needed. */
+             if (outer_nelts_check != NULL && inner_size == double_int_one)
+               outer_nelts_check = NULL_TREE;
+           }

I couldn't find where in code is TYPE_VEC_NEW_USES_COOKIE is set.  Is it
still used?

It's set in gcc/cp/class.c:

5191 /* Figure out whether or not we will need a cookie when dynamically
   5192      allocating an array of this type.  */
   5193   TYPE_LANG_SPECIFIC (t)->u.c.vec_new_uses_cookie
   5194     = type_requires_array_cookie (t);

I'm not sure if we've got proper test coverage for the concrete cookie value, but the test case I've included implicitly check if there's a cookie if there's a non-trivial destructor.

--
Florian Weimer / Red Hat Product Security Team

Reply via email to