This mapping has 2 multi-map groups: several pairings are equally correct there. The code view shows one arbitrary valid pairing, not the only one.

Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

…lines 1–292 unchanged (292 lines)
293 BIO *in = NULL;
294 int rv = 0;
295 OSSL_LIB_CTX *libctx = NULL;
296 const char *propq = NULL;
297
298 s = SSL_CONNECTION_FROM_SSL(ssl);
299 if (s == NULL || ec == NULL || eclen == NULL)
300 goto err;
301 if (s->ext.ech.returned == NULL) {
302 *ec = NULL;
303 *eclen = 0;
304 return 1;
305 }
306 /*
307 * To not hand rubbish to application, we'll decode the value we have
…lines 308–312 unchanged (5 lines)
313 */
314 if (s->ext.ech.es != NULL) {
315 libctx = s->ext.ech.es->libctx;
316 propq = s->ext.ech.es->propq;
317 }
318 if ((in = BIO_new(BIO_s_mem())) == NULL
319 || BIO_write(in, s->ext.ech.returned, s->ext.ech.returned_len) <= 0
320 || (ve = OSSL_ECHSTORE_new(libctx, propq)) == NULL) {
321 ERR_raise(ERR_LIB_SSL, ERR_R_INTERNAL_ERROR);
322 goto err;
323 }
324 if (OSSL_ECHSTORE_read_echconfiglist(ve, in) != 1) {
325 ERR_raise(ERR_LIB_SSL, ERR_R_INTERNAL_ERROR);
…lines 326–351 unchanged (26 lines)
352 }
353 OPENSSL_free(ctx->ext.ech.alpn_outer);
354 ctx->ext.ech.alpn_outer = NULL;
355 if (protos == NULL)
356 return 1;
357 if (protos_len == 0) {
358 ERR_raise(ERR_LIB_SSL, ERR_R_PASSED_NULL_PARAMETER);
359 return 0;
360 }
361 ctx->ext.ech.alpn_outer = OPENSSL_memdup(protos, protos_len);
362 if (ctx->ext.ech.alpn_outer == NULL)
363 return 0;
364 ctx->ext.ech.alpn_outer_len = protos_len;
…lines 365–409 unchanged (45 lines)
410 }
411 if (ecl == NULL) {
412 OSSL_ECHSTORE_free(s->ext.ech.es);
413 s->ext.ech.es = NULL;
414 return 1;
415 }
416 if (ecl_len == 0) {
417 ERR_raise(ERR_LIB_SSL, ERR_R_INTERNAL_ERROR);
418 goto err;
419 }
420 if ((es_in = BIO_new_mem_buf(ecl, ecl_len)) == NULL
421 || (es = OSSL_ECHSTORE_new(NULL, NULL)) == NULL
422 || OSSL_ECHSTORE_read_echconfiglist(es, es_in) != 1
423 || SSL_set1_echstore(ssl, es) != 1) {
424 ERR_raise(ERR_LIB_SSL, ERR_R_INTERNAL_ERROR);
425 goto err;
426 }
…lines 427–433 unchanged (7 lines)

After

…lines 1–292 unchanged (292 lines)
293 BIO *in = NULL;
294 int rv = 0;
295 OSSL_LIB_CTX *libctx = NULL;
296 const char *propq = NULL;
297
298 s = SSL_CONNECTION_FROM_SSL(ssl);
299 if (s == NULL || ec == NULL || eclen == NULL
300 || s->ext.ech.returned_len > INT_MAX) {
301 ERR_raise(ERR_LIB_SSL, ERR_R_PASSED_INVALID_ARGUMENT);
302 goto err;
303 }
304 if (s->ext.ech.returned == NULL) {
305 *ec = NULL;
306 *eclen = 0;
307 return 1;
308 }
309 /*
…lines 310–315 unchanged (6 lines)
316 */
317 if (s->ext.ech.es != NULL) {
318 libctx = s->ext.ech.es->libctx;
319 propq = s->ext.ech.es->propq;
320 }
321 if ((in = BIO_new(BIO_s_mem())) == NULL
322 || BIO_write(in, s->ext.ech.returned, (int)s->ext.ech.returned_len) <= 0
323 || (ve = OSSL_ECHSTORE_new(libctx, propq)) == NULL) {
324 ERR_raise(ERR_LIB_SSL, ERR_R_INTERNAL_ERROR);
325 goto err;
326 }
327 if (OSSL_ECHSTORE_read_echconfiglist(ve, in) != 1) {
328 ERR_raise(ERR_LIB_SSL, ERR_R_INTERNAL_ERROR);
…lines 329–354 unchanged (26 lines)
355 }
356 OPENSSL_free(ctx->ext.ech.alpn_outer);
357 ctx->ext.ech.alpn_outer = NULL;
358 if (protos == NULL)
359 return 1;
360 if (protos_len == 0) {
361 ERR_raise(ERR_LIB_SSL, ERR_R_PASSED_INVALID_ARGUMENT);
362 return 0;
363 }
364 ctx->ext.ech.alpn_outer = OPENSSL_memdup(protos, protos_len);
365 if (ctx->ext.ech.alpn_outer == NULL)
366 return 0;
367 ctx->ext.ech.alpn_outer_len = protos_len;
…lines 368–412 unchanged (45 lines)
413 }
414 if (ecl == NULL) {
415 OSSL_ECHSTORE_free(s->ext.ech.es);
416 s->ext.ech.es = NULL;
417 return 1;
418 }
419 if (ecl_len == 0 || ecl_len > INT_MAX) {
420 ERR_raise(ERR_LIB_SSL, ERR_R_PASSED_INVALID_ARGUMENT);
421 goto err;
422 }
423 if ((es_in = BIO_new_mem_buf(ecl, (int)ecl_len)) == NULL
424 || (es = OSSL_ECHSTORE_new(NULL, NULL)) == NULL
425 || OSSL_ECHSTORE_read_echconfiglist(es, es_in) != 1
426 || SSL_set1_echstore(ssl, es) != 1) {
427 ERR_raise(ERR_LIB_SSL, ERR_R_INTERNAL_ERROR);
428 goto err;
429 }
…lines 430–436 unchanged (7 lines)

Before

translation_unit
comment "/*\n * Copyright 2024 The OpenSSL Project Authors. All Rights"...
preproc_include
#include "#include"
system_lib_string "<openssl/ssl.h>"
preproc_include
#include "#include"
system_lib_string "<openssl/ech.h>"
preproc_include
#include "#include"
string_literal
" "\""
string_content "internal/ssl_unwrap.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "../ssl_local.h"
" "\""
function_definition (+146 nodes collapsed)
function_definition (+168 nodes collapsed)
function_definition (+133 nodes collapsed)
function_definition (+150 nodes collapsed)
function_definition (+283 nodes collapsed)
function_definition (+198 nodes collapsed)
comment "/*\n * Note that this function returns 1 for success and 0 fo"...
function_definition (+214 nodes collapsed)
function_definition (+826 nodes collapsed)
function_definition (+163 nodes collapsed)
function_definition (+84 nodes collapsed)
function_definition (+67 nodes collapsed)
function_definition
primitive_type "int"
function_declarator (+26 nodes collapsed)
compound_statement
{ "{"
declaration
type_identifier "SSL_CONNECTION"
pointer_declarator
* "*"
identifier "s"
; ";"
declaration
type_identifier "OSSL_ECHSTORE"
init_declarator
pointer_declarator
* "*"
identifier "ve"
= "="
null
NULL "NULL"
; ";"
declaration
type_identifier "BIO"
init_declarator
pointer_declarator
* "*"
identifier "in"
= "="
null
NULL "NULL"
; ";"
declaration
primitive_type "int"
init_declarator
identifier "rv"
= "="
number_literal "0"
; ";"
declaration
type_identifier "OSSL_LIB_CTX"
init_declarator
pointer_declarator
* "*"
identifier "libctx"
= "="
null
NULL "NULL"
; ";"
declaration
type_qualifier
const "const"
primitive_type "char"
init_declarator
pointer_declarator
* "*"
identifier "propq"
= "="
null
NULL "NULL"
; ";"
expression_statement
assignment_expression
identifier "s"
= "="
call_expression
identifier "SSL_CONNECTION_FROM_SSL"
argument_list
( "("
identifier "ssl"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression any 3:4
binary_expression any 3:4
binary_expression any 3:4
identifier "s"
== "=="
null
NULL "NULL"
|| "||"
binary_expression
identifier "ec"
== "=="
null
NULL "NULL"
|| "||"
binary_expression
identifier "eclen"
== "=="
null
NULL "NULL"
) ")"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
if_statement (+43 nodes collapsed)
comment "/*\n * To not hand rubbish to application, we'll decode t"...
if_statement (+58 nodes collapsed)
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
binary_expression
binary_expression
parenthesized_expression
( "("
assignment_expression
identifier "in"
= "="
call_expression
identifier "BIO_new"
argument_list
( "("
call_expression
identifier "BIO_s_mem"
argument_list
( "("
) ")"
) ")"
) ")"
== "=="
null
NULL "NULL"
|| "||"
binary_expression
call_expression
identifier "BIO_write"
argument_list
( "("
identifier "in"
, ","
field_expression
field_expression
field_expression
identifier "s"
-> "->"
field_identifier "ext"
. "."
field_identifier "ech"
. "."
field_identifier "returned"
, ","
field_expression
field_expression
field_expression
identifier "s"
-> "->"
field_identifier "ext"
. "."
field_identifier "ech"
. "."
field_identifier "returned_len"
) ")"
<= "<="
number_literal "0"
|| "||"
binary_expression
parenthesized_expression
( "("
assignment_expression
identifier "ve"
= "="
call_expression
identifier "OSSL_ECHSTORE_new"
argument_list
( "("
identifier "libctx"
, ","
identifier "propq"
) ")"
) ")"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_SSL"
, ","
identifier "ERR_R_INTERNAL_ERROR"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
if_statement (+33 nodes collapsed)
comment "/* all good, copy and return */"
expression_statement (+33 nodes collapsed)
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
pointer_expression
* "*"
identifier "ec"
== "=="
null
NULL "NULL"
) ")"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
expression_statement
assignment_expression
pointer_expression
* "*"
identifier "eclen"
= "="
field_expression
field_expression
field_expression
identifier "s"
-> "->"
field_identifier "ext"
. "."
field_identifier "ech"
. "."
field_identifier "returned_len"
; ";"
expression_statement
assignment_expression
identifier "rv"
= "="
number_literal "1"
; ";"
labeled_statement
statement_identifier "err"
: ":"
expression_statement
call_expression
identifier "OSSL_ECHSTORE_free"
argument_list
( "("
identifier "ve"
) ")"
; ";"
expression_statement
call_expression
identifier "BIO_free_all"
argument_list
( "("
identifier "in"
) ")"
; ";"
return_statement
return "return"
identifier "rv"
; ";"
} "}"
comment "/*\n * Note that this function returns 1 for success and 0 fo"...
function_definition
primitive_type "int"
function_declarator (+26 nodes collapsed)
compound_statement
{ "{"
if_statement (+27 nodes collapsed)
expression_statement
call_expression
identifier "OPENSSL_free"
argument_list
( "("
field_expression
field_expression
field_expression
identifier "ctx"
-> "->"
field_identifier "ext"
. "."
field_identifier "ech"
. "."
field_identifier "alpn_outer"
) ")"
; ";"
expression_statement
assignment_expression
field_expression
field_expression
field_expression
identifier "ctx"
-> "->"
field_identifier "ext"
. "."
field_identifier "ech"
. "."
field_identifier "alpn_outer"
= "="
null
NULL "NULL"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "protos"
== "=="
null
NULL "NULL"
) ")"
return_statement
return "return"
number_literal "1"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "protos_len"
== "=="
number_literal "0"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_SSL"
, ","
identifier "ERR_R_PASSED_NULL_PARAMETER"
) ")"
; ";"
return_statement
return "return"
number_literal "0"
; ";"
} "}"
expression_statement (+22 nodes collapsed)
if_statement (+23 nodes collapsed)
expression_statement
assignment_expression
field_expression
field_expression
field_expression
identifier "ctx"
-> "->"
field_identifier "ext"
. "."
field_identifier "ech"
. "."
field_identifier "alpn_outer_len"
= "="
identifier "protos_len"
; ";"
return_statement
return "return"
number_literal "1"
; ";"
} "}"
function_definition (+111 nodes collapsed)
function_definition (+63 nodes collapsed)
function_definition
primitive_type "int"
function_declarator (+22 nodes collapsed)
compound_statement
{ "{"
declaration
primitive_type "int"
init_declarator
identifier "rv"
= "="
number_literal "0"
; ";"
declaration
type_identifier "SSL_CONNECTION"
pointer_declarator
* "*"
identifier "s"
; ";"
declaration
type_identifier "OSSL_ECHSTORE"
init_declarator
pointer_declarator
* "*"
identifier "es"
= "="
null
NULL "NULL"
; ";"
declaration
type_identifier "BIO"
init_declarator
pointer_declarator
* "*"
identifier "es_in"
= "="
null
NULL "NULL"
; ";"
expression_statement
assignment_expression
identifier "s"
= "="
call_expression
identifier "SSL_CONNECTION_FROM_SSL"
argument_list
( "("
identifier "ssl"
) ")"
; ";"
if_statement (+27 nodes collapsed)
if_statement (+50 nodes collapsed)
if_statement
if "if"
parenthesized_expression
( "("
binary_expression any 1:2
identifier "ecl_len"
== "=="
number_literal "0"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_SSL"
, ","
identifier "ERR_R_INTERNAL_ERROR"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
binary_expression
binary_expression
binary_expression
parenthesized_expression
( "("
assignment_expression
identifier "es_in"
= "="
call_expression
identifier "BIO_new_mem_buf"
argument_list
( "("
identifier "ecl"
, ","
identifier "ecl_len"
) ")"
) ")"
== "=="
null
NULL "NULL"
|| "||"
binary_expression
parenthesized_expression
( "("
assignment_expression
identifier "es"
= "="
call_expression
identifier "OSSL_ECHSTORE_new"
argument_list
( "("
null
NULL "NULL"
, ","
null
NULL "NULL"
) ")"
) ")"
== "=="
null
NULL "NULL"
|| "||"
binary_expression
call_expression
identifier "OSSL_ECHSTORE_read_echconfiglist"
argument_list
( "("
identifier "es"
, ","
identifier "es_in"
) ")"
!= "!="
number_literal "1"
|| "||"
binary_expression
call_expression
identifier "SSL_set1_echstore"
argument_list
( "("
identifier "ssl"
, ","
identifier "es"
) ")"
!= "!="
number_literal "1"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_SSL"
, ","
identifier "ERR_R_INTERNAL_ERROR"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
expression_statement
assignment_expression
identifier "rv"
= "="
number_literal "1"
; ";"
labeled_statement
statement_identifier "err"
: ":"
expression_statement
call_expression
identifier "OSSL_ECHSTORE_free"
argument_list
( "("
identifier "es"
) ")"
; ";"
expression_statement
call_expression
identifier "BIO_free_all"
argument_list
( "("
identifier "es_in"
) ")"
; ";"
return_statement
return "return"
identifier "rv"
; ";"
} "}"

After

translation_unit
comment "/*\n * Copyright 2024 The OpenSSL Project Authors. All Rights"...
preproc_include
#include "#include"
system_lib_string "<openssl/ssl.h>"
preproc_include
#include "#include"
system_lib_string "<openssl/ech.h>"
preproc_include
#include "#include"
string_literal
" "\""
string_content "internal/ssl_unwrap.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "../ssl_local.h"
" "\""
function_definition (+146 nodes collapsed)
function_definition (+168 nodes collapsed)
function_definition (+133 nodes collapsed)
function_definition (+150 nodes collapsed)
function_definition (+283 nodes collapsed)
function_definition (+198 nodes collapsed)
comment "/*\n * Note that this function returns 1 for success and 0 fo"...
function_definition (+214 nodes collapsed)
function_definition (+826 nodes collapsed)
function_definition (+163 nodes collapsed)
function_definition (+84 nodes collapsed)
function_definition (+67 nodes collapsed)
function_definition
primitive_type "int"
function_declarator (+26 nodes collapsed)
compound_statement
{ "{"
declaration
type_identifier "SSL_CONNECTION"
pointer_declarator
* "*"
identifier "s"
; ";"
declaration
type_identifier "OSSL_ECHSTORE"
init_declarator
pointer_declarator
* "*"
identifier "ve"
= "="
null
NULL "NULL"
; ";"
declaration
type_identifier "BIO"
init_declarator
pointer_declarator
* "*"
identifier "in"
= "="
null
NULL "NULL"
; ";"
declaration
primitive_type "int"
init_declarator
identifier "rv"
= "="
number_literal "0"
; ";"
declaration
type_identifier "OSSL_LIB_CTX"
init_declarator
pointer_declarator
* "*"
identifier "libctx"
= "="
null
NULL "NULL"
; ";"
declaration
type_qualifier
const "const"
primitive_type "char"
init_declarator
pointer_declarator
* "*"
identifier "propq"
= "="
null
NULL "NULL"
; ";"
expression_statement
assignment_expression
identifier "s"
= "="
call_expression
identifier "SSL_CONNECTION_FROM_SSL"
argument_list
( "("
identifier "ssl"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression any 3:4
binary_expression any 3:4
binary_expression any 3:4
binary_expression any 3:4
identifier "s"
== "=="
null
NULL "NULL"
|| "||"
binary_expression
identifier "ec"
== "=="
null
NULL "NULL"
|| "||"
binary_expression
identifier "eclen"
== "=="
null
NULL "NULL"
|| "||"
binary_expression
field_expression
field_expression
field_expression
identifier "s"
-> "->"
field_identifier "ext"
. "."
field_identifier "ech"
. "."
field_identifier "returned_len"
> ">"
identifier "INT_MAX"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_SSL"
, ","
identifier "ERR_R_PASSED_INVALID_ARGUMENT"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
if_statement (+43 nodes collapsed)
comment "/*\n * To not hand rubbish to application, we'll decode t"...
if_statement (+58 nodes collapsed)
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
binary_expression
binary_expression
parenthesized_expression
( "("
assignment_expression
identifier "in"
= "="
call_expression
identifier "BIO_new"
argument_list
( "("
call_expression
identifier "BIO_s_mem"
argument_list
( "("
) ")"
) ")"
) ")"
== "=="
null
NULL "NULL"
|| "||"
binary_expression
call_expression
identifier "BIO_write"
argument_list
( "("
identifier "in"
, ","
field_expression
field_expression
field_expression
identifier "s"
-> "->"
field_identifier "ext"
. "."
field_identifier "ech"
. "."
field_identifier "returned"
, ","
cast_expression
( "("
type_descriptor
primitive_type "int"
) ")"
field_expression
field_expression
field_expression
identifier "s"
-> "->"
field_identifier "ext"
. "."
field_identifier "ech"
. "."
field_identifier "returned_len"
) ")"
<= "<="
number_literal "0"
|| "||"
binary_expression
parenthesized_expression
( "("
assignment_expression
identifier "ve"
= "="
call_expression
identifier "OSSL_ECHSTORE_new"
argument_list
( "("
identifier "libctx"
, ","
identifier "propq"
) ")"
) ")"
== "=="
null
NULL "NULL"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_SSL"
, ","
identifier "ERR_R_INTERNAL_ERROR"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
if_statement (+33 nodes collapsed)
comment "/* all good, copy and return */"
expression_statement (+33 nodes collapsed)
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
pointer_expression
* "*"
identifier "ec"
== "=="
null
NULL "NULL"
) ")"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
expression_statement
assignment_expression
pointer_expression
* "*"
identifier "eclen"
= "="
field_expression
field_expression
field_expression
identifier "s"
-> "->"
field_identifier "ext"
. "."
field_identifier "ech"
. "."
field_identifier "returned_len"
; ";"
expression_statement
assignment_expression
identifier "rv"
= "="
number_literal "1"
; ";"
labeled_statement
statement_identifier "err"
: ":"
expression_statement
call_expression
identifier "OSSL_ECHSTORE_free"
argument_list
( "("
identifier "ve"
) ")"
; ";"
expression_statement
call_expression
identifier "BIO_free_all"
argument_list
( "("
identifier "in"
) ")"
; ";"
return_statement
return "return"
identifier "rv"
; ";"
} "}"
comment "/*\n * Note that this function returns 1 for success and 0 fo"...
function_definition
primitive_type "int"
function_declarator (+26 nodes collapsed)
compound_statement
{ "{"
if_statement (+27 nodes collapsed)
expression_statement
call_expression
identifier "OPENSSL_free"
argument_list
( "("
field_expression
field_expression
field_expression
identifier "ctx"
-> "->"
field_identifier "ext"
. "."
field_identifier "ech"
. "."
field_identifier "alpn_outer"
) ")"
; ";"
expression_statement
assignment_expression
field_expression
field_expression
field_expression
identifier "ctx"
-> "->"
field_identifier "ext"
. "."
field_identifier "ech"
. "."
field_identifier "alpn_outer"
= "="
null
NULL "NULL"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "protos"
== "=="
null
NULL "NULL"
) ")"
return_statement
return "return"
number_literal "1"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "protos_len"
== "=="
number_literal "0"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_SSL"
, ","
identifier "ERR_R_PASSED_INVALID_ARGUMENT"
) ")"
; ";"
return_statement
return "return"
number_literal "0"
; ";"
} "}"
expression_statement (+22 nodes collapsed)
if_statement (+23 nodes collapsed)
expression_statement
assignment_expression
field_expression
field_expression
field_expression
identifier "ctx"
-> "->"
field_identifier "ext"
. "."
field_identifier "ech"
. "."
field_identifier "alpn_outer_len"
= "="
identifier "protos_len"
; ";"
return_statement
return "return"
number_literal "1"
; ";"
} "}"
function_definition (+111 nodes collapsed)
function_definition (+63 nodes collapsed)
function_definition
primitive_type "int"
function_declarator (+22 nodes collapsed)
compound_statement
{ "{"
declaration
primitive_type "int"
init_declarator
identifier "rv"
= "="
number_literal "0"
; ";"
declaration
type_identifier "SSL_CONNECTION"
pointer_declarator
* "*"
identifier "s"
; ";"
declaration
type_identifier "OSSL_ECHSTORE"
init_declarator
pointer_declarator
* "*"
identifier "es"
= "="
null
NULL "NULL"
; ";"
declaration
type_identifier "BIO"
init_declarator
pointer_declarator
* "*"
identifier "es_in"
= "="
null
NULL "NULL"
; ";"
expression_statement
assignment_expression
identifier "s"
= "="
call_expression
identifier "SSL_CONNECTION_FROM_SSL"
argument_list
( "("
identifier "ssl"
) ")"
; ";"
if_statement (+27 nodes collapsed)
if_statement (+50 nodes collapsed)
if_statement
if "if"
parenthesized_expression
( "("
binary_expression any 1:2
binary_expression any 1:2
identifier "ecl_len"
== "=="
number_literal "0"
|| "||"
binary_expression
identifier "ecl_len"
> ">"
identifier "INT_MAX"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_SSL"
, ","
identifier "ERR_R_PASSED_INVALID_ARGUMENT"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
binary_expression
binary_expression
binary_expression
parenthesized_expression
( "("
assignment_expression
identifier "es_in"
= "="
call_expression
identifier "BIO_new_mem_buf"
argument_list
( "("
identifier "ecl"
, ","
cast_expression
( "("
type_descriptor
primitive_type "int"
) ")"
identifier "ecl_len"
) ")"
) ")"
== "=="
null
NULL "NULL"
|| "||"
binary_expression
parenthesized_expression
( "("
assignment_expression
identifier "es"
= "="
call_expression
identifier "OSSL_ECHSTORE_new"
argument_list
( "("
null
NULL "NULL"
, ","
null
NULL "NULL"
) ")"
) ")"
== "=="
null
NULL "NULL"
|| "||"
binary_expression
call_expression
identifier "OSSL_ECHSTORE_read_echconfiglist"
argument_list
( "("
identifier "es"
, ","
identifier "es_in"
) ")"
!= "!="
number_literal "1"
|| "||"
binary_expression
call_expression
identifier "SSL_set1_echstore"
argument_list
( "("
identifier "ssl"
, ","
identifier "es"
) ")"
!= "!="
number_literal "1"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "ERR_raise"
argument_list
( "("
identifier "ERR_LIB_SSL"
, ","
identifier "ERR_R_INTERNAL_ERROR"
) ")"
; ";"
goto_statement
goto "goto"
statement_identifier "err"
; ";"
} "}"
expression_statement
assignment_expression
identifier "rv"
= "="
number_literal "1"
; ";"
labeled_statement
statement_identifier "err"
: ":"
expression_statement
call_expression
identifier "OSSL_ECHSTORE_free"
argument_list
( "("
identifier "es"
) ")"
; ";"
expression_statement
call_expression
identifier "BIO_free_all"
argument_list
( "("
identifier "es_in"
) ")"
; ";"
return_statement
return "return"
identifier "rv"
; ";"
} "}"