From eaf9cb817d757baa734be4e7d70c10e5afd02b66 Mon Sep 17 00:00:00 2001 From: Rom Walton Date: Fri, 28 Aug 2015 17:24:00 -0400 Subject: [PATCH] VBOX: Only perform the printf format string sanitize functionality on those strings that are going to be consumed by vbox_log(). --- samples/vboxwrapper/vbox_common.cpp | 16 +++++++--------- samples/vboxwrapper/vbox_common.h | 1 + 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/samples/vboxwrapper/vbox_common.cpp b/samples/vboxwrapper/vbox_common.cpp index 8d82b23c10..067731e508 100644 --- a/samples/vboxwrapper/vbox_common.cpp +++ b/samples/vboxwrapper/vbox_common.cpp @@ -290,7 +290,7 @@ void VBOX_BASE::dump_vmguestlog_entries() { vm_log_timestamp = current_timestamp; msg = line.substr(line_pos, line.size() - line_pos); - sanitize_output(msg); + sanitize_format(msg); vboxlog_msg(msg.c_str()); } @@ -598,13 +598,9 @@ int VBOX_BASE::write_floppy(std::string& data) { return 1; } -void VBOX_BASE::sanitize_output(std::string& output) { - string::iterator iter; - - // Check for special characters used by printf and render them - // harmless - // - iter = output.begin(); +void VBOX_BASE::sanitize_format(std::string& output) { + // Check for special characters used by printf and render them harmless + string::iterator iter = output.begin(); while (iter != output.end()) { if (*iter == '%') { // If we find '%', insert an additional '%' so that the we end up with @@ -617,10 +613,12 @@ void VBOX_BASE::sanitize_output(std::string& output) { ++iter; } } +} +void VBOX_BASE::sanitize_output(std::string& output) { #ifdef _WIN32 // Remove \r from the log spew - iter = output.begin(); + string::iterator iter = output.begin(); while (iter != output.end()) { if (*iter == '\r') { iter = output.erase(iter); diff --git a/samples/vboxwrapper/vbox_common.h b/samples/vboxwrapper/vbox_common.h index ef1a595dd3..a0472379f4 100644 --- a/samples/vboxwrapper/vbox_common.h +++ b/samples/vboxwrapper/vbox_common.h @@ -229,6 +229,7 @@ public: virtual void lower_vm_process_priority() = 0; virtual void reset_vm_process_priority() = 0; + static void sanitize_format(std::string& output); static void sanitize_output(std::string& output); virtual int launch_vboxsvc();