修复内存泄漏问题

This commit is contained in:
崔一鸣
2018-09-14 21:23:08 +08:00
parent 254f3fbbd1
commit e28fd98331
3 changed files with 5 additions and 1 deletions

View File

@@ -292,6 +292,7 @@ static struct keyring_private* get_keyring_from_response(const char* data)
return NULL; return NULL;
} }
sk_X509_push(chain, chain_cert); sk_X509_push(chain, chain_cert);
ssl_x509_refcount_inc(chain_cert);
} }
struct keyring_private* _kyr= keyring_new(); struct keyring_private* _kyr= keyring_new();
keyring_set_cert(_kyr, cert); keyring_set_cert(_kyr, cert);
@@ -328,6 +329,8 @@ static struct keyring_private* generate_x509_keyring(X509* origin_cert, int keyr
STACK_OF(X509)* chain = sk_X509_new_null(); STACK_OF(X509)* chain = sk_X509_new_null();
sk_X509_push(chain, ca); sk_X509_push(chain, ca);
sk_X509_push(chain, forge_cert); sk_X509_push(chain, forge_cert);
ssl_x509_refcount_inc(ca);
ssl_x509_refcount_inc(forge_cert);
struct keyring_private* _kyr= keyring_new(); struct keyring_private* _kyr= keyring_new();
keyring_set_key(_kyr, forge_key); keyring_set_key(_kyr, forge_key);
keyring_set_cert(_kyr, forge_cert); keyring_set_cert(_kyr, forge_cert);

View File

@@ -2033,7 +2033,7 @@ struct ssl_chello* ssl_chello_parse(const unsigned char* buff, size_t buff_len,
_chello->max_version.major = buff[pos]; _chello->max_version.major = buff[pos];
_chello->max_version.minor = buff[pos+1]; _chello->max_version.minor = buff[pos+1];
_chello->max_version.ossl_format=(uint16_t)_chello->max_version.major<<8|_chello->max_version.minor; _chello->max_version.ossl_format=(uint16_t)_chello->max_version.major<<8|_chello->max_version.minor;
pos += 34; pos += 34;
/* Session ID */ /* Session ID */
if (pos + 1 > buff_len) if (pos + 1 > buff_len)

View File

@@ -180,6 +180,7 @@ static struct keyring* get_keyring_from_response(const char* data)
if(chain_cert) if(chain_cert)
printf("push to chain\n"); printf("push to chain\n");
sk_X509_push(chain, chain_cert); sk_X509_push(chain, chain_cert);
ssl_x509_refcount_inc(chain_cert);
} }
struct keyring_private* _kyr= keyring_new(); struct keyring_private* _kyr= keyring_new();
printf("cert is %s", cert == NULL ? "null" : "not null\n"); printf("cert is %s", cert == NULL ? "null" : "not null\n");