ACK: [PATCH 4/5] lib: fwts_olog: ensure buffer is '\0' terminated per read, minor cleanups
Alex Hung
alex.hung at canonical.com
Wed Apr 6 02:44:02 UTC 2016
On 2016-04-03 01:52 AM, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> CoverityScan warned that the buffer should be terminated with a '\0' on each
> read, so fix this. Also, clean up the code a bit (minor white space changes)
> and ensure read/write sizes use size_t and not long.
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
> src/lib/src/fwts_olog.c | 28 +++++++++++++++-------------
> 1 file changed, 15 insertions(+), 13 deletions(-)
>
> diff --git a/src/lib/src/fwts_olog.c b/src/lib/src/fwts_olog.c
> index a685d70..132efc4 100644
> --- a/src/lib/src/fwts_olog.c
> +++ b/src/lib/src/fwts_olog.c
> @@ -47,12 +47,12 @@ static const char msglog_outfile[] = "/var/log/opal_msglog";
> */
> fwts_list *fwts_olog_read(fwts_framework *fw)
> {
> - long len;
> fwts_list *list;
> char *buffer;
> struct stat filestat;
> - long read_actual=0;
> - long write_actual=0;
> + long len;
> + size_t read_actual = 0;
> + size_t write_actual = 0;
> FILE* msglog_f;
> FILE* msglog_outfile_f;
>
> @@ -62,7 +62,7 @@ fwts_list *fwts_olog_read(fwts_framework *fw)
> * and not just for PPC. We don't use compiler flags since we want
> * to run this as a custom job cross platform
> */
> - if (stat(msglog,&filestat)) {
> + if (stat(msglog, &filestat)) {
> /*
> * stat fails so not PPC with OPAL msglog and
> * no -o OLOG sent
> @@ -88,7 +88,7 @@ fwts_list *fwts_olog_read(fwts_framework *fw)
> goto olog_cleanup_msglog;
> }
>
> - if ((buffer = calloc(1,len+1)) == NULL) {
> + if ((buffer = calloc(1, len + 1)) == NULL) {
> goto olog_cleanup_msglog;
> }
>
> @@ -98,11 +98,13 @@ fwts_list *fwts_olog_read(fwts_framework *fw)
> goto olog_cleanup_msglog;
> }
>
> - while (!feof (msglog_f)) {
> - read_actual = fread(buffer,1,len,msglog_f);
> - if (read_actual == len) {
> + while (!feof(msglog_f)) {
> + read_actual = fread(buffer, 1, len, msglog_f);
> + buffer[read_actual] = '\0';
> +
> + if (read_actual == (size_t)len) {
> write_actual = fwrite(buffer, 1, len, msglog_outfile_f);
> - if (!(write_actual == len)) {
> + if (!(write_actual == (size_t)len)) {
> free(buffer);
> goto olog_cleanup_common;
> }
> @@ -133,20 +135,20 @@ fwts_list *fwts_olog_read(fwts_framework *fw)
> if (!(msglog_outfile_f = fopen(msglog_outfile, "r")))
> goto olog_common_exit;
>
> - if (fseek(msglog_outfile_f,0,SEEK_END))
> + if (fseek(msglog_outfile_f, 0, SEEK_END))
> goto olog_cleanup_msglog_outfile;
>
> if ((len = ftell(msglog_outfile_f)) == -1)
> goto olog_cleanup_msglog_outfile;
>
> - if ((fseek(msglog_outfile_f,0,SEEK_SET)) != 0)
> + if ((fseek(msglog_outfile_f, 0, SEEK_SET)) != 0)
> goto olog_cleanup_msglog_outfile;
>
> if ((buffer = calloc(1, len+1)) == NULL)
> goto olog_cleanup_msglog_outfile;
>
> - read_actual = fread(buffer,1,len,msglog_outfile_f);
> - if (read_actual == len) {
> + read_actual = fread(buffer, 1, len, msglog_outfile_f);
> + if (read_actual == (size_t)len) {
> list = fwts_list_from_text(buffer);
> free(buffer);
> (void)fclose(msglog_outfile_f);
>
Acked-by: Alex Hung <alex.hung at canonical.com>
More information about the fwts-devel
mailing list