All functions using php_openssl_x509_from_zval or php_openssl_csr_from_zval
with makeresource equal to 0 do not deref the resource which means there
is a leak till the end of the request. This can cause issues for long
running apps. It is a generic solution for bug #75363 which also covers
other functions.
if (!what) {
return NULL;
}
- /* this is so callers can decide if they should free the X509 */
if (resourceval) {
*resourceval = res;
- Z_ADDREF_P(val);
+ if (makeresource) {
+ Z_ADDREF_P(val);
+ }
}
return (X509*)what;
}
if (what) {
if (resourceval) {
*resourceval = res;
- Z_ADDREF_P(val);
+ if (makeresource) {
+ Z_ADDREF_P(val);
+ }
}
return (X509_REQ*)what;
}