diff --git a/src/api/pmi.c b/src/api/pmi.c index 299c28115950b8974f674a4bcc63959c86dc1140..6e2f4a7b910d5cffdb2e3d8ac89d07bd13615e55 100644 --- a/src/api/pmi.c +++ b/src/api/pmi.c @@ -97,7 +97,6 @@ #include "src/api/slurm_pmi.h" #include "src/common/macros.h" -#include "src/common/strlcpy.h" #include "src/slurmd/slurmstepd/slurmstepd_job.h" #define KVS_STATE_LOCAL 0 @@ -913,7 +912,7 @@ static void _init_kvs( char kvsname[] ) kvs_recs[i].kvs_name = malloc(PMI_MAX_KVSNAME_LEN); if (!kvs_recs[i].kvs_name) pmi_nomem_error(__FILE__, __LINE__, "_init_kvs"); - strlcpy(kvs_recs[i].kvs_name, kvsname, PMI_MAX_KVSNAME_LEN); + strncpy(kvs_recs[i].kvs_name, kvsname, PMI_MAX_KVSNAME_LEN); kvs_recs[i].kvs_state = KVS_STATE_LOCAL; kvs_recs[i].kvs_cnt = 0; kvs_recs[i].kvs_inx = 0; @@ -1168,7 +1167,7 @@ static int _kvs_put( const char kvsname[], const char key[], const char value[], rc = PMI_FAIL; } else { rc = PMI_SUCCESS; - strlcpy(kvs_recs[i].kvs_values[j], value, + strncpy(kvs_recs[i].kvs_values[j], value, PMI_MAX_VAL_LEN); } goto fini; @@ -1202,9 +1201,9 @@ no_dup: rc = PMI_FAIL; } else { rc = PMI_SUCCESS; - strlcpy(kvs_recs[i].kvs_values[j], value, + strncpy(kvs_recs[i].kvs_values[j], value, PMI_MAX_VAL_LEN); - strlcpy(kvs_recs[i].kvs_keys[j], key, PMI_MAX_KEY_LEN); + strncpy(kvs_recs[i].kvs_keys[j], key, PMI_MAX_KEY_LEN); } goto fini; } @@ -1392,7 +1391,7 @@ int PMI_KVS_Get( const char kvsname[], const char key[], char value[], int lengt if (strlen(kvs_recs[i].kvs_values[j]) > (length-1)) rc = PMI_ERR_INVALID_LENGTH; else { - strlcpy(value, kvs_recs[i].kvs_values[j], + strncpy(value, kvs_recs[i].kvs_values[j], length); rc = PMI_SUCCESS; } @@ -1475,8 +1474,8 @@ int PMI_KVS_Iter_first(const char kvsname[], char key[], int key_len, char val[] if (kvs_recs[i].kvs_key_states[j] == KVS_KEY_STATE_DISABLED) continue; - strlcpy(key, kvs_recs[i].kvs_keys[j], key_len); - strlcpy(val, kvs_recs[i].kvs_values[j], val_len); + strncpy(key, kvs_recs[i].kvs_keys[j], key_len); + strncpy(val, kvs_recs[i].kvs_values[j], val_len); kvs_recs[i].kvs_inx = j; rc = PMI_SUCCESS; goto fini; @@ -1553,8 +1552,8 @@ int PMI_KVS_Iter_next(const char kvsname[], char key[], int key_len, if (kvs_recs[i].kvs_key_states[j] == KVS_KEY_STATE_DISABLED) continue; - strlcpy(key, kvs_recs[i].kvs_keys[j], key_len); - strlcpy(val, kvs_recs[i].kvs_values[j], val_len); + strncpy(key, kvs_recs[i].kvs_keys[j], key_len); + strncpy(val, kvs_recs[i].kvs_values[j], val_len); kvs_recs[i].kvs_inx = j; rc = PMI_SUCCESS; goto fini; @@ -1704,7 +1703,8 @@ int PMI_Parse_option(int num_args, char *args[], int *num_parsed, PMI_Free_keyvals(temp, s); return PMI_FAIL; } - strlcpy(temp[s].key, kp, len); + strncpy(temp[s].key, kp, len); + temp[s].key[len] = '\0'; if (!IsPmiKey(temp[s].key)) { free(temp[s].key); temp[s].key = NULL; @@ -1720,7 +1720,8 @@ int PMI_Parse_option(int num_args, char *args[], int *num_parsed, PMI_Free_keyvals(temp, s+1); return PMI_FAIL; } - strlcpy(temp[s].val, vp, len); + strncpy(temp[s].val, vp, len); + temp[s].val[len] = '\0'; s++; i++; // try next args cp = args[i]; @@ -1934,7 +1935,8 @@ int PMI_Get_options(char *str, int *length) optlen = strlen(pmi_opt_str); if (*length <= optlen) { - strlcpy(str, pmi_opt_str, *length); + strncpy(str, pmi_opt_str, *length-1); + str[*length-1] = '\0'; return PMI_ERR_NOMEM; } @@ -1948,7 +1950,8 @@ static int IsPmiKey(char * key) { if (pmi_debug) fprintf(stderr, "In: IsPmiKey\n"); - strlcpy(strh, key, 5); + strncpy(strh, key, 4); + strh[4]='\0'; if (!strcmp(strh, "PMI_") && (strlen(key) > 4)) { return 1; }