<html><head></head><body><div class="yahoo-style-wrap" style="font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:16px;"><div dir="ltr" data-setdir="false"><div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">I am using OpenSSL 1.1.1k Version, From that I see following are done in OpenSSL code, pls correct me if I am wrong.</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><br></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><br></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">Inside SSL_new:<br clear="none"></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><br clear="none"></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">SSL *SSL_new(SSL_CTX *ctx)</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">{</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">    SSL *s;</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     .......</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     .......</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     s = OPENSSL_zalloc(sizeof(*s));</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     ....</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     ....</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     SSL_CTX_up_ref(ctx);</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;" data-setdir="false">     s->ctx = ctx;   <font color="#cd232c">/* <b>ctx</b> value to <b>s->ctx</b> , also gets freed when called SLL_free(s) ==>  <span><span style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">SSL_CTX_free(s->ctx)</span></span>*/</font><br clear="none"></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     ....</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     ....</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     SSL_CTX_up_ref(ctx);<br clear="none"></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     s->session_ctx = ctx;<font color="#cd232c"> /* same value is getting assigned here also */</font></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     .....</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     return s;</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">}</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><br clear="none"></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">Inside SSL_free:</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">void SSL_free(SSL *s)</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">{</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     if ( s == NULL)</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">           return;</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     X509_VERIFY_PARAM_free(s->param);</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     .....</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">     .....</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">    SSL_CTX_free(<span style="color: rgb(0, 0, 0);"> s->session_ctx); </span><font color="#cd232c">/* this holds the value of ctx that was passed t</font></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><font color="#cd232c">o SSL_new(), yes or no? */</font></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><span style="color: rgb(0, 0, 0);">    .....</span></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><span style="color: rgb(0, 0, 0);">    .....</span></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><span style="color: rgb(0, 0, 0);">    SSL_CTX_free(</span><span style="color: rgb(0, 0, 0);"> s->ctx); </span><font color="#cd232c">/* this again trying to free the same pointer , abnormal behavior */</font><br clear="none"></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">}</div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><br clear="none"></div><div dir="ltr" style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;" data-setdir="false">Point here is inside SSL_CTX_free(), after freeing  "<span style="color: rgb(0, 0, 0);">s->session_ctx" , we are not setting <span><span style="color: rgb(0, 0, 0); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">"</span><span style="color: rgb(0, 0, 0); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">s->session_ctx" to NULL(this may be optional, its ok if we don't use the same pointer again), but </span></span></span>"s->session_ctx" and "s->ctx" both have same value. So applying "free()" on same value again ( through <span><span style="color: rgb(0, 0, 0); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"> SSL_CTX_free(</span><span style="color: rgb(0, 0, 0); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"> s->ctx); ) </span></span>will result in abnormal behavior, <b>correct or not?</b></div></div><div dir="ltr" style="" data-setdir="false"><br></div><div dir="ltr" style="" data-setdir="false">I could not understand how OpenSSL <b>free() </b>ing pointers if they are assigned to multiple different variables.</div><div dir="ltr" style="" data-setdir="false"><br></div><div dir="ltr" style="" data-setdir="false">Note: tried going through "<span><span style="color: rgb(0, 0, 0); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">SSL_CTX_up_ref(ctx);" , and <span><span style="color: rgb(0, 0, 0); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">"</span><span style="color: rgb(0, 0, 0); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">SSL_CTX_down_ref(ctx);", looks like they are tracking the pointer usage count by other APIs, but could not understand what exactly they are doing...when count is 0.</span></span></span></span></div><div dir="ltr" style="" data-setdir="false"><span><span style="color: rgb(0, 0, 0); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><span><span style="color: rgb(0, 0, 0); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><br></span></span></span></span></div><div dir="ltr" style="" data-setdir="false"><span><span style="color: rgb(0, 0, 0); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><span><span style="color: rgb(0, 0, 0); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;">Could someone please elaborate a bit ..</span></span></span></span></div><div dir="ltr" style="" data-setdir="false"><span><span style="color: rgb(0, 0, 0); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><span><span style="color: rgb(0, 0, 0); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px;"><br></span></span></span></span></div><div dir="ltr" style="" data-setdir="false">Chand..</div><br></div></div></body></html>