This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [fortran,patch] Impose limit on string length

On Sat, May 16, 2009 at 06:05:16PM +0200, FX wrote:
> Hi all,
> This patch adds checks to string lengths, to avoid getting carried and  
> accepting strings longer than the target's MAX_INT. This is something  
> stupid to do, of course, but we should error out instead of silently  
> compiling it (with wrapping to int type).
> This is half the fix for PR 31243: this patch deals with the compile- 
> time checks, while some runtime checks may later be enforced  
> (protected behind -fcheck=bounds?). The fix is fairly simple, except  
> for one thing: I have to prevent range-checking for the result of LEN  
> simplification, because otherwise we can issue errors twice  
> (furthermore, I'm convinced with the new checks during resolution, the  
> range can actually never be exceeded.
> Bootstrapped and regtested on x86_64-linux (both -m32 and -m64), comes  
> with 3 testcases. OK to commit?

A couple comments.

1) Your testcase appear to be missing '! { dg-do compile }' or
   '! { dg-do run }' directives.

2) Do the testcases require a system with a large amount of memory?

3) A few corrections to the patch:

+      if (compare_bound_mpz_t (ref->,
+			       gfc_integer_kinds[k].huge) == CMP_GT
+	  && (compare_bound (ref->, ref-> == CMP_EQ
+	      || compare_bound (ref->, ref-> == CMP_GT))
+	{
+	  gfc_error ("Substring end index at %L is too large",
+		     &ref->>where);

Shouldn't this be ref->>where?

+	  return FAILURE;
+	}
+  /* Check that the character length is not to large.  */



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]