env.c (parse_schedule): Reject out of range values.
authorUros Bizjak <ubizjak@gmail.com>
Thu, 9 Nov 2006 19:41:36 +0000 (20:41 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Thu, 9 Nov 2006 19:41:36 +0000 (20:41 +0100)
        * env.c (parse_schedule): Reject out of range values.
        (parse_unsigned_long): Reject out of range, negative or zero values.

From-SVN: r118626

libgomp/ChangeLog
libgomp/env.c

index 139b7fc..d0e94d2 100644 (file)
@@ -1,3 +1,9 @@
+2006-11-09  Uros Bizjak  <ubizjak@gmail.com>
+
+       * env.c (parse_schedule): Reject out of range values.
+       (parse_unsigned_long): Reject out of range, negative or zero values.
+
+
 2006-10-29  Jakub Jelinek  <jakub@redhat.com>
 
        PR fortran/29629
index 0a80b87..af7e0c5 100644 (file)
@@ -49,6 +49,7 @@ static void
 parse_schedule (void)
 {
   char *env, *end;
+  unsigned long value;
 
   env = getenv ("OMP_SCHEDULE");
   if (env == NULL)
@@ -85,11 +86,17 @@ parse_schedule (void)
   if (*env == '\0')
     goto invalid;
 
-  gomp_run_sched_chunk = strtoul (env, &end, 10);
+  errno = 0;
+  value = strtoul (env, &end, 10);
+  if (errno)
+    goto invalid;
+
   while (isspace ((unsigned char) *end))
     ++end;
   if (*end != '\0')
     goto invalid;
+
+  gomp_run_sched_chunk = value;
   return;
 
  unknown:
@@ -99,7 +106,6 @@ parse_schedule (void)
  invalid:
   gomp_error ("Invalid value for chunk size in "
              "environment variable OMP_SCHEDULE");
-  gomp_run_sched_chunk = 1;
   return;
 }
 
@@ -121,7 +127,11 @@ parse_unsigned_long (const char *name, unsigned long *pvalue)
   if (*env == '\0')
     goto invalid;
 
+  errno = 0;
   value = strtoul (env, &end, 10);
+  if (errno || (long) value <= 0)
+    goto invalid;
+
   while (isspace ((unsigned char) *end))
     ++end;
   if (*end != '\0')