--- a/components/mysql-5-1/patches/yassl.patch Tue Mar 25 21:42:23 2014 -0700
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,173 +0,0 @@
-=== modified file 'extra/yassl/taocrypt/include/asn.hpp'
---- extra/yassl/taocrypt/include/asn.hpp 2007-01-29 15:54:40 +0000
-+++ extra/yassl/taocrypt/include/asn.hpp.org 2010-01-13 05:20:45 +0000
-@@ -305,6 +305,7 @@ private:
- bool ValidateSignature(SignerList*);
- bool ConfirmSignature(Source&);
- void GetKey();
-+ char* AddTag(char*, const char*, const char*, word32, word32);
- void GetName(NameType);
- void GetValidity();
- void GetDate(DateType);
-
-=== modified file 'extra/yassl/taocrypt/src/asn.cpp'
---- extra/yassl/taocrypt/src/asn.cpp 2009-06-29 13:17:01 +0000
-+++ extra/yassl/taocrypt/src/asn.cpp.org 2010-01-13 05:20:45 +0000
-@@ -652,6 +652,23 @@ word32 CertDecoder::GetDigest()
- }
-
-
-+char *CertDecoder::AddTag(char *ptr, const char *buf_end,
-+ const char *tag_name, word32 tag_name_length,
-+ word32 tag_value_length)
-+{
-+ if (ptr + tag_name_length + tag_value_length > buf_end)
-+ return 0;
-+
-+ memcpy(ptr, tag_name, tag_name_length);
-+ ptr+= tag_name_length;
-+
-+ memcpy(ptr, source_.get_current(), tag_value_length);
-+ ptr+= tag_value_length;
-+
-+ return ptr;
-+}
-+
-+
- // process NAME, either issuer or subject
- void CertDecoder::GetName(NameType nt)
- {
-@@ -659,11 +676,21 @@ void CertDecoder::GetName(NameType nt)
-
- SHA sha;
- word32 length = GetSequence(); // length of all distinguished names
-- assert (length < ASN_NAME_MAX);
-+
-+ if (length >= ASN_NAME_MAX)
-+ goto err;
- length += source_.get_index();
-
-- char* ptr = (nt == ISSUER) ? issuer_ : subject_;
-- word32 idx = 0;
-+ char *ptr, *buf_end;
-+
-+ if (nt == ISSUER) {
-+ ptr= issuer_;
-+ buf_end= ptr + sizeof(issuer_) - 1; // 1 byte for trailing 0
-+ }
-+ else {
-+ ptr= subject_;
-+ buf_end= ptr + sizeof(subject_) - 1; // 1 byte for trailing 0
-+ }
-
- while (source_.get_index() < length) {
- GetSet();
-@@ -685,47 +712,36 @@ void CertDecoder::GetName(NameType nt)
- byte id = source_.next();
- b = source_.next(); // strType
- word32 strLen = GetLength(source_);
-- bool copy = false;
-
-- if (id == COMMON_NAME) {
-- memcpy(&ptr[idx], "/CN=", 4);
-- idx += 4;
-- copy = true;
-- }
-- else if (id == SUR_NAME) {
-- memcpy(&ptr[idx], "/SN=", 4);
-- idx += 4;
-- copy = true;
-- }
-- else if (id == COUNTRY_NAME) {
-- memcpy(&ptr[idx], "/C=", 3);
-- idx += 3;
-- copy = true;
-- }
-- else if (id == LOCALITY_NAME) {
-- memcpy(&ptr[idx], "/L=", 3);
-- idx += 3;
-- copy = true;
-- }
-- else if (id == STATE_NAME) {
-- memcpy(&ptr[idx], "/ST=", 4);
-- idx += 4;
-- copy = true;
-- }
-- else if (id == ORG_NAME) {
-- memcpy(&ptr[idx], "/O=", 3);
-- idx += 3;
-- copy = true;
-- }
-- else if (id == ORGUNIT_NAME) {
-- memcpy(&ptr[idx], "/OU=", 4);
-- idx += 4;
-- copy = true;
-- }
--
-- if (copy) {
-- memcpy(&ptr[idx], source_.get_current(), strLen);
-- idx += strLen;
-+ switch (id) {
-+ case COMMON_NAME:
-+ if (!(ptr= AddTag(ptr, buf_end, "/CN=", 4, strLen)))
-+ goto err;
-+ break;
-+ case SUR_NAME:
-+ if (!(ptr= AddTag(ptr, buf_end, "/SN=", 4, strLen)))
-+ goto err;
-+ break;
-+ case COUNTRY_NAME:
-+ if (!(ptr= AddTag(ptr, buf_end, "/C=", 3, strLen)))
-+ goto err;
-+ break;
-+ case LOCALITY_NAME:
-+ if (!(ptr= AddTag(ptr, buf_end, "/L=", 3, strLen)))
-+ goto err;
-+ break;
-+ case STATE_NAME:
-+ if (!(ptr= AddTag(ptr, buf_end, "/ST=", 4, strLen)))
-+ goto err;
-+ break;
-+ case ORG_NAME:
-+ if (!(ptr= AddTag(ptr, buf_end, "/O=", 3, strLen)))
-+ goto err;
-+ break;
-+ case ORGUNIT_NAME:
-+ if (!(ptr= AddTag(ptr, buf_end, "/OU=", 4, strLen)))
-+ goto err;
-+ break;
- }
-
- sha.Update(source_.get_current(), strLen);
-@@ -739,23 +755,20 @@ void CertDecoder::GetName(NameType nt)
- source_.advance(oidSz + 1);
- word32 length = GetLength(source_);
-
-- if (email) {
-- memcpy(&ptr[idx], "/emailAddress=", 14);
-- idx += 14;
--
-- memcpy(&ptr[idx], source_.get_current(), length);
-- idx += length;
-- }
-+ if (email && !(ptr= AddTag(ptr, buf_end, "/emailAddress=", 14, length)))
-+ goto err;
-
- source_.advance(length);
- }
- }
-- ptr[idx++] = 0;
-+ *ptr= 0;
-
-- if (nt == ISSUER)
-- sha.Final(issuerHash_);
-- else
-- sha.Final(subjectHash_);
-+ sha.Final(nt == ISSUER ? issuerHash_ : subjectHash_);
-+
-+ return;
-+
-+err:
-+ source_.SetError(CONTENT_E);
- }
-