Fix CVE-2017-6891 in minitasn1 code
[platform/upstream/gnutls.git] / lib / debug.c
index 1e5b0c6..b50e1f1 100644 (file)
@@ -7,7 +7,7 @@
  *
  * The GnuTLS is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public License
- * as published by the Free Software Foundation; either version 3 of
+ * as published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This library is distributed in the hope that it will be useful, but
 #include <gnutls_mpi.h>
 
 #ifdef DEBUG
+void _gnutls_dump_mpi(const char *prefix, bigint_t a)
+{
+       char buf[400];
+       char buf_hex[2 * sizeof(buf) + 1];
+       size_t n = sizeof buf;
+
+       if (_gnutls_mpi_print(a, buf, &n))
+               strcpy(buf, "[can't print value]");     /* Flawfinder: ignore */
+       _gnutls_debug_log("MPI: length: %d\n\t%s%s\n", (int) n, prefix,
+                         _gnutls_bin2hex(buf, n, buf_hex, sizeof(buf_hex),
+                                         NULL));
+}
+
 void
-_gnutls_dump_mpi (const char *prefix, bigint_t a)
+_gnutls_dump_vector(const char *prefix, const uint8_t * a, size_t a_size)
 {
-  char buf[400];
-  char buf_hex[2 * sizeof (buf)];
-  size_t n = sizeof buf;
+       char buf_hex[2 * a_size + 1];
 
-  if (_gnutls_mpi_print (a, buf, &n))
-    strcpy (buf, "[can't print value]");        /* Flawfinder: ignore */
-  _gnutls_debug_log ("MPI: length: %d\n\t%s%s\n", (int) n, prefix,
-                     _gnutls_bin2hex (buf, n, buf_hex, sizeof (buf_hex),
-                                      NULL));
+       _gnutls_debug_log("Vector: length: %d\n\t%s%s\n", (int) a_size,
+                         prefix, _gnutls_bin2hex(a, a_size, buf_hex,
+                                                 sizeof(buf_hex), NULL));
 }
 #endif
 
-const char *
-_gnutls_packet2str (content_type_t packet)
+const char *_gnutls_packet2str(content_type_t packet)
 {
-  switch (packet)
-    {
-    case GNUTLS_CHANGE_CIPHER_SPEC:
-      return "ChangeCipherSpec";
-    case GNUTLS_ALERT:
-      return "Alert";
-    case GNUTLS_HANDSHAKE:
-      return "Handshake";
-    case GNUTLS_APPLICATION_DATA:
-      return "Application Data";
-    default:
-      return "Unknown Packet";
-    }
+       switch (packet) {
+       case GNUTLS_CHANGE_CIPHER_SPEC:
+               return "ChangeCipherSpec";
+       case GNUTLS_ALERT:
+               return "Alert";
+       case GNUTLS_HANDSHAKE:
+               return "Handshake";
+       case GNUTLS_APPLICATION_DATA:
+               return "Application Data";
+       case GNUTLS_HEARTBEAT:
+               return "HeartBeat";
+       default:
+               return "Unknown Packet";
+       }
 }
 
-const char *
-_gnutls_handshake2str (gnutls_handshake_description_t handshake)
+/**
+ * gnutls_handshake_description_get_name:
+ * @type: is a handshake message description
+ *
+ * Convert a #gnutls_handshake_description_t value to a string.
+ *
+ * Returns: a string that contains the name of the specified handshake
+ *   message or %NULL.
+ **/
+const char
+    *gnutls_handshake_description_get_name(gnutls_handshake_description_t
+                                          type)
 {
-
-  switch (handshake)
-    {
-    case GNUTLS_HANDSHAKE_HELLO_REQUEST:
-      return "HELLO REQUEST";
-      break;
-    case GNUTLS_HANDSHAKE_CLIENT_HELLO:
-      return "CLIENT HELLO";
-      break;
-    case GNUTLS_HANDSHAKE_CLIENT_HELLO_V2:
-      return "SSL2 CLIENT HELLO";
-      break;
-    case GNUTLS_HANDSHAKE_SERVER_HELLO:
-      return "SERVER HELLO";
-      break;
-    case GNUTLS_HANDSHAKE_HELLO_VERIFY_REQUEST:
-      return "HELLO VERIFY REQUEST";
-      break;
-    case GNUTLS_HANDSHAKE_CERTIFICATE_PKT:
-      return "CERTIFICATE";
-      break;
-    case GNUTLS_HANDSHAKE_SERVER_KEY_EXCHANGE:
-      return "SERVER KEY EXCHANGE";
-      break;
-    case GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST:
-      return "CERTIFICATE REQUEST";
-      break;
-    case GNUTLS_HANDSHAKE_SERVER_HELLO_DONE:
-      return "SERVER HELLO DONE";
-      break;
-    case GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY:
-      return "CERTIFICATE VERIFY";
-      break;
-    case GNUTLS_HANDSHAKE_CLIENT_KEY_EXCHANGE:
-      return "CLIENT KEY EXCHANGE";
-      break;
-    case GNUTLS_HANDSHAKE_FINISHED:
-      return "FINISHED";
-      break;
-    case GNUTLS_HANDSHAKE_SUPPLEMENTAL:
-      return "SUPPLEMENTAL";
-      break;
-    case GNUTLS_HANDSHAKE_NEW_SESSION_TICKET:
-      return "NEW SESSION TICKET";
-      break;
-    case GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC:
-      return "CHANGE CIPHER SPEC";
-      break;
-    default:
-      return "Unknown Handshake packet";
-
-    }
+       switch (type) {
+       case GNUTLS_HANDSHAKE_HELLO_REQUEST:
+               return "HELLO REQUEST";
+               break;
+       case GNUTLS_HANDSHAKE_CLIENT_HELLO:
+               return "CLIENT HELLO";
+               break;
+       case GNUTLS_HANDSHAKE_CLIENT_HELLO_V2:
+               return "SSL2 CLIENT HELLO";
+               break;
+       case GNUTLS_HANDSHAKE_SERVER_HELLO:
+               return "SERVER HELLO";
+               break;
+       case GNUTLS_HANDSHAKE_HELLO_VERIFY_REQUEST:
+               return "HELLO VERIFY REQUEST";
+               break;
+       case GNUTLS_HANDSHAKE_CERTIFICATE_PKT:
+               return "CERTIFICATE";
+               break;
+       case GNUTLS_HANDSHAKE_SERVER_KEY_EXCHANGE:
+               return "SERVER KEY EXCHANGE";
+               break;
+       case GNUTLS_HANDSHAKE_CERTIFICATE_REQUEST:
+               return "CERTIFICATE REQUEST";
+               break;
+       case GNUTLS_HANDSHAKE_SERVER_HELLO_DONE:
+               return "SERVER HELLO DONE";
+               break;
+       case GNUTLS_HANDSHAKE_CERTIFICATE_VERIFY:
+               return "CERTIFICATE VERIFY";
+               break;
+       case GNUTLS_HANDSHAKE_CLIENT_KEY_EXCHANGE:
+               return "CLIENT KEY EXCHANGE";
+               break;
+       case GNUTLS_HANDSHAKE_FINISHED:
+               return "FINISHED";
+               break;
+       case GNUTLS_HANDSHAKE_SUPPLEMENTAL:
+               return "SUPPLEMENTAL";
+               break;
+       case GNUTLS_HANDSHAKE_CERTIFICATE_STATUS:
+               return "CERTIFICATE STATUS";
+               break;
+       case GNUTLS_HANDSHAKE_NEW_SESSION_TICKET:
+               return "NEW SESSION TICKET";
+               break;
+       case GNUTLS_HANDSHAKE_CHANGE_CIPHER_SPEC:
+               return "CHANGE CIPHER SPEC";
+               break;
+       default:
+               return "Unknown Handshake packet";
+       }
 }