X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=init.c;h=a0d4f8c797f092378ec80a067c0aa1afed15e416;hp=dc563fd212adcc6fb2b561193fb283c33369603f;hb=17a2be5945b12959ad3066b7d75432577d29ae82;hpb=c95f94046bc8c659b0fab718bd4029fadc87be5a diff --git a/init.c b/init.c index dc563fd2..a0d4f8c7 100644 --- a/init.c +++ b/init.c @@ -1036,8 +1036,14 @@ static char *make_filename(char *buf, size_t buf_size,struct thread_options *o, ret = snprintf(dst, dst_left, "%s", jobname); if (ret < 0) break; - dst += ret; - dst_left -= ret; + else if (ret > dst_left) { + log_err("fio: truncated filename\n"); + dst += dst_left; + dst_left = 0; + } else { + dst += ret; + dst_left -= ret; + } break; } case FPRE_JOBNUM: { @@ -1046,8 +1052,14 @@ static char *make_filename(char *buf, size_t buf_size,struct thread_options *o, ret = snprintf(dst, dst_left, "%d", jobnum); if (ret < 0) break; - dst += ret; - dst_left -= ret; + else if (ret > dst_left) { + log_err("fio: truncated filename\n"); + dst += dst_left; + dst_left = 0; + } else { + dst += ret; + dst_left -= ret; + } break; } case FPRE_FILENUM: { @@ -1056,8 +1068,14 @@ static char *make_filename(char *buf, size_t buf_size,struct thread_options *o, ret = snprintf(dst, dst_left, "%d", filenum); if (ret < 0) break; - dst += ret; - dst_left -= ret; + else if (ret > dst_left) { + log_err("fio: truncated filename\n"); + dst += dst_left; + dst_left = 0; + } else { + dst += ret; + dst_left -= ret; + } break; } default: