[mpich] MPICH primary repository branch, master, updated. v3.1.1-100-g76f4c56
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "MPICH primary repository". The branch, master has been updated via 76f4c56e8ee67010a816291c9d45ccc745960a1e (commit) via 4efc8b2e54965ba79e634b6c93f91d7669644805 (commit) via 998a8a0bd9747847e37b03c9976bff4476d28324 (commit) via 1b016bb2d7463eb884e1a9dc478fd596b7303743 (commit) from 299bfd406a68b22ee0b14a10f60780d5acf30129 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://git.mpich.org/mpich.git/commitdiff/76f4c56e8ee67010a816291c9d45ccc745... commit 76f4c56e8ee67010a816291c9d45ccc745960a1e Author: Junchao Zhang <[email protected]> Date: Mon Jul 14 12:46:05 2014 -0500 Increase buffer size to cover longer cvar strings Signed-off-by: Sangmin Seo <[email protected]> diff --git a/src/env/mpivars.c b/src/env/mpivars.c index 772f8f5..080aedd 100644 --- a/src/env/mpivars.c +++ b/src/env/mpivars.c @@ -112,7 +112,7 @@ int PrintControlVars( FILE *fp ) { int i, num_cvar, nameLen, verbosity, descLen, binding, scope; int hasValue; - char name[MAX_NAME_LEN], desc[MAX_DESC_LEN], varValue[21]; + char name[MAX_NAME_LEN], desc[MAX_DESC_LEN], varValue[512]; MPI_T_enum enumtype; MPI_Datatype datatype; @@ -166,7 +166,7 @@ int PrintPerfVars( FILE *fp ) { int i, numPvar, nameLen, descLen, verbosity, varClass; int binding, isReadonly, isContinuous, isAtomic; - char name[MAX_NAME_LEN], desc[MAX_DESC_LEN], varValue[21]; + char name[MAX_NAME_LEN], desc[MAX_DESC_LEN], varValue[512]; MPI_T_enum enumtype; MPI_Datatype datatype; http://git.mpich.org/mpich.git/commitdiff/4efc8b2e54965ba79e634b6c93f91d7669... commit 4efc8b2e54965ba79e634b6c93f91d7669644805 Author: Junchao Zhang <[email protected]> Date: Mon Jul 14 10:56:12 2014 -0500 Allocate mem. for a cvar when its type is MPI_CHAR https://svn.mpi-forum.org/trac/mpi-forum-web/ticket/405 says : "The use of the datatype MPI_CHAR in the MPI tool information interface implies a null-terminated character array, i.e. a string in the C language. If a variable has type MPI_CHAR, the value of the count parameter returned by MPI_T_CVAR_HANDLE_ALLOC and MPI_T_PVAR_HANDLE_ALLOC will include the null-terminating character." Unlike cvars of type MPI_INT etc, MPI_CHAR cvars need explicit memory allocation for their storage. Note: In MPI standard, MPI_CHAR is not in types of pvar. Fixes #2021 Signed-off-by: Sangmin Seo <[email protected]> diff --git a/src/mpi_t/mpit.c b/src/mpi_t/mpit.c index 62f602c..d25ec93 100644 --- a/src/mpi_t/mpit.c +++ b/src/mpi_t/mpit.c @@ -315,7 +315,19 @@ void MPIR_T_CVAR_REGISTER_impl( cvar->datatype = dtype; cvar->name = MPIU_Strdup(name); MPIU_Assert(cvar->name); - cvar->addr = (void *)addr; + if (dtype != MPI_CHAR) { + cvar->addr = (void *)addr; + } else { + cvar->addr = MPIU_Malloc(count); + MPIU_Assert(cvar->addr); + if (defaultval.str == NULL) { + ((char *)(cvar->addr))[0] = '\0'; + } else { + /* Use greater (>), since count includes the terminating '\0', but strlen does not */ + MPIU_Assert(count > strlen(defaultval.str)); + strcpy(cvar->addr, defaultval.str); + } + } cvar->count = count; cvar->verbosity = verb; cvar->bind = binding; diff --git a/src/mpi_t/mpit_finalize.c b/src/mpi_t/mpit_finalize.c index 5e2e1aa..5ef7a9e 100644 --- a/src/mpi_t/mpit_finalize.c +++ b/src/mpi_t/mpit_finalize.c @@ -102,6 +102,7 @@ static void MPIR_T_cvar_env_finalize(void) cvar = (cvar_table_entry_t *)utarray_eltptr(cvar_table, i); MPIU_Free((void *)cvar->name); MPIU_Free((void *)cvar->desc); + if (cvar->datatype == MPI_CHAR) MPIU_Free(cvar->addr); } /* Free pvar_table itself */ http://git.mpich.org/mpich.git/commitdiff/998a8a0bd9747847e37b03c9976bff4476... commit 998a8a0bd9747847e37b03c9976bff4476d28324 Author: Junchao Zhang <[email protected]> Date: Mon Jul 14 10:51:47 2014 -0500 Added assertion to protect cvars of type MPI_CHAR Make sure user buf wont overflow cvar which is a string Signed-off-by: Sangmin Seo <[email protected]> diff --git a/src/mpi_t/cvar_write.c b/src/mpi_t/cvar_write.c index 519f11f..b88959e 100644 --- a/src/mpi_t/cvar_write.c +++ b/src/mpi_t/cvar_write.c @@ -71,6 +71,7 @@ int MPIR_T_cvar_write_impl(MPI_T_cvar_handle handle, void *buf) ((double *)addr)[i] = ((double *)buf)[i]; break; case MPI_CHAR: + MPIU_Assert(count > strlen(buf)); /* Make sure buf will not overflow this cvar */ MPIU_Strncpy(addr, buf, count); break; default: http://git.mpich.org/mpich.git/commitdiff/1b016bb2d7463eb884e1a9dc478fd596b7... commit 1b016bb2d7463eb884e1a9dc478fd596b7303743 Author: Junchao Zhang <[email protected]> Date: Mon Jul 14 10:43:22 2014 -0500 Set MPIR_CVAR_MAX_STRLEN to a smaller value The old value (4096) was arbitrarily chosen. To save memory and to make cvar tests cover the MPI_CHAR case easily, we set it to a smaller value, which is still big enough to hold reasonable cvar strings. Signed-off-by: Sangmin Seo <[email protected]> diff --git a/maint/extractcvars.in b/maint/extractcvars.in index e95e393..bb2eca3 100755 --- a/maint/extractcvars.in +++ b/maint/extractcvars.in @@ -173,7 +173,7 @@ print OUTPUT_H <<EOT; #define ${ns}_assert MPIU_Assert /* Arbitrary, simplifies interaction with external interfaces like MPI_T_ */ -#define ${uc_ns}_MAX_STRLEN (4096) +#define ${uc_ns}_MAX_STRLEN (384) #endif /* $hdr_guard */ EOT ----------------------------------------------------------------------- Summary of changes: maint/extractcvars.in | 2 +- src/env/mpivars.c | 4 ++-- src/mpi_t/cvar_write.c | 1 + src/mpi_t/mpit.c | 14 +++++++++++++- src/mpi_t/mpit_finalize.c | 1 + 5 files changed, 18 insertions(+), 4 deletions(-) hooks/post-receive -- MPICH primary repository
participants (1)
-
noreply@mpich.org