[Openais] [PATCH 4/7] Fix to display strings safely in debug messages.

angus salkeld angus.salkeld at alliedtelesis.co.nz
Tue Aug 19 11:54:48 PDT 2008


Display strings safely, even if they are invalid, e.g. data in a received
message was corrupted.

Author: Tim Beale <tim.beale at alliedtelesis.co.nz>
---
 exec/util.c |   19 ++++++++-----------
 1 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/exec/util.c b/exec/util.c
index 593cdba..7939a4a 100644
--- a/exec/util.c
+++ b/exec/util.c
@@ -86,21 +86,18 @@ void _corosync_exit_error (
 	exit (EXIT_FAILURE);
 }
 
+#define min(a,b) ((a) < (b) ? (a) : (b))
+
 char *getSaNameT (SaNameT *name)
 {
-#if 0
-	static char ret_name[300];
-
-	memset (ret_name, 0, sizeof (ret_name));
-	if (name->length > 299) {
-		memcpy (ret_name, name->value, 299);
-	} else {
+	static char ret_name[SA_MAX_NAME_LENGTH];
 
-		memcpy (ret_name, name->value, name->length);
+	/* if string is corrupt (non-terminated), ensure it's displayed safely */
+	if (name->length >= SA_MAX_NAME_LENGTH || name->value[name->length] != '\0') {
+		memset (ret_name, 0, sizeof (ret_name));
+		memcpy (ret_name, name->value, min(name->length, SA_MAX_NAME_LENGTH -1));
+		return (ret_name);
 	}
-	return (ret_name);
-#endif
-// TODO
 	return ((char *)name->value);
 }
 
-- 
1.5.6




More information about the Openais mailing list