[apparmor] [patch 2/7] parser: remove static sized buffer in process_dbus_entry()

Steve Beattie steve at nxnw.org
Tue Dec 17 21:00:56 UTC 2013


This patch converts a stack allocated buffer into an std::ostringstream
object. The stringstream interface for specifying the equivalent of
a printf %02x conversion is a bit of an awkward construction, however.

Signed-off-by: Steve Beattie <steve at nxnw.org>
---
 parser/parser_regex.c |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

Index: b/parser/parser_regex.c
===================================================================
--- a/parser/parser_regex.c
+++ b/parser/parser_regex.c
@@ -24,7 +24,10 @@
 #include <apparmor.h>
 #define _(s) gettext(s)
 
+#include <iomanip>
 #include <string>
+#include <sstream>
+
 
 /* #define DEBUG */
 
@@ -1018,7 +1021,7 @@ static int process_dbus_entry(aare_rules
 	std::string pathbuf;
 	std::string ifacebuf;
 	std::string memberbuf;
-	char buffer[128];
+	std::ostringstream buffer;
 	const char *vec[6];
 
 	pattern_t ptype;
@@ -1027,8 +1030,8 @@ static int process_dbus_entry(aare_rules
 	if (!entry) 		/* shouldn't happen */
 		return TRUE;
 
-	sprintf(buffer, "\\x%02x", AA_CLASS_DBUS);
-	busbuf.append(buffer);
+	buffer << "\\x" << std::setfill('0') << std::setw(2) << std::hex << AA_CLASS_DBUS;
+	busbuf.append(buffer.str());
 
 	if (entry->bus) {
 		ptype = convert_aaregex_to_pcre(entry->bus, 0, busbuf, &pos);




More information about the AppArmor mailing list