]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Added flags parameter to format_hex_ex.
authorJames Yonan <james@openvpn.net>
Thu, 3 Mar 2016 08:19:00 +0000 (01:19 -0700)
committerGert Doering <gert@greenie.muc.de>
Mon, 4 Apr 2016 19:20:03 +0000 (21:20 +0200)
We add the flags parameter without changing the signature of
the function by repurposing the space_break parameter into
space_break_flags where the lower 8 bits are used for the
previous space_break parameter and the higher bits are used
for flag values.

Added new flag FHE_CAPS that formats the generated hex string
in upper case.

Signed-off-by: James Yonan <james@openvpn.net>
Acked-by: Steffan Karger <steffan.karger@fox-it.com>
Message-Id: <1456993146-63968-4-git-send-email-james@openvpn.net>
URL: http://article.gmane.org/gmane.network.openvpn.devel/11275
Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpn/buffer.c
src/openvpn/buffer.h

index bc67d6503ab5d3656d133ed5e797ea56df9433d0..52c6ab92f8d6db093b38861719b31103fa6bb058 100644 (file)
@@ -435,18 +435,21 @@ gc_transfer (struct gc_arena *dest, struct gc_arena *src)
 
 char *
 format_hex_ex (const uint8_t *data, int size, int maxoutput,
-              int space_break, const char* separator,
+              unsigned int space_break_flags, const char* separator,
               struct gc_arena *gc)
 {
   struct buffer out = alloc_buf_gc (maxoutput ? maxoutput :
-                                   ((size * 2) + (size / space_break) * (int) strlen (separator) + 2),
+                                   ((size * 2) + (size / (space_break_flags & FHE_SPACE_BREAK_MASK)) * (int) strlen (separator) + 2),
                                    gc);
   int i;
   for (i = 0; i < size; ++i)
     {
-      if (separator && i && !(i % space_break))
+      if (separator && i && !(i % (space_break_flags & FHE_SPACE_BREAK_MASK)))
        buf_printf (&out, "%s", separator);
-      buf_printf (&out, "%02x", data[i]);
+      if (space_break_flags & FHE_CAPS)
+       buf_printf (&out, "%02X", data[i]);
+      else
+       buf_printf (&out, "%02x", data[i]);
     }
   buf_catrunc (&out, "[more...]");
   return (char *)out.data;
index 24f52aa389a0b6c120cb760b329e6187d0fbd379..8070439a5d8ada7cfe2e58e1d49fc3cdf25a2ce6 100644 (file)
@@ -403,9 +403,11 @@ bool buf_parse (struct buffer *buf, const int delim, char *line, const int size)
 /*
  * Hex dump -- Output a binary buffer to a hex string and return it.
  */
+#define FHE_SPACE_BREAK_MASK 0xFF /* space_break parameter in lower 8 bits */
+#define FHE_CAPS 0x100            /* output hex in caps */
 char *
 format_hex_ex (const uint8_t *data, int size, int maxoutput,
-              int space_break, const char* separator,
+              unsigned int space_break_flags, const char* separator,
               struct gc_arena *gc);
 
 static inline char *