core files: replace sprintf with snprintf

This commit is contained in:
Richard Berger
2024-07-13 15:33:56 -06:00
parent 993a7cce54
commit 58513320d3
8 changed files with 53 additions and 44 deletions

View File

@ -674,7 +674,9 @@ int DumpAtom::convert_image(int n, double *mybuf)
memory->grow(sbuf,maxsbuf,"dump:sbuf");
}
offset += sprintf(&sbuf[offset],format,
offset += snprintf(&sbuf[offset],
maxsbuf - offset,
format,
static_cast<tagint> (mybuf[m]),
static_cast<int> (mybuf[m+1]),
mybuf[m+2],mybuf[m+3],mybuf[m+4],
@ -700,7 +702,9 @@ int DumpAtom::convert_noimage(int n, double *mybuf)
memory->grow(sbuf,maxsbuf,"dump:sbuf");
}
offset += sprintf(&sbuf[offset],format,
offset += snprintf(&sbuf[offset],
maxsbuf - offset,
format,
static_cast<tagint> (mybuf[m]),
static_cast<int> (mybuf[m+1]),
mybuf[m+2],mybuf[m+3],mybuf[m+4]);

View File

@ -166,23 +166,24 @@ int DumpCFG::convert_string(int n, double *mybuf)
}
for (j = 0; j < size_one; j++) {
const auto maxsize = maxsbuf - offset;
if (j == 0) {
offset += sprintf(&sbuf[offset],"%f \n",mybuf[m]);
offset += snprintf(&sbuf[offset],maxsize,"%f \n",mybuf[m]);
} else if (j == 1) {
offset += sprintf(&sbuf[offset],"%s \n",typenames[(int) mybuf[m]]);
offset += snprintf(&sbuf[offset],maxsize,"%s \n",typenames[(int) mybuf[m]]);
} else if (j >= 2) {
if (vtype[j] == Dump::INT)
offset += sprintf(&sbuf[offset],vformat[j],static_cast<int> (mybuf[m]));
offset += snprintf(&sbuf[offset],maxsize,vformat[j],static_cast<int> (mybuf[m]));
else if (vtype[j] == Dump::DOUBLE)
offset += sprintf(&sbuf[offset],vformat[j],mybuf[m]);
offset += snprintf(&sbuf[offset],maxsize,vformat[j],mybuf[m]);
else if (vtype[j] == Dump::STRING)
offset += sprintf(&sbuf[offset],vformat[j],typenames[(int) mybuf[m]]);
offset += snprintf(&sbuf[offset],maxsize,vformat[j],typenames[(int) mybuf[m]]);
else if (vtype[j] == Dump::BIGINT)
offset += sprintf(&sbuf[offset],vformat[j],static_cast<bigint> (mybuf[m]));
offset += snprintf(&sbuf[offset],maxsize,vformat[j],static_cast<bigint> (mybuf[m]));
}
m++;
}
offset += sprintf(&sbuf[offset],"\n");
offset += snprintf(&sbuf[offset],maxsbuf-offset,"\n");
}
} else if (unwrapflag == 1) {
@ -195,29 +196,30 @@ int DumpCFG::convert_string(int n, double *mybuf)
}
for (j = 0; j < size_one; j++) {
const auto maxsize = maxsbuf - offset;
if (j == 0) {
offset += sprintf(&sbuf[offset],"%f \n",mybuf[m]);
offset += snprintf(&sbuf[offset],maxsize,"%f \n",mybuf[m]);
} else if (j == 1) {
offset += sprintf(&sbuf[offset],"%s \n",typenames[(int) mybuf[m]]);
offset += snprintf(&sbuf[offset],maxsize,"%s \n",typenames[(int) mybuf[m]]);
} else if (j >= 2 && j <= 4) {
unwrap_coord = (mybuf[m] - 0.5)/UNWRAPEXPAND + 0.5;
offset += sprintf(&sbuf[offset],vformat[j],unwrap_coord);
offset += snprintf(&sbuf[offset],maxsize,vformat[j],unwrap_coord);
} else if (j >= 5) {
if (vtype[j] == Dump::INT)
offset +=
sprintf(&sbuf[offset],vformat[j],static_cast<int> (mybuf[m]));
snprintf(&sbuf[offset],maxsize,vformat[j],static_cast<int> (mybuf[m]));
else if (vtype[j] == Dump::DOUBLE)
offset += sprintf(&sbuf[offset],vformat[j],mybuf[m]);
offset += snprintf(&sbuf[offset],maxsize,vformat[j],mybuf[m]);
else if (vtype[j] == Dump::STRING)
offset +=
sprintf(&sbuf[offset],vformat[j],typenames[(int) mybuf[m]]);
snprintf(&sbuf[offset],maxsize,vformat[j],typenames[(int) mybuf[m]]);
else if (vtype[j] == Dump::BIGINT)
offset +=
sprintf(&sbuf[offset],vformat[j],static_cast<bigint> (mybuf[m]));
snprintf(&sbuf[offset],maxsize,vformat[j],static_cast<bigint> (mybuf[m]));
}
m++;
}
offset += sprintf(&sbuf[offset],"\n");
offset += snprintf(&sbuf[offset],maxsbuf - offset,"\n");
}
}

View File

@ -1358,20 +1358,21 @@ int DumpCustom::convert_string(int n, double *mybuf)
}
for (j = 0; j < nfield; j++) {
const auto maxsize = maxsbuf - offset;
if (vtype[j] == Dump::INT)
offset += sprintf(&sbuf[offset],vformat[j],static_cast<int> (mybuf[m]));
offset += snprintf(&sbuf[offset],maxsize,vformat[j],static_cast<int> (mybuf[m]));
else if (vtype[j] == Dump::DOUBLE)
offset += sprintf(&sbuf[offset],vformat[j],mybuf[m]);
offset += snprintf(&sbuf[offset],maxsize,vformat[j],mybuf[m]);
else if (vtype[j] == Dump::STRING)
offset += sprintf(&sbuf[offset],vformat[j],typenames[(int) mybuf[m]]);
offset += snprintf(&sbuf[offset],maxsize,vformat[j],typenames[(int) mybuf[m]]);
else if (vtype[j] == Dump::STRING2)
offset += sprintf(&sbuf[offset],vformat[j],atom->lmap->typelabel[(int) mybuf[m]-1].c_str());
offset += snprintf(&sbuf[offset],maxsize,vformat[j],atom->lmap->typelabel[(int) mybuf[m]-1].c_str());
else if (vtype[j] == Dump::BIGINT)
offset += sprintf(&sbuf[offset],vformat[j],
offset += snprintf(&sbuf[offset],maxsize,vformat[j],
static_cast<bigint> (mybuf[m]));
m++;
}
offset += sprintf(&sbuf[offset],"\n");
offset += snprintf(&sbuf[offset],maxsbuf-offset,"\n");
}
return offset;
@ -1909,9 +1910,9 @@ int DumpCustom::modify_param(int narg, char **arg)
if (ptr == nullptr)
error->all(FLERR,"Dump_modify int format does not contain d character");
char str[8];
sprintf(str,"%s",BIGINT_FORMAT);
snprintf(str,8,"%s",BIGINT_FORMAT);
*ptr = '\0';
sprintf(format_bigint_user,"%s%s%s",format_int_user,&str[1],ptr+1);
snprintf(format_bigint_user,n,"%s%s%s",format_int_user,&str[1],ptr+1);
*ptr = 'd';
} else if (strcmp(arg[1],"float") == 0) {

View File

@ -590,15 +590,16 @@ int DumpGrid::convert_string(int n, double *mybuf)
}
for (j = 0; j < nfield; j++) {
const auto maxsize = maxsbuf - offset;
if (vtype[j] == Dump::INT)
offset += sprintf(&sbuf[offset],vformat[j],static_cast<int> (mybuf[m]));
offset += snprintf(&sbuf[offset],maxsize,vformat[j],static_cast<int> (mybuf[m]));
else if (vtype[j] == Dump::DOUBLE)
offset += sprintf(&sbuf[offset],vformat[j],mybuf[m]);
offset += snprintf(&sbuf[offset],maxsize,vformat[j],mybuf[m]);
else if (vtype[j] == Dump::BIGINT)
offset += sprintf(&sbuf[offset],vformat[j], static_cast<bigint> (mybuf[m]));
offset += snprintf(&sbuf[offset],maxsize,vformat[j], static_cast<bigint> (mybuf[m]));
m++;
}
offset += sprintf(&sbuf[offset],"\n");
offset += snprintf(&sbuf[offset],maxsbuf-offset,"\n");
}
return offset;
@ -776,9 +777,9 @@ int DumpGrid::modify_param(int narg, char **arg)
if (ptr == nullptr)
error->all(FLERR,"Dump_modify int format does not contain d character");
char str[8];
sprintf(str,"%s",BIGINT_FORMAT);
snprintf(str,8,"%s",BIGINT_FORMAT);
*ptr = '\0';
sprintf(format_bigint_user,"%s%s%s",format_int_user,&str[1],ptr+1);
snprintf(format_bigint_user,n,"%s%s%s",format_int_user,&str[1],ptr+1);
*ptr = 'd';
} else if (strcmp(arg[1],"float") == 0) {

View File

@ -264,9 +264,9 @@ int DumpLocal::modify_param(int narg, char **arg)
if (ptr == nullptr)
error->all(FLERR, "Dump_modify int format does not contain d character");
char str[8];
sprintf(str,"%s",BIGINT_FORMAT);
snprintf(str,8,"%s",BIGINT_FORMAT);
*ptr = '\0';
sprintf(format_bigint_user,"%s%s%s",format_int_user,&str[1],ptr+1);
snprintf(format_bigint_user,n,"%s%s%s",format_int_user,&str[1],ptr+1);
*ptr = 'd';
} else if (strcmp(arg[1],"float") == 0) {
@ -387,17 +387,18 @@ int DumpLocal::convert_string(int n, double *mybuf)
}
for (j = 0; j < size_one; j++) {
const auto maxsize = maxsbuf - offset;
if (vtype[j] == Dump::INT)
offset += sprintf(&sbuf[offset],vformat[j],static_cast<int> (mybuf[m]));
offset += snprintf(&sbuf[offset],maxsize,vformat[j],static_cast<int> (mybuf[m]));
else if (vtype[j] == Dump::DOUBLE)
offset += sprintf(&sbuf[offset],vformat[j],mybuf[m]);
offset += snprintf(&sbuf[offset],maxsize,vformat[j],mybuf[m]);
else if (vtype[j] == Dump::BIGINT)
offset += sprintf(&sbuf[offset],vformat[j],static_cast<bigint> (mybuf[m]));
offset += snprintf(&sbuf[offset],maxsize,vformat[j],static_cast<bigint> (mybuf[m]));
else
offset += sprintf(&sbuf[offset],vformat[j],mybuf[m]);
offset += snprintf(&sbuf[offset],maxsize,vformat[j],mybuf[m]);
m++;
}
offset += sprintf(&sbuf[offset],"\n");
offset += snprintf(&sbuf[offset],maxsbuf-offset,"\n");
}
return offset;

View File

@ -85,7 +85,7 @@ void DumpXYZ::init_style()
typenames = new char*[ntypes+1];
for (int itype = 1; itype <= ntypes; itype++) {
typenames[itype] = new char[12];
sprintf(typenames[itype],"%d",itype);
snprintf(typenames[itype],12,"%d",itype);
}
}
@ -206,7 +206,7 @@ int DumpXYZ::convert_string(int n, double *mybuf)
memory->grow(sbuf,maxsbuf,"dump:sbuf");
}
offset += sprintf(&sbuf[offset], format, typenames[static_cast<int> (mybuf[m+1])],
offset += snprintf(&sbuf[offset], maxsbuf-offset, format, typenames[static_cast<int> (mybuf[m+1])],
mybuf[m+2], mybuf[m+3], mybuf[m+4]);
m += size_one;
}

View File

@ -1025,7 +1025,7 @@ char *Variable::retrieve(const char *name)
error->all(FLERR, "Variable {}: format variable {} has incompatible style",
names[ivar],data[ivar][0]);
double answer = compute_equal(jvar);
sprintf(data[ivar][2],data[ivar][1],answer);
snprintf(data[ivar][2],VALUELENGTH,data[ivar][1],answer);
str = data[ivar][2];
} else if (style[ivar] == GETENV) {

View File

@ -121,7 +121,7 @@ TEST_F(LAMMPS_extract_variable, loop_pad)
char str[10];
char *fstr;
for (i = 1; i <= 10; i++) {
std::sprintf(str, "%02d", i);
std::snprintf(str, 10, "%02d", i);
fstr = f_lammps_extract_variable_loop_pad();
EXPECT_STREQ(fstr, str);
std::free(fstr);
@ -170,7 +170,7 @@ TEST_F(LAMMPS_extract_variable, format)
char str[16];
char *fstr;
for (i = 1; i <= 10; i++) {
std::sprintf(str, "%.6G", std::exp(i));
std::snprintf(str, 16, "%.6G", std::exp(i));
fstr = f_lammps_extract_variable_format();
EXPECT_STREQ(fstr, str);
std::free(fstr);
@ -185,7 +185,7 @@ TEST_F(LAMMPS_extract_variable, format_pad)
char str[16];
char *fstr;
for (i = 1; i <= 10; i++) {
std::sprintf(str, "%08.6G", std::exp(i));
std::snprintf(str, 16, "%08.6G", std::exp(i));
fstr = f_lammps_extract_variable_format_pad();
EXPECT_STREQ(fstr, str);
std::free(fstr);