diff options
author | jsing <> | 2014-07-09 14:20:55 +0000 |
---|---|---|
committer | jsing <> | 2014-07-09 14:20:55 +0000 |
commit | 1f04aa3ea57f022c5b7ce1e2901ee07df82c12fa (patch) | |
tree | 114b15000d10661fb61b2af563f56d2bf1c32867 | |
parent | d0c92522d6f628993af02705f5a3143317fc84dc (diff) | |
download | openbsd-1f04aa3ea57f022c5b7ce1e2901ee07df82c12fa.tar.gz openbsd-1f04aa3ea57f022c5b7ce1e2901ee07df82c12fa.tar.bz2 openbsd-1f04aa3ea57f022c5b7ce1e2901ee07df82c12fa.zip |
Clean up and simplify SSL_CIPHER_description by always using asprintf. If
a buffer was supplied then we copy the result into it. Also make the
failure case return values match the documentation.
Joint work with beck@
-rw-r--r-- | src/lib/libssl/src/ssl/ssl_ciph.c | 108 | ||||
-rw-r--r-- | src/lib/libssl/ssl_ciph.c | 108 |
2 files changed, 108 insertions, 108 deletions
diff --git a/src/lib/libssl/src/ssl/ssl_ciph.c b/src/lib/libssl/src/ssl/ssl_ciph.c index 8fc05bc747..d84e45764e 100644 --- a/src/lib/libssl/src/ssl/ssl_ciph.c +++ b/src/lib/libssl/src/ssl/ssl_ciph.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_ciph.c,v 1.57 2014/07/09 11:25:42 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_ciph.c,v 1.58 2014/07/09 14:20:55 jsing Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -1704,11 +1704,11 @@ ssl_create_cipher_list(const SSL_METHOD *ssl_method, | |||
1704 | char * | 1704 | char * |
1705 | SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) | 1705 | SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) |
1706 | { | 1706 | { |
1707 | int l; | 1707 | static const char *fmt="%-23s %s Kx=%-8s Au=%-4s Enc=%-9s Mac=%-4s\n"; |
1708 | const char *ver; | ||
1709 | const char *kx, *au, *enc, *mac; | ||
1710 | unsigned long alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl, alg2; | 1708 | unsigned long alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl, alg2; |
1711 | static const char *format="%-23s %s Kx=%-8s Au=%-4s Enc=%-9s Mac=%-4s\n"; | 1709 | const char *ver, *kx, *au, *enc, *mac; |
1710 | char *ret; | ||
1711 | int l; | ||
1712 | 1712 | ||
1713 | alg_mkey = cipher->algorithm_mkey; | 1713 | alg_mkey = cipher->algorithm_mkey; |
1714 | alg_auth = cipher->algorithm_auth; | 1714 | alg_auth = cipher->algorithm_auth; |
@@ -1719,76 +1719,76 @@ SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) | |||
1719 | alg2 = cipher->algorithm2; | 1719 | alg2 = cipher->algorithm2; |
1720 | 1720 | ||
1721 | if (alg_ssl & SSL_SSLV2) | 1721 | if (alg_ssl & SSL_SSLV2) |
1722 | ver="SSLv2"; | 1722 | ver = "SSLv2"; |
1723 | else if (alg_ssl & SSL_SSLV3) | 1723 | else if (alg_ssl & SSL_SSLV3) |
1724 | ver="SSLv3"; | 1724 | ver = "SSLv3"; |
1725 | else if (alg_ssl & SSL_TLSV1_2) | 1725 | else if (alg_ssl & SSL_TLSV1_2) |
1726 | ver="TLSv1.2"; | 1726 | ver = "TLSv1.2"; |
1727 | else | 1727 | else |
1728 | ver="unknown"; | 1728 | ver = "unknown"; |
1729 | 1729 | ||
1730 | switch (alg_mkey) { | 1730 | switch (alg_mkey) { |
1731 | case SSL_kRSA: | 1731 | case SSL_kRSA: |
1732 | kx = "RSA"; | 1732 | kx = "RSA"; |
1733 | break; | 1733 | break; |
1734 | case SSL_kDHr: | 1734 | case SSL_kDHr: |
1735 | kx="DH/RSA"; | 1735 | kx = "DH/RSA"; |
1736 | break; | 1736 | break; |
1737 | case SSL_kDHd: | 1737 | case SSL_kDHd: |
1738 | kx="DH/DSS"; | 1738 | kx = "DH/DSS"; |
1739 | break; | 1739 | break; |
1740 | case SSL_kKRB5: | 1740 | case SSL_kKRB5: |
1741 | kx="KRB5"; | 1741 | kx = "KRB5"; |
1742 | break; | 1742 | break; |
1743 | case SSL_kEDH: | 1743 | case SSL_kEDH: |
1744 | kx = "DH"; | 1744 | kx = "DH"; |
1745 | break; | 1745 | break; |
1746 | case SSL_kECDHr: | 1746 | case SSL_kECDHr: |
1747 | kx="ECDH/RSA"; | 1747 | kx = "ECDH/RSA"; |
1748 | break; | 1748 | break; |
1749 | case SSL_kECDHe: | 1749 | case SSL_kECDHe: |
1750 | kx="ECDH/ECDSA"; | 1750 | kx = "ECDH/ECDSA"; |
1751 | break; | 1751 | break; |
1752 | case SSL_kEECDH: | 1752 | case SSL_kEECDH: |
1753 | kx="ECDH"; | 1753 | kx = "ECDH"; |
1754 | break; | 1754 | break; |
1755 | case SSL_kPSK: | 1755 | case SSL_kPSK: |
1756 | kx="PSK"; | 1756 | kx = "PSK"; |
1757 | break; | 1757 | break; |
1758 | case SSL_kSRP: | 1758 | case SSL_kSRP: |
1759 | kx="SRP"; | 1759 | kx = "SRP"; |
1760 | break; | 1760 | break; |
1761 | default: | 1761 | default: |
1762 | kx="unknown"; | 1762 | kx = "unknown"; |
1763 | } | 1763 | } |
1764 | 1764 | ||
1765 | switch (alg_auth) { | 1765 | switch (alg_auth) { |
1766 | case SSL_aRSA: | 1766 | case SSL_aRSA: |
1767 | au="RSA"; | 1767 | au = "RSA"; |
1768 | break; | 1768 | break; |
1769 | case SSL_aDSS: | 1769 | case SSL_aDSS: |
1770 | au="DSS"; | 1770 | au = "DSS"; |
1771 | break; | 1771 | break; |
1772 | case SSL_aDH: | 1772 | case SSL_aDH: |
1773 | au="DH"; | 1773 | au = "DH"; |
1774 | break; | 1774 | break; |
1775 | case SSL_aKRB5: | 1775 | case SSL_aKRB5: |
1776 | au="KRB5"; | 1776 | au = "KRB5"; |
1777 | break; | 1777 | break; |
1778 | case SSL_aECDH: | 1778 | case SSL_aECDH: |
1779 | au="ECDH"; | 1779 | au = "ECDH"; |
1780 | break; | 1780 | break; |
1781 | case SSL_aNULL: | 1781 | case SSL_aNULL: |
1782 | au="None"; | 1782 | au = "None"; |
1783 | break; | 1783 | break; |
1784 | case SSL_aECDSA: | 1784 | case SSL_aECDSA: |
1785 | au="ECDSA"; | 1785 | au = "ECDSA"; |
1786 | break; | 1786 | break; |
1787 | case SSL_aPSK: | 1787 | case SSL_aPSK: |
1788 | au="PSK"; | 1788 | au = "PSK"; |
1789 | break; | 1789 | break; |
1790 | default: | 1790 | default: |
1791 | au="unknown"; | 1791 | au = "unknown"; |
1792 | break; | 1792 | break; |
1793 | } | 1793 | } |
1794 | 1794 | ||
@@ -1797,7 +1797,7 @@ SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) | |||
1797 | enc = "DES(56)"; | 1797 | enc = "DES(56)"; |
1798 | break; | 1798 | break; |
1799 | case SSL_3DES: | 1799 | case SSL_3DES: |
1800 | enc="3DES(168)"; | 1800 | enc = "3DES(168)"; |
1801 | break; | 1801 | break; |
1802 | case SSL_RC4: | 1802 | case SSL_RC4: |
1803 | enc = alg2 & SSL2_CF_8_BYTE_ENC ? "RC4(64)" : "RC4(128)"; | 1803 | enc = alg2 & SSL2_CF_8_BYTE_ENC ? "RC4(64)" : "RC4(128)"; |
@@ -1806,73 +1806,73 @@ SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) | |||
1806 | enc = "RC2(128)"; | 1806 | enc = "RC2(128)"; |
1807 | break; | 1807 | break; |
1808 | case SSL_IDEA: | 1808 | case SSL_IDEA: |
1809 | enc="IDEA(128)"; | 1809 | enc = "IDEA(128)"; |
1810 | break; | 1810 | break; |
1811 | case SSL_eNULL: | 1811 | case SSL_eNULL: |
1812 | enc="None"; | 1812 | enc = "None"; |
1813 | break; | 1813 | break; |
1814 | case SSL_AES128: | 1814 | case SSL_AES128: |
1815 | enc="AES(128)"; | 1815 | enc = "AES(128)"; |
1816 | break; | 1816 | break; |
1817 | case SSL_AES256: | 1817 | case SSL_AES256: |
1818 | enc="AES(256)"; | 1818 | enc = "AES(256)"; |
1819 | break; | 1819 | break; |
1820 | case SSL_AES128GCM: | 1820 | case SSL_AES128GCM: |
1821 | enc="AESGCM(128)"; | 1821 | enc = "AESGCM(128)"; |
1822 | break; | 1822 | break; |
1823 | case SSL_AES256GCM: | 1823 | case SSL_AES256GCM: |
1824 | enc="AESGCM(256)"; | 1824 | enc = "AESGCM(256)"; |
1825 | break; | 1825 | break; |
1826 | case SSL_CAMELLIA128: | 1826 | case SSL_CAMELLIA128: |
1827 | enc="Camellia(128)"; | 1827 | enc = "Camellia(128)"; |
1828 | break; | 1828 | break; |
1829 | case SSL_CAMELLIA256: | 1829 | case SSL_CAMELLIA256: |
1830 | enc="Camellia(256)"; | 1830 | enc = "Camellia(256)"; |
1831 | break; | 1831 | break; |
1832 | case SSL_SEED: | 1832 | case SSL_SEED: |
1833 | enc="SEED(128)"; | 1833 | enc = "SEED(128)"; |
1834 | break; | 1834 | break; |
1835 | case SSL_CHACHA20POLY1305: | 1835 | case SSL_CHACHA20POLY1305: |
1836 | enc = "ChaCha20-Poly1305"; | 1836 | enc = "ChaCha20-Poly1305"; |
1837 | break; | 1837 | break; |
1838 | default: | 1838 | default: |
1839 | enc="unknown"; | 1839 | enc = "unknown"; |
1840 | break; | 1840 | break; |
1841 | } | 1841 | } |
1842 | 1842 | ||
1843 | switch (alg_mac) { | 1843 | switch (alg_mac) { |
1844 | case SSL_MD5: | 1844 | case SSL_MD5: |
1845 | mac="MD5"; | 1845 | mac = "MD5"; |
1846 | break; | 1846 | break; |
1847 | case SSL_SHA1: | 1847 | case SSL_SHA1: |
1848 | mac="SHA1"; | 1848 | mac = "SHA1"; |
1849 | break; | 1849 | break; |
1850 | case SSL_SHA256: | 1850 | case SSL_SHA256: |
1851 | mac="SHA256"; | 1851 | mac = "SHA256"; |
1852 | break; | 1852 | break; |
1853 | case SSL_SHA384: | 1853 | case SSL_SHA384: |
1854 | mac="SHA384"; | 1854 | mac = "SHA384"; |
1855 | break; | 1855 | break; |
1856 | case SSL_AEAD: | 1856 | case SSL_AEAD: |
1857 | mac="AEAD"; | 1857 | mac = "AEAD"; |
1858 | break; | 1858 | break; |
1859 | default: | 1859 | default: |
1860 | mac="unknown"; | 1860 | mac = "unknown"; |
1861 | break; | 1861 | break; |
1862 | } | 1862 | } |
1863 | 1863 | ||
1864 | if (buf == NULL) | 1864 | if (asprintf(&ret, fmt, cipher->name, ver, kx, au, enc, mac) == -1) |
1865 | l = asprintf(&buf, format, cipher->name, ver, kx, au, enc, mac); | 1865 | return "OPENSSL_malloc Error"; |
1866 | else { | 1866 | |
1867 | l = snprintf(buf, len, format, cipher->name, ver, kx, au, enc, | 1867 | if (buf != NULL) { |
1868 | mac); | 1868 | l = strlcpy(buf, ret, len); |
1869 | free(ret); | ||
1870 | ret = buf; | ||
1869 | if (l >= len) | 1871 | if (l >= len) |
1870 | l = -1; | 1872 | ret = "Buffer too small"; |
1871 | } | 1873 | } |
1872 | if (l == -1) | 1874 | |
1873 | return("Buffer too small"); | 1875 | return (ret); |
1874 | else | ||
1875 | return (buf); | ||
1876 | } | 1876 | } |
1877 | 1877 | ||
1878 | char * | 1878 | char * |
diff --git a/src/lib/libssl/ssl_ciph.c b/src/lib/libssl/ssl_ciph.c index 8fc05bc747..d84e45764e 100644 --- a/src/lib/libssl/ssl_ciph.c +++ b/src/lib/libssl/ssl_ciph.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_ciph.c,v 1.57 2014/07/09 11:25:42 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_ciph.c,v 1.58 2014/07/09 14:20:55 jsing Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -1704,11 +1704,11 @@ ssl_create_cipher_list(const SSL_METHOD *ssl_method, | |||
1704 | char * | 1704 | char * |
1705 | SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) | 1705 | SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) |
1706 | { | 1706 | { |
1707 | int l; | 1707 | static const char *fmt="%-23s %s Kx=%-8s Au=%-4s Enc=%-9s Mac=%-4s\n"; |
1708 | const char *ver; | ||
1709 | const char *kx, *au, *enc, *mac; | ||
1710 | unsigned long alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl, alg2; | 1708 | unsigned long alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl, alg2; |
1711 | static const char *format="%-23s %s Kx=%-8s Au=%-4s Enc=%-9s Mac=%-4s\n"; | 1709 | const char *ver, *kx, *au, *enc, *mac; |
1710 | char *ret; | ||
1711 | int l; | ||
1712 | 1712 | ||
1713 | alg_mkey = cipher->algorithm_mkey; | 1713 | alg_mkey = cipher->algorithm_mkey; |
1714 | alg_auth = cipher->algorithm_auth; | 1714 | alg_auth = cipher->algorithm_auth; |
@@ -1719,76 +1719,76 @@ SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) | |||
1719 | alg2 = cipher->algorithm2; | 1719 | alg2 = cipher->algorithm2; |
1720 | 1720 | ||
1721 | if (alg_ssl & SSL_SSLV2) | 1721 | if (alg_ssl & SSL_SSLV2) |
1722 | ver="SSLv2"; | 1722 | ver = "SSLv2"; |
1723 | else if (alg_ssl & SSL_SSLV3) | 1723 | else if (alg_ssl & SSL_SSLV3) |
1724 | ver="SSLv3"; | 1724 | ver = "SSLv3"; |
1725 | else if (alg_ssl & SSL_TLSV1_2) | 1725 | else if (alg_ssl & SSL_TLSV1_2) |
1726 | ver="TLSv1.2"; | 1726 | ver = "TLSv1.2"; |
1727 | else | 1727 | else |
1728 | ver="unknown"; | 1728 | ver = "unknown"; |
1729 | 1729 | ||
1730 | switch (alg_mkey) { | 1730 | switch (alg_mkey) { |
1731 | case SSL_kRSA: | 1731 | case SSL_kRSA: |
1732 | kx = "RSA"; | 1732 | kx = "RSA"; |
1733 | break; | 1733 | break; |
1734 | case SSL_kDHr: | 1734 | case SSL_kDHr: |
1735 | kx="DH/RSA"; | 1735 | kx = "DH/RSA"; |
1736 | break; | 1736 | break; |
1737 | case SSL_kDHd: | 1737 | case SSL_kDHd: |
1738 | kx="DH/DSS"; | 1738 | kx = "DH/DSS"; |
1739 | break; | 1739 | break; |
1740 | case SSL_kKRB5: | 1740 | case SSL_kKRB5: |
1741 | kx="KRB5"; | 1741 | kx = "KRB5"; |
1742 | break; | 1742 | break; |
1743 | case SSL_kEDH: | 1743 | case SSL_kEDH: |
1744 | kx = "DH"; | 1744 | kx = "DH"; |
1745 | break; | 1745 | break; |
1746 | case SSL_kECDHr: | 1746 | case SSL_kECDHr: |
1747 | kx="ECDH/RSA"; | 1747 | kx = "ECDH/RSA"; |
1748 | break; | 1748 | break; |
1749 | case SSL_kECDHe: | 1749 | case SSL_kECDHe: |
1750 | kx="ECDH/ECDSA"; | 1750 | kx = "ECDH/ECDSA"; |
1751 | break; | 1751 | break; |
1752 | case SSL_kEECDH: | 1752 | case SSL_kEECDH: |
1753 | kx="ECDH"; | 1753 | kx = "ECDH"; |
1754 | break; | 1754 | break; |
1755 | case SSL_kPSK: | 1755 | case SSL_kPSK: |
1756 | kx="PSK"; | 1756 | kx = "PSK"; |
1757 | break; | 1757 | break; |
1758 | case SSL_kSRP: | 1758 | case SSL_kSRP: |
1759 | kx="SRP"; | 1759 | kx = "SRP"; |
1760 | break; | 1760 | break; |
1761 | default: | 1761 | default: |
1762 | kx="unknown"; | 1762 | kx = "unknown"; |
1763 | } | 1763 | } |
1764 | 1764 | ||
1765 | switch (alg_auth) { | 1765 | switch (alg_auth) { |
1766 | case SSL_aRSA: | 1766 | case SSL_aRSA: |
1767 | au="RSA"; | 1767 | au = "RSA"; |
1768 | break; | 1768 | break; |
1769 | case SSL_aDSS: | 1769 | case SSL_aDSS: |
1770 | au="DSS"; | 1770 | au = "DSS"; |
1771 | break; | 1771 | break; |
1772 | case SSL_aDH: | 1772 | case SSL_aDH: |
1773 | au="DH"; | 1773 | au = "DH"; |
1774 | break; | 1774 | break; |
1775 | case SSL_aKRB5: | 1775 | case SSL_aKRB5: |
1776 | au="KRB5"; | 1776 | au = "KRB5"; |
1777 | break; | 1777 | break; |
1778 | case SSL_aECDH: | 1778 | case SSL_aECDH: |
1779 | au="ECDH"; | 1779 | au = "ECDH"; |
1780 | break; | 1780 | break; |
1781 | case SSL_aNULL: | 1781 | case SSL_aNULL: |
1782 | au="None"; | 1782 | au = "None"; |
1783 | break; | 1783 | break; |
1784 | case SSL_aECDSA: | 1784 | case SSL_aECDSA: |
1785 | au="ECDSA"; | 1785 | au = "ECDSA"; |
1786 | break; | 1786 | break; |
1787 | case SSL_aPSK: | 1787 | case SSL_aPSK: |
1788 | au="PSK"; | 1788 | au = "PSK"; |
1789 | break; | 1789 | break; |
1790 | default: | 1790 | default: |
1791 | au="unknown"; | 1791 | au = "unknown"; |
1792 | break; | 1792 | break; |
1793 | } | 1793 | } |
1794 | 1794 | ||
@@ -1797,7 +1797,7 @@ SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) | |||
1797 | enc = "DES(56)"; | 1797 | enc = "DES(56)"; |
1798 | break; | 1798 | break; |
1799 | case SSL_3DES: | 1799 | case SSL_3DES: |
1800 | enc="3DES(168)"; | 1800 | enc = "3DES(168)"; |
1801 | break; | 1801 | break; |
1802 | case SSL_RC4: | 1802 | case SSL_RC4: |
1803 | enc = alg2 & SSL2_CF_8_BYTE_ENC ? "RC4(64)" : "RC4(128)"; | 1803 | enc = alg2 & SSL2_CF_8_BYTE_ENC ? "RC4(64)" : "RC4(128)"; |
@@ -1806,73 +1806,73 @@ SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) | |||
1806 | enc = "RC2(128)"; | 1806 | enc = "RC2(128)"; |
1807 | break; | 1807 | break; |
1808 | case SSL_IDEA: | 1808 | case SSL_IDEA: |
1809 | enc="IDEA(128)"; | 1809 | enc = "IDEA(128)"; |
1810 | break; | 1810 | break; |
1811 | case SSL_eNULL: | 1811 | case SSL_eNULL: |
1812 | enc="None"; | 1812 | enc = "None"; |
1813 | break; | 1813 | break; |
1814 | case SSL_AES128: | 1814 | case SSL_AES128: |
1815 | enc="AES(128)"; | 1815 | enc = "AES(128)"; |
1816 | break; | 1816 | break; |
1817 | case SSL_AES256: | 1817 | case SSL_AES256: |
1818 | enc="AES(256)"; | 1818 | enc = "AES(256)"; |
1819 | break; | 1819 | break; |
1820 | case SSL_AES128GCM: | 1820 | case SSL_AES128GCM: |
1821 | enc="AESGCM(128)"; | 1821 | enc = "AESGCM(128)"; |
1822 | break; | 1822 | break; |
1823 | case SSL_AES256GCM: | 1823 | case SSL_AES256GCM: |
1824 | enc="AESGCM(256)"; | 1824 | enc = "AESGCM(256)"; |
1825 | break; | 1825 | break; |
1826 | case SSL_CAMELLIA128: | 1826 | case SSL_CAMELLIA128: |
1827 | enc="Camellia(128)"; | 1827 | enc = "Camellia(128)"; |
1828 | break; | 1828 | break; |
1829 | case SSL_CAMELLIA256: | 1829 | case SSL_CAMELLIA256: |
1830 | enc="Camellia(256)"; | 1830 | enc = "Camellia(256)"; |
1831 | break; | 1831 | break; |
1832 | case SSL_SEED: | 1832 | case SSL_SEED: |
1833 | enc="SEED(128)"; | 1833 | enc = "SEED(128)"; |
1834 | break; | 1834 | break; |
1835 | case SSL_CHACHA20POLY1305: | 1835 | case SSL_CHACHA20POLY1305: |
1836 | enc = "ChaCha20-Poly1305"; | 1836 | enc = "ChaCha20-Poly1305"; |
1837 | break; | 1837 | break; |
1838 | default: | 1838 | default: |
1839 | enc="unknown"; | 1839 | enc = "unknown"; |
1840 | break; | 1840 | break; |
1841 | } | 1841 | } |
1842 | 1842 | ||
1843 | switch (alg_mac) { | 1843 | switch (alg_mac) { |
1844 | case SSL_MD5: | 1844 | case SSL_MD5: |
1845 | mac="MD5"; | 1845 | mac = "MD5"; |
1846 | break; | 1846 | break; |
1847 | case SSL_SHA1: | 1847 | case SSL_SHA1: |
1848 | mac="SHA1"; | 1848 | mac = "SHA1"; |
1849 | break; | 1849 | break; |
1850 | case SSL_SHA256: | 1850 | case SSL_SHA256: |
1851 | mac="SHA256"; | 1851 | mac = "SHA256"; |
1852 | break; | 1852 | break; |
1853 | case SSL_SHA384: | 1853 | case SSL_SHA384: |
1854 | mac="SHA384"; | 1854 | mac = "SHA384"; |
1855 | break; | 1855 | break; |
1856 | case SSL_AEAD: | 1856 | case SSL_AEAD: |
1857 | mac="AEAD"; | 1857 | mac = "AEAD"; |
1858 | break; | 1858 | break; |
1859 | default: | 1859 | default: |
1860 | mac="unknown"; | 1860 | mac = "unknown"; |
1861 | break; | 1861 | break; |
1862 | } | 1862 | } |
1863 | 1863 | ||
1864 | if (buf == NULL) | 1864 | if (asprintf(&ret, fmt, cipher->name, ver, kx, au, enc, mac) == -1) |
1865 | l = asprintf(&buf, format, cipher->name, ver, kx, au, enc, mac); | 1865 | return "OPENSSL_malloc Error"; |
1866 | else { | 1866 | |
1867 | l = snprintf(buf, len, format, cipher->name, ver, kx, au, enc, | 1867 | if (buf != NULL) { |
1868 | mac); | 1868 | l = strlcpy(buf, ret, len); |
1869 | free(ret); | ||
1870 | ret = buf; | ||
1869 | if (l >= len) | 1871 | if (l >= len) |
1870 | l = -1; | 1872 | ret = "Buffer too small"; |
1871 | } | 1873 | } |
1872 | if (l == -1) | 1874 | |
1873 | return("Buffer too small"); | 1875 | return (ret); |
1874 | else | ||
1875 | return (buf); | ||
1876 | } | 1876 | } |
1877 | 1877 | ||
1878 | char * | 1878 | char * |