Signed-off-by: Jens Axboe <axboe@fb.com>
-static void string_to_net(uint8_t *dst, const char *src)
+static void __string_to_net(uint8_t *dst, const char *src, size_t dst_size)
- if (src)
- strcpy((char *) dst, src);
- else
+ if (src) {
+ dst[dst_size - 1] = '\0';
+ strncpy((char *) dst, src, dst_size - 1);
+ } else
+#define string_to_net(dst, src) __string_to_net((dst), (src), sizeof(dst))
+
static void free_thread_options_to_cpu(struct thread_options *o)
{
free(o->description);
static void free_thread_options_to_cpu(struct thread_options *o)
{
free(o->description);
- fm = malloc(sizeof(*fm));
- strcpy(fm->__base, buf);
+ fm = calloc(1, sizeof(*fm));
+ strncpy(fm->__base, buf, sizeof(fm->__base) - 1);
fm->base = basename(fm->__base);
fm->key = sb.st_dev;
flist_add(&fm->list, &list);
fm->base = basename(fm->__base);
fm->key = sb.st_dev;
flist_add(&fm->list, &list);
-static char *make_filename(char *buf, struct thread_options *o,
+static char *make_filename(char *buf, size_t buf_size,struct thread_options *o,
const char *jobname, int jobnum, int filenum)
{
struct fpre_keyword *f;
const char *jobname, int jobnum, int filenum)
{
struct fpre_keyword *f;
for (f = &fpre_keywords[0]; f->keyword; f++)
f->strlen = strlen(f->keyword);
for (f = &fpre_keywords[0]; f->keyword; f++)
f->strlen = strlen(f->keyword);
- strcpy(buf, o->filename_format);
+ buf[buf_size - 1] = '\0';
+ strncpy(buf, o->filename_format, buf_size - 1);
+
memset(copy, 0, sizeof(copy));
for (f = &fpre_keywords[0]; f->keyword; f++) {
do {
memset(copy, 0, sizeof(copy));
for (f = &fpre_keywords[0]; f->keyword; f++) {
do {
if (post_start)
strncpy(dst, buf + post_start, dst_left);
if (post_start)
strncpy(dst, buf + post_start, dst_left);
+ strncpy(buf, copy, buf_size - 1);
add_file(td, jobname, job_add_num, 0);
else {
for (i = 0; i < o->nr_files; i++)
add_file(td, jobname, job_add_num, 0);
else {
for (i = 0; i < o->nr_files; i++)
- add_file(td, make_filename(fname, o, jobname, job_add_num, i), job_add_num, 0);
+ add_file(td, make_filename(fname, sizeof(fname), o, jobname, job_add_num, i), job_add_num, 0);
if (!td->error && td->o.continue_on_error &&
td->first_error) {
ts->error = td->first_error;
if (!td->error && td->o.continue_on_error &&
td->first_error) {
ts->error = td->first_error;
- strcpy(ts->verror, td->verror);
+ ts->verror[sizeof(ts->verror) - 1] = '\0';
+ strncpy(ts->verror, td->verror, sizeof(ts->verror) - 1);
} else if (td->error) {
ts->error = td->error;
} else if (td->error) {
ts->error = td->error;
- strcpy(ts->verror, td->verror);
+ ts->verror[sizeof(ts->verror) - 1] = '\0';
+ strncpy(ts->verror, td->verror, sizeof(ts->verror) - 1);