[SCM] Samba Shared Repository - branch master updated

Volker Lendecke vlendec at samba.org
Mon Feb 6 01:16:03 MST 2012


The branch, master has been updated
       via  a0e44c3 lib/util: Add hex_encode_buf
      from  74ca6d1 s3-popt: Fix configure.developer builds on Solairs.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit a0e44c30e21013f0136ddefc1bbbdc020413e749
Author: Volker Lendecke <vl at samba.org>
Date:   Fri Feb 3 03:27:19 2012 +0100

    lib/util: Add hex_encode_buf
    
    Autobuild-User: Volker Lendecke <vl at samba.org>
    Autobuild-Date: Mon Feb  6 09:15:33 CET 2012 on sn-devel-104

-----------------------------------------------------------------------

Summary of changes:
 lib/util/samba_util.h     |    5 +++++
 lib/util/util.c           |   25 ++++++++++++++++---------
 source3/selftest/tests.py |    1 +
 source3/torture/torture.c |   21 +++++++++++++++++++++
 4 files changed, 43 insertions(+), 9 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/util/samba_util.h b/lib/util/samba_util.h
index 9df3ddf..5ce2e5e 100644
--- a/lib/util/samba_util.h
+++ b/lib/util/samba_util.h
@@ -262,6 +262,11 @@ _PUBLIC_ size_t strhex_to_str(char *p, size_t p_len, const char *strhex, size_t
 _PUBLIC_ _PURE_ DATA_BLOB strhex_to_data_blob(TALLOC_CTX *mem_ctx, const char *strhex) ;
 
 /**
+ * Print a buf in hex. Assumes dst is at least (srclen*2)+1 large.
+ */
+_PUBLIC_ void hex_encode_buf(char *dst, const uint8_t *src, size_t srclen);
+
+/**
  * Routine to print a buffer as HEX digits, into an allocated string.
  */
 _PUBLIC_ void hex_encode(const unsigned char *buff_in, size_t len, char **out_hex_buffer);
diff --git a/lib/util/util.c b/lib/util/util.c
index c4fbd0b..867da0a 100644
--- a/lib/util/util.c
+++ b/lib/util/util.c
@@ -758,20 +758,31 @@ _PUBLIC_ _PURE_ DATA_BLOB strhex_to_data_blob(TALLOC_CTX *mem_ctx, const char *s
 	return ret_blob;
 }
 
+/**
+ * Print a buf in hex. Assumes dst is at least (srclen*2)+1 large.
+ */
+_PUBLIC_ void hex_encode_buf(char *dst, const uint8_t *src, size_t srclen)
+{
+	size_t i;
+	for (i=0; i<srclen; i++) {
+		snprintf(dst + i*2, 3, "%02X", src[i]);
+	}
+	/*
+	 * Ensure 0-termination for 0-length buffers
+	 */
+	dst[srclen*2] = '\0';
+}
 
 /**
  * Routine to print a buffer as HEX digits, into an allocated string.
  */
 _PUBLIC_ void hex_encode(const unsigned char *buff_in, size_t len, char **out_hex_buffer)
 {
-	int i;
 	char *hex_buffer;
 
 	*out_hex_buffer = malloc_array_p(char, (len*2)+1);
 	hex_buffer = *out_hex_buffer;
-
-	for (i = 0; i < len; i++)
-		slprintf(&hex_buffer[i*2], 3, "%02X", buff_in[i]);
+	hex_encode_buf(hex_buffer, buff_in, len);
 }
 
 /**
@@ -779,17 +790,13 @@ _PUBLIC_ void hex_encode(const unsigned char *buff_in, size_t len, char **out_he
  */
 _PUBLIC_ char *hex_encode_talloc(TALLOC_CTX *mem_ctx, const unsigned char *buff_in, size_t len)
 {
-	int i;
 	char *hex_buffer;
 
 	hex_buffer = talloc_array(mem_ctx, char, (len*2)+1);
 	if (!hex_buffer) {
 		return NULL;
 	}
-
-	for (i = 0; i < len; i++)
-		slprintf(&hex_buffer[i*2], 3, "%02X", buff_in[i]);
-
+	hex_encode_buf(hex_buffer, buff_in, len);
 	talloc_set_name_const(hex_buffer, hex_buffer);
 	return hex_buffer;
 }
diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py
index 6a3ccb9..ce6d964 100755
--- a/source3/selftest/tests.py
+++ b/source3/selftest/tests.py
@@ -107,6 +107,7 @@ local_tests=[
 	"LOCAL-TEVENT-SELECT",
 	"LOCAL-CONVERT-STRING",
 	"LOCAL-CONV-AUTH-INFO",
+	"LOCAL-hex_encode_buf",
 	"LOCAL-sprintf_append"]
 
 for t in local_tests:
diff --git a/source3/torture/torture.c b/source3/torture/torture.c
index e4ce913..b14f9ed 100644
--- a/source3/torture/torture.c
+++ b/source3/torture/torture.c
@@ -8693,6 +8693,26 @@ fail:
 	return result;
 }
 
+static bool run_local_hex_encode_buf(int dummy)
+{
+	char buf[17];
+	uint8_t src[8];
+	int i;
+
+	for (i=0; i<sizeof(src); i++) {
+		src[i] = i;
+	}
+	hex_encode_buf(buf, src, sizeof(src));
+	if (strcmp(buf, "0001020304050607") != 0) {
+	       	return false;
+	}
+	hex_encode_buf(buf, NULL, 0);
+	if (buf[0] != '\0') {
+		return false;
+	}
+	return true;
+}
+
 static double create_procs(bool (*fn)(int), bool *result)
 {
 	int i, status;
@@ -8895,6 +8915,7 @@ static struct {
 	{ "LOCAL-CONVERT-STRING", run_local_convert_string, 0},
 	{ "LOCAL-CONV-AUTH-INFO", run_local_conv_auth_info, 0},
 	{ "LOCAL-sprintf_append", run_local_sprintf_append, 0},
+	{ "LOCAL-hex_encode_buf", run_local_hex_encode_buf, 0},
 	{NULL, NULL, 0}};
 
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list