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 <v...@samba.org>
Date:   Fri Feb 3 03:27:19 2012 +0100

    lib/util: Add hex_encode_buf
    
    Autobuild-User: Volker Lendecke <v...@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

Reply via email to