]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
_gnutls_bin2hex: make it robuster against empty input
authorDaiki Ueno <ueno@gnu.org>
Fri, 23 Jan 2026 07:29:25 +0000 (16:29 +0900)
committerAlexander Sosedkin <asosedkin@redhat.com>
Mon, 9 Feb 2026 11:59:26 +0000 (12:59 +0100)
Signed-off-by: Daiki Ueno <ueno@gnu.org>
lib/str.c

index 63f2ca4d6da471d5d81ff8a0da70955189e917e9..f5e09b820e2f303733947741e36e8afd29d38e90 100644 (file)
--- a/lib/str.c
+++ b/lib/str.c
@@ -443,14 +443,23 @@ int _gnutls_buffer_unescape(gnutls_buffer_st *dest)
 char *_gnutls_bin2hex(const void *_old, size_t oldlen, char *buffer,
                      size_t buffer_size, const char *separator)
 {
-       unsigned int i, j;
+       size_t i, j;
        const uint8_t *old = _old;
        int step = 2;
        const char empty[] = "";
 
-       if (separator != NULL && separator[0] != 0)
-               step = 3;
-       else
+       if (unlikely(oldlen == 0)) {
+               if (buffer_size == 0) {
+                       gnutls_assert();
+                       return NULL;
+               }
+               buffer[0] = '\0';
+               return buffer;
+       }
+
+       if (separator != NULL) {
+               step += strlen(separator);
+       } else
                separator = empty;
 
        if (buffer_size < 3) {