Message ID | 1384712392-10458-1-git-send-email-sw@weilnetz.de |
---|---|
State | Accepted |
Headers | show |
Please note that this patch fixes real bugs, namely wrong format strings. As far as I could see those bugs are only in code branches which handle rare error conditions, so maybe they only have a low priority. Nevertheless they can be fixed in QEMU 1.7. Do we need a pull request, or can it be applied directly? Stefan Am 17.11.2013 19:19, schrieb Stefan Weil: > gcc 4.8.2 reports this warning when extra warnings are enabled (-Wextra): > > CC qga/commands.o > qga/commands.c: In function ‘slog’: > qga/commands.c:28:5: error: > function might be possible candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format] > g_logv("syslog", G_LOG_LEVEL_INFO, fmt, ap); > ^ > > gcc 4.8.2 reports this warning when slog is declared with the > gnu_printf format attribute: > > qga/commands-posix.c: In function ‘qmp_guest_file_open’: > qga/commands-posix.c:404:5: warning: > format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int64_t’ [-Wformat=] > slog("guest-file-open, handle: %d", handle); > ^ > > On 32 bit hosts there are three more warnings which are also fixed here. > > Signed-off-by: Stefan Weil <sw@weilnetz.de> > --- > > v2: Fix three more wrong format strings for 32 bit hosts. > > qga/commands-posix.c | 8 ++++---- > qga/guest-agent-core.h | 2 +- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/qga/commands-posix.c b/qga/commands-posix.c > index 10682f5..8100bee 100644 > --- a/qga/commands-posix.c > +++ b/qga/commands-posix.c > @@ -401,7 +401,7 @@ int64_t qmp_guest_file_open(const char *path, bool has_mode, const char *mode, E > return -1; > } > > - slog("guest-file-open, handle: %d", handle); > + slog("guest-file-open, handle: %" PRId64, handle); > return handle; > } > > @@ -410,7 +410,7 @@ void qmp_guest_file_close(int64_t handle, Error **err) > GuestFileHandle *gfh = guest_file_handle_find(handle, err); > int ret; > > - slog("guest-file-close called, handle: %ld", handle); > + slog("guest-file-close called, handle: %" PRId64, handle); > if (!gfh) { > return; > } > @@ -451,7 +451,7 @@ struct GuestFileRead *qmp_guest_file_read(int64_t handle, bool has_count, > read_count = fread(buf, 1, count, fh); > if (ferror(fh)) { > error_setg_errno(err, errno, "failed to read file"); > - slog("guest-file-read failed, handle: %ld", handle); > + slog("guest-file-read failed, handle: %" PRId64, handle); > } else { > buf[read_count] = 0; > read_data = g_malloc0(sizeof(GuestFileRead)); > @@ -496,7 +496,7 @@ GuestFileWrite *qmp_guest_file_write(int64_t handle, const char *buf_b64, > write_count = fwrite(buf, 1, count, fh); > if (ferror(fh)) { > error_setg_errno(err, errno, "failed to write to file"); > - slog("guest-file-write failed, handle: %ld", handle); > + slog("guest-file-write failed, handle: %" PRId64, handle); > } else { > write_data = g_malloc0(sizeof(GuestFileWrite)); > write_data->count = write_count; > diff --git a/qga/guest-agent-core.h b/qga/guest-agent-core.h > index 624a559..e422208 100644 > --- a/qga/guest-agent-core.h > +++ b/qga/guest-agent-core.h > @@ -29,7 +29,7 @@ GACommandState *ga_command_state_new(void); > bool ga_logging_enabled(GAState *s); > void ga_disable_logging(GAState *s); > void ga_enable_logging(GAState *s); > -void slog(const gchar *fmt, ...); > +void GCC_FMT_ATTR(1, 2) slog(const gchar *fmt, ...); > void ga_set_response_delimited(GAState *s); > bool ga_is_frozen(GAState *s); > void ga_set_frozen(GAState *s);
17.11.2013 22:19, Stefan Weil wrote: > gcc 4.8.2 reports this warning when extra warnings are enabled (-Wextra): > > CC qga/commands.o > qga/commands.c: In function ‘slog’: > qga/commands.c:28:5: error: > function might be possible candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format] > g_logv("syslog", G_LOG_LEVEL_INFO, fmt, ap); > ^ > > gcc 4.8.2 reports this warning when slog is declared with the > gnu_printf format attribute: > > qga/commands-posix.c: In function ‘qmp_guest_file_open’: > qga/commands-posix.c:404:5: warning: > format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int64_t’ [-Wformat=] > slog("guest-file-open, handle: %d", handle); > ^ > > On 32 bit hosts there are three more warnings which are also fixed here. > > Signed-off-by: Stefan Weil <sw@weilnetz.de> > --- > > v2: Fix three more wrong format strings for 32 bit hosts. Thanks, applied to the trivial-patches queue. /mjt
diff --git a/qga/commands-posix.c b/qga/commands-posix.c index 10682f5..8100bee 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -401,7 +401,7 @@ int64_t qmp_guest_file_open(const char *path, bool has_mode, const char *mode, E return -1; } - slog("guest-file-open, handle: %d", handle); + slog("guest-file-open, handle: %" PRId64, handle); return handle; } @@ -410,7 +410,7 @@ void qmp_guest_file_close(int64_t handle, Error **err) GuestFileHandle *gfh = guest_file_handle_find(handle, err); int ret; - slog("guest-file-close called, handle: %ld", handle); + slog("guest-file-close called, handle: %" PRId64, handle); if (!gfh) { return; } @@ -451,7 +451,7 @@ struct GuestFileRead *qmp_guest_file_read(int64_t handle, bool has_count, read_count = fread(buf, 1, count, fh); if (ferror(fh)) { error_setg_errno(err, errno, "failed to read file"); - slog("guest-file-read failed, handle: %ld", handle); + slog("guest-file-read failed, handle: %" PRId64, handle); } else { buf[read_count] = 0; read_data = g_malloc0(sizeof(GuestFileRead)); @@ -496,7 +496,7 @@ GuestFileWrite *qmp_guest_file_write(int64_t handle, const char *buf_b64, write_count = fwrite(buf, 1, count, fh); if (ferror(fh)) { error_setg_errno(err, errno, "failed to write to file"); - slog("guest-file-write failed, handle: %ld", handle); + slog("guest-file-write failed, handle: %" PRId64, handle); } else { write_data = g_malloc0(sizeof(GuestFileWrite)); write_data->count = write_count; diff --git a/qga/guest-agent-core.h b/qga/guest-agent-core.h index 624a559..e422208 100644 --- a/qga/guest-agent-core.h +++ b/qga/guest-agent-core.h @@ -29,7 +29,7 @@ GACommandState *ga_command_state_new(void); bool ga_logging_enabled(GAState *s); void ga_disable_logging(GAState *s); void ga_enable_logging(GAState *s); -void slog(const gchar *fmt, ...); +void GCC_FMT_ATTR(1, 2) slog(const gchar *fmt, ...); void ga_set_response_delimited(GAState *s); bool ga_is_frozen(GAState *s); void ga_set_frozen(GAState *s);
gcc 4.8.2 reports this warning when extra warnings are enabled (-Wextra): CC qga/commands.o qga/commands.c: In function ‘slog’: qga/commands.c:28:5: error: function might be possible candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format] g_logv("syslog", G_LOG_LEVEL_INFO, fmt, ap); ^ gcc 4.8.2 reports this warning when slog is declared with the gnu_printf format attribute: qga/commands-posix.c: In function ‘qmp_guest_file_open’: qga/commands-posix.c:404:5: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int64_t’ [-Wformat=] slog("guest-file-open, handle: %d", handle); ^ On 32 bit hosts there are three more warnings which are also fixed here. Signed-off-by: Stefan Weil <sw@weilnetz.de> --- v2: Fix three more wrong format strings for 32 bit hosts. qga/commands-posix.c | 8 ++++---- qga/guest-agent-core.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-)