<div dir="ltr"><div><div><div>Hi Martin,<br><br></div>I tested your patch on ppc64 and it works as expected. I still think that resetting record "type" to an initial/default value before passing it to build function in the while loop in tls.c would be better than just passing an uninitialized or without resetting to an initial value. My suggestion would be to have both fixes in place so that in future, if something gets changed around this code, it does not go unnoticed or causes mysterious failures. Just my 2 cents.<br><br></div>Anyway thanks for your help.<br></div>Regards<br>Avesh<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 8, 2015 at 9:10 AM, Avesh Agarwal <span dir="ltr"><<a href="mailto:avesh.ncsu@gmail.com" target="_blank">avesh.ncsu@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Hi Martin,<br><br></div>Thanks. I will test the patch but I am not sure whether it can solve the issue. Because in tls.c, while building records, the value of type should be set to 0 in every invocation in the while loop which is not happening. If type is not reset to 0, it will retain its previous value, and will cause erroneous (*type == ) to be true later leading to failed negotiation. ppc64 being a stricter architecture caught this whereas x86/64 did not. <br></div><br></div>Anyway, I will test your patch and let you know.<br></div>Thanks <br><span class="HOEnZb"><font color="#888888">Avesh<br><div><div><div><br></div></div></div></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 8, 2015 at 5:19 AM, Martin Willi <span dir="ltr"><<a href="mailto:martin@strongswan.org" target="_blank">martin@strongswan.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Avesh,<br>
<span><br>
> It turns out that unintialization of record type in the while loop during<br>
> building of TLS records in tls.c is wreaking havoc on ppc64. I have come up<br>
> with a preliminary patch for upstream review<br>
<br>
</span>Thanks for your in-depth analysis and your patch. There is definitely a<br>
bug while building those records.<br>
<br>
I've tried to address this in a slightly different way. The upper layers<br>
return NEED_MORE if any record has been created. So we actually should<br>
check for that return type before querying the type output parameter.<br>
<br>
Please try the attached patch; I don't have a PPC64 architecture at<br>
hand, so your feedback is much appreciated.<br>
<br>
Regards<br>
<span><font color="#888888">Martin<br>
<br>
<br>
</font></span></blockquote></div><br></div>
</div></div></blockquote></div><br></div>