Project

General

Profile

Bug #11810 ยป 0001-ext-openssl-ossl_ssl.c-ssl_npn_select_cb_common-fix-.patch

rhenium (Kazuki Yamaguchi), 12/12/2015 05:09 PM

View differences:

ext/openssl/ossl_ssl.c
{
VALUE selected;
long len;
unsigned char l;
VALUE protocols = rb_ary_new();
unsigned char l;
const unsigned char *in_end = in + inlen;
/* The format is len_1|proto_1|...|len_n|proto_n\0 */
while ((l = *in++) != '\0') {
VALUE protocol;
if (l > inlen) {
ossl_raise(eSSLError, "Invalid protocol name list");
}
protocol = rb_str_new((const char *)in, l);
rb_ary_push(protocols, protocol);
while (in < in_end) {
l = *in++;
rb_ary_push(protocols, rb_str_new((const char *)in, l));
in += l;
inlen -= l;
}
selected = rb_funcall(cb, rb_intern("call"), 1, protocols);
    (1-1/1)