Skip to content

Commit 0831874

Browse files
Merge pull request #206 from mesutoezdil/fix/snprintf-for-string-ops
replace strcpy/strcat with snprintf in hook and memory limit
2 parents 762037d + 243b9be commit 0831874

2 files changed

Lines changed: 11 additions & 24 deletions

File tree

src/cuda/hook.c

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
#include "include/libcuda_hook.h"
1+
#include <stdio.h>
22
#include <string.h>
3+
#include "include/libcuda_hook.h"
34
#include "include/libvgpu.h"
45
#include "include/multi_func_hook.h"
56

@@ -269,8 +270,7 @@ void load_cuda_libraries() {
269270
cuda_library_entry[i].fn_ptr=real_dlsym(RTLD_NEXT,cuda_library_entry[i].name);
270271
if (!cuda_library_entry[i].fn_ptr){
271272
LOG_INFO("can't find function %s in %s", cuda_library_entry[i].name,cuda_filename);
272-
memset(tmpfunc,0,500);
273-
strcpy(tmpfunc,cuda_library_entry[i].name);
273+
snprintf(tmpfunc, sizeof(tmpfunc), "%s", cuda_library_entry[i].name);
274274
while (prior_function(tmpfunc)) {
275275
cuda_library_entry[i].fn_ptr=real_dlsym(RTLD_NEXT,tmpfunc);
276276
if (cuda_library_entry[i].fn_ptr) {
@@ -321,22 +321,13 @@ void *find_symbols_in_table(const char *symbol) {
321321
if (strncmp(symbol, "cuGraph", 7) == 0) {
322322
return NULL;
323323
}
324-
strcpy(symbol_v,symbol);
325-
strcat(symbol_v,"_v3");
326-
pfn = __dlsym_hook_section(NULL,symbol_v);
327-
if (pfn!=NULL) {
324+
snprintf(symbol_v, sizeof(symbol_v), "%s_v3", symbol);
325+
if ((pfn = __dlsym_hook_section(NULL, symbol_v)) != NULL)
328326
return pfn;
329-
}
330327
symbol_v[strlen(symbol_v)-1]='2';
331-
pfn = __dlsym_hook_section(NULL,symbol_v);
332-
if (pfn!=NULL) {
328+
if ((pfn = __dlsym_hook_section(NULL, symbol_v)) != NULL)
333329
return pfn;
334-
}
335-
pfn = __dlsym_hook_section(NULL,symbol);
336-
if (pfn!=NULL) {
337-
return pfn;
338-
}
339-
return NULL;
330+
return __dlsym_hook_section(NULL, symbol);
340331
}
341332

342333
void *find_symbols_in_table_by_cudaversion(const char *symbol,int cudaVersion) {

src/multiprocess/multiprocess_memory_limit.c

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,8 @@ void do_init_device_memory_limits(uint64_t* arr, int len) {
177177
size_t fallback_limit = get_limit_from_env(CUDA_DEVICE_MEMORY_LIMIT);
178178
int i;
179179
for (i = 0; i < len; ++i) {
180-
char env_name[CUDA_DEVICE_MEMORY_LIMIT_KEY_LENGTH] = CUDA_DEVICE_MEMORY_LIMIT;
181-
char index_name[8];
182-
snprintf(index_name, 8, "_%d", i);
183-
strcat(env_name, index_name);
180+
char env_name[CUDA_DEVICE_MEMORY_LIMIT_KEY_LENGTH];
181+
snprintf(env_name, sizeof(env_name), "%s_%d", CUDA_DEVICE_MEMORY_LIMIT, i);
184182
size_t cur_limit = get_limit_from_env(env_name);
185183
if (cur_limit > 0) {
186184
arr[i] = cur_limit;
@@ -197,10 +195,8 @@ void do_init_device_sm_limits(uint64_t *arr, int len) {
197195
if (fallback_limit == 0) fallback_limit = 100;
198196
int i;
199197
for (i = 0; i < len; ++i) {
200-
char env_name[CUDA_DEVICE_SM_LIMIT_KEY_LENGTH] = CUDA_DEVICE_SM_LIMIT;
201-
char index_name[8];
202-
snprintf(index_name, 8, "_%d", i);
203-
strcat(env_name, index_name);
198+
char env_name[CUDA_DEVICE_SM_LIMIT_KEY_LENGTH];
199+
snprintf(env_name, sizeof(env_name), "%s_%d", CUDA_DEVICE_SM_LIMIT, i);
204200
size_t cur_limit = get_limit_from_env(env_name);
205201
if (cur_limit > 0) {
206202
arr[i] = cur_limit;

0 commit comments

Comments
 (0)