[cig-commits] [commit] devel, master: Prevent possible out-of-bounds write. (760ea4d)
cig_noreply at geodynamics.org
cig_noreply at geodynamics.org
Thu Nov 6 08:30:39 PST 2014
Repository : https://github.com/geodynamics/specfem3d_globe
On branches: devel,master
Link : https://github.com/geodynamics/specfem3d_globe/compare/bc58e579b3b0838a0968725a076f5904845437ca...be63f20cbb6f462104e949894dbe205d2398cd7f
>---------------------------------------------------------------
commit 760ea4deb703a469d8cddb676fb58fda65daf6fa
Author: Elliott Sales de Andrade <esalesde at physics.utoronto.ca>
Date: Tue Sep 9 22:48:19 2014 -0400
Prevent possible out-of-bounds write.
LINE_MAX may be system defined to something greater than the string
length defined in Fortran. Of course, someone would also have to write a
Par_file with an extremely long line too, but better safe than sorry.
>---------------------------------------------------------------
760ea4deb703a469d8cddb676fb58fda65daf6fa
src/shared/param_reader.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/shared/param_reader.c b/src/shared/param_reader.c
index 56c2205..fa6bb60 100644
--- a/src/shared/param_reader.c
+++ b/src/shared/param_reader.c
@@ -127,6 +127,7 @@ FC_FUNC_(param_read,PARAM_READ)(char * string_read, int * string_read_len, char
regmatch_t parameter[3];
char * keyword;
char * value;
+ size_t value_len;
// Trim the keyword name we're looking for.
namecopy = strndup(name, *name_len);
@@ -192,7 +193,10 @@ FC_FUNC_(param_read,PARAM_READ)(char * string_read, int * string_read_len, char
value = strndup(line+parameter[2].rm_so, parameter[2].rm_eo-parameter[2].rm_so);
// Clear out the return string with blanks, copy the value into it, and return.
memset(string_read, ' ', *string_read_len);
- strncpy(string_read, value, strlen(value));
+ value_len = strlen(value);
+ if (value_len > (size_t)*string_read_len)
+ value_len = *string_read_len;
+ strncpy(string_read, value, value_len);
free(value);
free(namecopy);
*ierr = 0;
More information about the CIG-COMMITS
mailing list