summaryrefslogtreecommitdiffstats
path: root/ctdb/lib
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2013-03-13 22:57:44 +1100
committerAmitay Isaacs <amitay@gmail.com>2013-03-25 17:45:23 +1100
commitdd050cd4ba6bb22efb43da80518a96ec0c858833 (patch)
treef11afeaf0076d55994a2a65223f060e60794c24a /ctdb/lib
parent7f88fe3d054817598fa0426b6d5b76cc260f8688 (diff)
downloadsamba-dd050cd4ba6bb22efb43da80518a96ec0c858833.tar.gz
samba-dd050cd4ba6bb22efb43da80518a96ec0c858833.tar.xz
samba-dd050cd4ba6bb22efb43da80518a96ec0c858833.zip
util: Add hex_decode_talloc() to decode hex string into a binary blob
Signed-off-by: Amitay Isaacs <amitay@gmail.com> (This used to be ctdb commit 307416afda707b687f5e89e8438e45c154a4c806)
Diffstat (limited to 'ctdb/lib')
-rw-r--r--ctdb/lib/util/util_file.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/ctdb/lib/util/util_file.c b/ctdb/lib/util/util_file.c
index 21d64b20e3..3a90201cce 100644
--- a/ctdb/lib/util/util_file.c
+++ b/ctdb/lib/util/util_file.c
@@ -114,3 +114,19 @@ char *hex_encode_talloc(TALLOC_CTX *mem_ctx, const unsigned char *buff_in, size_
return hex_buffer;
}
+
+uint8_t *hex_decode_talloc(TALLOC_CTX *mem_ctx, const char *hex_in, size_t *len)
+{
+ int i, num;
+ uint8_t *buffer;
+
+ *len = strlen(hex_in) / 2;
+ buffer = talloc_array(mem_ctx, unsigned char, *len);
+
+ for (i=0; i<*len; i++) {
+ sscanf(&hex_in[i*2], "%02X", &num);
+ buffer[i] = (uint8_t)num;
+ }
+
+ return buffer;
+}