From 1f4d3e7194a3e52be8bfe97dff19b02ec4506ca2 Mon Sep 17 00:00:00 2001 From: Stanislav Shwartsman Date: Sat, 3 Jan 2015 13:53:52 +0000 Subject: [PATCH] fixed problems found by cppcheck tool (patch by Maxim Derbasov) --- bochs/bx_debug/symbols.cc | 2 ++ bochs/iodev/hdimage/vvfat.cc | 7 ++++--- bochs/iodev/network/netmod.cc | 2 ++ bochs/iodev/sound/sb16.cc | 6 +++++- bochs/load32bitOShack.cc | 1 + bochs/logio.cc | 3 ++- bochs/ltdl.c | 2 +- bochs/misc/bximage.cc | 3 +-- bochs/misc/spoolpipe.c | 4 ++-- 9 files changed, 20 insertions(+), 10 deletions(-) diff --git a/bochs/bx_debug/symbols.cc b/bochs/bx_debug/symbols.cc index ac2036295..e35ca3b7b 100644 --- a/bochs/bx_debug/symbols.cc +++ b/bochs/bx_debug/symbols.cc @@ -316,6 +316,7 @@ int bx_dbg_symbol_command(const char* filename, bx_bool global, Bit32u offset) dbg_printf("%s:%d: missing symbol name\n", file.name, line_num); else dbg_printf("%s:%d: syntax error near '%s'\n", file.name, line_num, sym_name); + fclose(fp); return -1; } ++sym_name; @@ -333,6 +334,7 @@ int bx_dbg_symbol_command(const char* filename, bx_bool global, Bit32u offset) } ++line_num; } + fclose(fp); return 0; } diff --git a/bochs/iodev/hdimage/vvfat.cc b/bochs/iodev/hdimage/vvfat.cc index d396e4869..d74342d3a 100644 --- a/bochs/iodev/hdimage/vvfat.cc +++ b/bochs/iodev/hdimage/vvfat.cc @@ -1096,8 +1096,8 @@ bx_bool vvfat_image_t::read_sector_from_file(const char *path, Bit8u *buffer, Bi return 0; int offset = sector * 0x200; if (::lseek(fd, offset, SEEK_SET) != offset) { - return 0; ::close(fd); + return 0; } int result = ::read(fd, buffer, 0x200); ::close(fd); @@ -1448,7 +1448,7 @@ bx_bool vvfat_image_t::write_file(const char *path, direntry_t *entry, bx_bool c int fd; Bit32u csize, fsize, fstart, cur, next, rsvd_clusters, bad_cluster; Bit64u offset; - Bit8u *buffer; + Bit8u *buffer = NULL; #ifndef WIN32 struct tm tv; struct utimbuf ut; @@ -1553,7 +1553,8 @@ bx_bool vvfat_image_t::write_file(const char *path, direntry_t *entry, bx_bool c CloseHandle(hFile); } #endif - + if(buffer) + free(buffer); return 1; } diff --git a/bochs/iodev/network/netmod.cc b/bochs/iodev/network/netmod.cc index 629eed07a..06a861e6f 100644 --- a/bochs/iodev/network/netmod.cc +++ b/bochs/iodev/network/netmod.cc @@ -798,6 +798,7 @@ int tftp_send_data(Bit8u *buffer, unsigned block_nr, tftp_session_t *s) } if (fseek(fp, (block_nr - 1) * s->blksize_val, SEEK_SET) < 0) { + fclose(fp); return tftp_send_error(buffer, 3, "Block not seekable", s); } @@ -991,6 +992,7 @@ int process_tftp(bx_devmodel_c *netdev, const Bit8u *data, unsigned data_len, Bi return tftp_send_error(reply, 2, "Access violation", s); } if (fseek(fp, (block_nr - 1) * TFTP_BUFFER_SIZE, SEEK_SET) < 0) { + fclose(fp); return tftp_send_error(reply, 3, "Block not seekable", s); } fwrite(reply, 1, tftp_len, fp); diff --git a/bochs/iodev/sound/sb16.cc b/bochs/iodev/sound/sb16.cc index 244b72379..0a324308a 100644 --- a/bochs/iodev/sound/sb16.cc +++ b/bochs/iodev/sound/sb16.cc @@ -3721,9 +3721,13 @@ bx_bool bx_sb16_buffer::puts(const char *data, ...) while (string[index] != 0) { if (put((Bit8u) string[index]) == 0) - return 0; // buffer full + { + free(string); + return 0; // buffer full + } index++; } + free(string); return 1; } diff --git a/bochs/load32bitOShack.cc b/bochs/load32bitOShack.cc index 81c3fed7e..9bc107796 100644 --- a/bochs/load32bitOShack.cc +++ b/bochs/load32bitOShack.cc @@ -65,6 +65,7 @@ void bx_load32bitOSimagehack(void) } if (feof(fp)) break; } + fclose(fp); } //if iolog file to load // Invoke proper hack depending on which OS image we're loading diff --git a/bochs/logio.cc b/bochs/logio.cc index d734bc2a1..32d38b2df 100644 --- a/bochs/logio.cc +++ b/bochs/logio.cc @@ -84,7 +84,7 @@ void iofunctions::remove_logfn(logfunc_t *fn) { assert(n_logfn > 0); int i = 0; - while ((fn != logfn_list[i]) && (i < n_logfn)) { + while ((i < n_logfn) && (fn != logfn_list[i])) { i++; }; if (i < n_logfn) { @@ -434,6 +434,7 @@ void logfunctions::panic(const char *fmt, ...) if (onoff[LOGLEV_PANIC] == ACT_FATAL) { va_start(ap, fmt); fatal(prefix, fmt, ap, 1); + va_end(ap); } } diff --git a/bochs/ltdl.c b/bochs/ltdl.c index bd6086ef3..22ba8302a 100644 --- a/bochs/ltdl.c +++ b/bochs/ltdl.c @@ -360,7 +360,7 @@ memmove (dest, src, size) dest[i] = src[i]; } else if (dest > src) - for (i = size -1; i >= 0; --i) + for (i = size -1; i < size; --i) { dest[i] = src[i]; } diff --git a/bochs/misc/bximage.cc b/bochs/misc/bximage.cc index 4dc284e83..ddc6e6368 100644 --- a/bochs/misc/bximage.cc +++ b/bochs/misc/bximage.cc @@ -514,8 +514,7 @@ void create_sparse_image(const char *filename, Bit64u size) Bit8u *padding = new Bit8u[padtopagesize]; memset(padding, 0, padtopagesize); - if (padding == NULL) - fatal("ERROR: The disk image is not complete - could not create padding!"); + if (bx_write_image(fd, sizesofar, padding, padtopagesize) != padtopagesize) { close(fd); fatal("ERROR: The disk image is not complete - could not write padding!"); diff --git a/bochs/misc/spoolpipe.c b/bochs/misc/spoolpipe.c index 0afa06393..6b44917ea 100644 --- a/bochs/misc/spoolpipe.c +++ b/bochs/misc/spoolpipe.c @@ -50,8 +50,8 @@ int infd, outfd; -unsigned int delay = 60; // default delay, in seconds -unsigned int count_down = 0; +int delay = 60; // default delay, in seconds +int count_down = 0; char buffer[BUF_SIZE]; ssize_t readcnt, writecnt;