]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
DN decoding: use gnutls_hex_encode
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Tue, 21 Jul 2015 06:34:52 +0000 (08:34 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Tue, 21 Jul 2015 07:10:19 +0000 (09:10 +0200)
lib/x509/common.c

index c7993b69fa474df48ad7e4bb21187f13d2c52027..5952b4b972d1dd853513b827867e492901985a2e 100644 (file)
@@ -30,6 +30,7 @@
 #include <gnutls_num.h>
 #include <x509_b64.h>
 #include "x509_int.h"
+#include "extras/hex.h"
 #include <common.h>
 #include <c-ctype.h>
 
@@ -488,24 +489,29 @@ static int
 data2hex(const void *data, size_t data_size,
         gnutls_datum_t *out)
 {
-       char *res;
+       gnutls_datum_t tmp;
+       int ret;
+       size_t size;
 
-       out->size = data_size * 2 + 2; /* +1 for null +1 for '#' */
+       out->size = hex_str_size(data_size) + 1; /* +1 for '#' */
        out->data = gnutls_malloc(out->size);
        if (out->data == NULL)
                return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
 
+       tmp.data = (void*)data;
+       tmp.size = data_size;
+
        out->data[0] = '#';
-       res =
-           _gnutls_bin2hex(data, data_size,
-                           (char*)&out->data[1], (out->size)-2,
-                           NULL);
-       if (!res) {
+       size = out->size-1; /* don't include '#' */
+       ret =
+           gnutls_hex_encode(&tmp,
+                           (char*)&out->data[1], &size);
+       if (ret < 0) {
                gnutls_assert();
                return GNUTLS_E_SHORT_MEMORY_BUFFER;
        }
 
-       out->size = strlen(res);
+       out->size--; /* don't include null */
 
        return 0;
 }