summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2014-07-09 14:20:55 +0000
committerjsing <>2014-07-09 14:20:55 +0000
commit1f04aa3ea57f022c5b7ce1e2901ee07df82c12fa (patch)
tree114b15000d10661fb61b2af563f56d2bf1c32867
parentd0c92522d6f628993af02705f5a3143317fc84dc (diff)
downloadopenbsd-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.c108
-rw-r--r--src/lib/libssl/ssl_ciph.c108
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,
1704char * 1704char *
1705SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) 1705SSL_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
1878char * 1878char *
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,
1704char * 1704char *
1705SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len) 1705SSL_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
1878char * 1878char *