Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:16.0:FactoryCandidates
mvapich3
pass-correct-size-to-snprintf.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File pass-correct-size-to-snprintf.patch of Package mvapich3
commit 8a3405cf8d4e5a95bc46a7c518c1fd2809cf5417 Author: Nicolas Morey <nmorey@suse.com> Date: Fri Nov 10 10:59:04 2023 +0100 pass correct size to snprintf Fix potential buffer overflows (required to make 'sundials' testsuite pass) Signed-off-by: Nicolas Morey <nmorey@suse.com> diff --git src/mpid/ch3/channels/common/src/affinity/hwloc_bind.c src/mpid/ch3/channels/common/src/affinity/hwloc_bind.c index 45a31c7ab228..fd4e1d92f1bf 100644 --- src/mpid/ch3/channels/common/src/affinity/hwloc_bind.c +++ src/mpid/ch3/channels/common/src/affinity/hwloc_bind.c @@ -2245,7 +2245,7 @@ int smpi_identify_free_cores(hwloc_cpuset_t *sock_cpuset, for (i = 0; i < g_smpi.num_local_nodes; ++i) { hwloc_bitmap_clr(*free_sock_cpuset, local_core_ids[i]); } - hwloc_bitmap_snprintf(cpu_str, 128, *free_sock_cpuset); + hwloc_bitmap_snprintf(cpu_str, sizeof(cpu_str), *free_sock_cpuset); PRINT_DEBUG(DEBUG_INIT_verbose, "Free sock_cpuset = %s\n", cpu_str); } @@ -3386,12 +3386,12 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, for (i = 0; i < local_procs; i++) { curr = count; for (k = 0; k < num_app_threads; k++) { - j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,", + j += snprintf(mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map[curr]); curr = (curr + 1) % num_pu; } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); count = (count + hw_threads_per_core) % num_pu; } } else if (mvp_hybrid_binding_policy == HYBRID_LINEAR) { @@ -3400,7 +3400,7 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, * physical resources */ for (i = 0; i < local_procs; i++) { for (k = 0; k < num_app_threads; k++) { - j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,", + j += snprintf(mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map[curr]); curr = ((curr + hw_threads_per_core) >= num_pu) ? @@ -3408,7 +3408,7 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, (curr + hw_threads_per_core) % num_pu; } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); } } else if (mvp_hybrid_binding_policy == HYBRID_SPREAD) { #if defined(CHANNEL_MRAIL) @@ -3432,12 +3432,12 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, for (k = curr; k < curr + chunk; k++) { for (l = 0; l < hw_threads_per_core; l++) { j += - snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,", + snprintf(mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map[k * hw_threads_per_core + l]); } } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); curr = (curr + chunk) % size; } } else { @@ -3454,11 +3454,11 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, for (k = curr; k < curr + ranks_per_sock; k++) { for (l = 0; l < hw_threads_per_core; l++) { j += - snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,", + snprintf(mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map[k * hw_threads_per_core + l]); } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); } curr = (curr + ((num_pu_per_socket / hw_threads_per_core) * chunk)) % @@ -3470,12 +3470,12 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, * socket followed by second secket */ for (i = 0; i < local_procs; i++) { for (l = 0; l < num_app_threads; l++) { - j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,", + j += snprintf(mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map[k]); k = (k + hw_threads_per_core) % size; } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); } } else if (mvp_hybrid_binding_policy == HYBRID_SCATTER) { #if defined(CHANNEL_MRAIL) @@ -3495,11 +3495,11 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, } for (i = 0; i < local_procs; i++) { for (l = 0; l < num_app_threads; l++) { - j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,", + j += snprintf(mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map[node_base_pu + node_offset + l]); } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); node_base_pu = (node_base_pu + num_pu_per_socket) % size; /* * when wrapping around to the first socket, advance the offset @@ -3541,11 +3541,11 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, for (i = 0; i < local_procs; i++) { for (l = 0; l < num_app_threads; l++) { j += snprintf( - mapping + j, _POSIX2_LINE_MAX, "%d,", + mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map_per_numa[node_base_pu + node_offset + l]); } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); node_base_pu = (node_base_pu + num_pu_per_numanode) % size; /* * when wrapping around to the first numa, advance the offset diff --git src/mpid/ch4/netmod/mvp/hwloc_bind.c src/mpid/ch4/netmod/mvp/hwloc_bind.c index 44e867b6b19f..4440d4739dc0 100644 --- src/mpid/ch4/netmod/mvp/hwloc_bind.c +++ src/mpid/ch4/netmod/mvp/hwloc_bind.c @@ -2145,7 +2145,7 @@ int smpi_identify_free_cores(hwloc_cpuset_t *sock_cpuset, for (i = 0; i < mvp_smp_info.num_local_nodes; ++i) { hwloc_bitmap_clr(*free_sock_cpuset, local_core_ids[i]); } - hwloc_bitmap_snprintf(cpu_str, 128, *free_sock_cpuset); + hwloc_bitmap_snprintf(cpu_str, sizeof(cpu_str), *free_sock_cpuset); PRINT_DEBUG(DEBUG_INIT_verbose, "Free sock_cpuset = %s\n", cpu_str); } @@ -3273,7 +3273,7 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, /* one app thread or enough phsyical cores for all threads */ for (i = 0; i < local_procs; i++) { for (k = 0; k < num_app_threads; k++) { - j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,", + j += snprintf(mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map[curr]); curr = @@ -3282,7 +3282,7 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, (curr + hw_threads_per_core) % num_pu; } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); } } else { /* @@ -3292,12 +3292,12 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, for (i = 0; i < local_procs; i++) { curr = count; for (k = 0; k < num_app_threads; k++) { - j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,", + j += snprintf(mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map[curr]); curr = (curr + 1) % num_pu; } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); count = (count + hw_threads_per_core) % num_pu; } } @@ -3326,12 +3326,12 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, for (i = 0; i < local_procs; i++) { curr = count; for (k = 0; k < num_app_threads; k++) { - j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,", + j += snprintf(mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map[curr]); curr = (curr + 1) % num_pu; } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); count = (count + hw_threads_per_core) % num_pu; } break; @@ -3359,12 +3359,12 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, for (k = curr; k < curr + chunk; k++) { for (l = 0; l < hw_threads_per_core; l++) { j += snprintf( - mapping + j, _POSIX2_LINE_MAX, "%d,", + mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map[k * hw_threads_per_core + l]); } } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); curr = (curr + chunk) % size; } } else { @@ -3381,11 +3381,11 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, for (k = curr; k < curr + ranks_per_sock; k++) { for (l = 0; l < hw_threads_per_core; l++) { j += snprintf( - mapping + j, _POSIX2_LINE_MAX, "%d,", + mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map[k * hw_threads_per_core + l]); } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); } curr = (curr + ((num_pu_per_socket / hw_threads_per_core) * chunk)) % @@ -3398,12 +3398,12 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, * first socket followed by second secket. */ for (i = 0; i < local_procs; i++) { for (l = 0; l < num_app_threads; l++) { - j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,", + j += snprintf(mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map[k]); k = (k + hw_threads_per_core) % size; } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); } break; case MVP_HYBRID_BINDING_POLICY_SCATTER: @@ -3425,11 +3425,11 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, } for (i = 0; i < local_procs; i++) { for (l = 0; l < num_app_threads; l++) { - j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,", + j += snprintf(mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map[node_base_pu + node_offset + l]); } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); node_base_pu = (node_base_pu + num_pu_per_socket) % size; /* * when wrapping around to the first socket, advance the offset @@ -3468,11 +3468,11 @@ static int mvp_generate_implicit_cpu_mapping(int local_procs, * domains in round-robin fashion. */ for (i = 0; i < local_procs; i++) { for (l = 0; l < num_app_threads; l++) { - j += snprintf(mapping + j, _POSIX2_LINE_MAX, "%d,", + j += snprintf(mapping + j, sizeof(mapping)-j, "%d,", mvp_core_map[node_base_pu + node_offset + l]); } mapping[--j] = '\0'; - j += snprintf(mapping + j, _POSIX2_LINE_MAX, ":"); + j += snprintf(mapping + j, sizeof(mapping)-j, ":"); node_base_pu = (node_base_pu + num_pu_per_numanode) % size; /* * when wrapping around to the first numa, advance the offset
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor