Fix multiple printf format problems

All printf var-args style methods should be annotation with
their format. All format strings must be const strings.

* client/application.cpp, client/cmd_line_parser.cpp,
  client/hot_keys.cpp: Avoid non-const format
* client/client_net_socket.cpp: Fix broken format specifier
* client/red_peer.cpp: Fix missing format specifier
* client/platform.h: Add SPICE_GNUC_PRINTF annotation to term_printf
* client/utils.h: Add SPICE_GNUC_PRINTF annotation to string_printf
* server/glz_encoder_config.h, server/red_worker.c: Add
  SPICE_GNUC_PRINTF annotation to warning callbacks

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrange 2012-03-13 15:28:26 +00:00
parent 832a98800d
commit 6a8b7585e2
9 changed files with 16 additions and 18 deletions

View File

@ -2359,7 +2359,7 @@ bool Application::process_cmd_line(int argc, char** argv, bool &full_screen)
case SPICE_OPT_VERSION: {
std::ostringstream os;
os << argv[0] << " "<< PACKAGE_VERSION << std::endl;
Platform::term_printf(os.str().c_str());
Platform::term_printf("%s", os.str().c_str());
return false;
}
case SPICE_OPT_HOST:

View File

@ -147,7 +147,7 @@ void ClientNetSocket::push_send(SendBuffer& buf)
}
if (_fin_pending || _close_pending) {
THROW("%s: unexpected send attempt for connection_id=% - shutdown send pending",
THROW("%s: unexpected send attempt for connection_id=%d - shutdown send pending",
__FUNCTION__, _id);
}

View File

@ -514,5 +514,5 @@ void CmdLineParser::show_help()
}
os << "\n";
Platform::term_printf(os.str().c_str());
Platform::term_printf("%s", os.str().c_str());
}

View File

@ -139,9 +139,7 @@ void HotKeysParser::add_hotkey(const std::string& hotkey, const CommandsMap& com
std::string command_name = hotkey.substr(0, key_start);
if (commands_map.find(command_name) == commands_map.end()) {
char buf[1000];
snprintf(buf, sizeof(buf), "invalid action bname %s", command_name.c_str());
THROW(buf);
THROW("invalid action bname %s", command_name.c_str());
}
int command_id = commands_map.find(command_name)->second;
std::string keys = hotkey.substr(key_start + 1);

View File

@ -42,7 +42,7 @@ public:
static void path_append(std::string& path, const std::string& partial_path);
static uint64_t get_process_id();
static uint64_t get_thread_id();
static void term_printf(const char* format, ...);
static SPICE_GNUC_PRINTF(1, 2) void term_printf(const char* format, ...);
static void error_beep();
static const MonitorsList& init_monitors();

View File

@ -38,7 +38,7 @@ static void ssl_error()
unsigned long last_error = ERR_peek_last_error();
ERR_print_errors_fp(stderr);
THROW_ERR(SPICEC_ERROR_CODE_SSL_ERROR, "SSL Error:", ERR_error_string(last_error, NULL));
THROW_ERR(SPICEC_ERROR_CODE_SSL_ERROR, "SSL Error: %s", ERR_error_string(last_error, NULL));
}
RedPeer::RedPeer()

View File

@ -98,7 +98,7 @@ static inline void set_bit_be(const void* addr, int bit)
int str_to_port(const char *str);
void string_vprintf(std::string& str, const char* format, va_list ap);
void string_printf(std::string& str, const char *format, ...);
SPICE_GNUC_PRINTF(2, 3) void string_printf(std::string& str, const char *format, ...);
template<class T>
class FreeObject {

View File

@ -25,9 +25,9 @@ typedef void GlzUsrImageContext;
typedef struct GlzEncoderUsrContext GlzEncoderUsrContext;
struct GlzEncoderUsrContext {
void (*error)(GlzEncoderUsrContext *usr, const char *fmt, ...);
void (*warn)(GlzEncoderUsrContext *usr, const char *fmt, ...);
void (*info)(GlzEncoderUsrContext *usr, const char *fmt, ...);
SPICE_GNUC_PRINTF(2, 3) void (*error)(GlzEncoderUsrContext *usr, const char *fmt, ...);
SPICE_GNUC_PRINTF(2, 3) void (*warn)(GlzEncoderUsrContext *usr, const char *fmt, ...);
SPICE_GNUC_PRINTF(2, 3) void (*info)(GlzEncoderUsrContext *usr, const char *fmt, ...);
void *(*malloc)(GlzEncoderUsrContext *usr, int size);
void (*free)(GlzEncoderUsrContext *usr, void *ptr);

View File

@ -5274,7 +5274,7 @@ static int red_display_free_some_independent_glz_drawables(DisplayChannelClient
/******************************************************
* Encoders callbacks
*******************************************************/
static void quic_usr_error(QuicUsrContext *usr, const char *fmt, ...)
static SPICE_GNUC_PRINTF(2, 3) void quic_usr_error(QuicUsrContext *usr, const char *fmt, ...)
{
EncoderData *usr_data = &(((QuicData *)usr)->data);
va_list ap;
@ -5287,7 +5287,7 @@ static void quic_usr_error(QuicUsrContext *usr, const char *fmt, ...)
longjmp(usr_data->jmp_env, 1);
}
static void lz_usr_error(LzUsrContext *usr, const char *fmt, ...)
static SPICE_GNUC_PRINTF(2, 3) void lz_usr_error(LzUsrContext *usr, const char *fmt, ...)
{
EncoderData *usr_data = &(((LzData *)usr)->data);
va_list ap;
@ -5300,7 +5300,7 @@ static void lz_usr_error(LzUsrContext *usr, const char *fmt, ...)
longjmp(usr_data->jmp_env, 1);
}
static void glz_usr_error(GlzEncoderUsrContext *usr, const char *fmt, ...)
static SPICE_GNUC_PRINTF(2, 3) void glz_usr_error(GlzEncoderUsrContext *usr, const char *fmt, ...)
{
EncoderData *usr_data = &(((GlzData *)usr)->data);
va_list ap;
@ -5315,7 +5315,7 @@ static void glz_usr_error(GlzEncoderUsrContext *usr, const char *fmt, ...)
// and the client
}
static void quic_usr_warn(QuicUsrContext *usr, const char *fmt, ...)
static SPICE_GNUC_PRINTF(2, 3) void quic_usr_warn(QuicUsrContext *usr, const char *fmt, ...)
{
EncoderData *usr_data = &(((QuicData *)usr)->data);
va_list ap;
@ -5326,7 +5326,7 @@ static void quic_usr_warn(QuicUsrContext *usr, const char *fmt, ...)
spice_printerr("%s", usr_data->message_buf);
}
static void lz_usr_warn(LzUsrContext *usr, const char *fmt, ...)
static SPICE_GNUC_PRINTF(2, 3) void lz_usr_warn(LzUsrContext *usr, const char *fmt, ...)
{
EncoderData *usr_data = &(((LzData *)usr)->data);
va_list ap;
@ -5337,7 +5337,7 @@ static void lz_usr_warn(LzUsrContext *usr, const char *fmt, ...)
spice_printerr("%s", usr_data->message_buf);
}
static void glz_usr_warn(GlzEncoderUsrContext *usr, const char *fmt, ...)
static SPICE_GNUC_PRINTF(2, 3) void glz_usr_warn(GlzEncoderUsrContext *usr, const char *fmt, ...)
{
EncoderData *usr_data = &(((GlzData *)usr)->data);
va_list ap;