Branch: Tag:

2020-05-18

2020-05-18 11:07:26 by Henrik Grubbström (Grubba) <grubba@grubba.org>

StartTLSProtocol: Fix dual use of filter_preferred_suites() arguments.

filter_preferred_suites() is used as a Variable.Variable change callback,
in which case it will be called with a Variable.Variable as the first
argument. This conflicted with the filter_preferred_suites() as it
expected a SSL.SSLContext as the first argument. This caused errors
like "Calling the NULL value.".

Move the SSL.SSLContext to the second argument.

Fixes [WS-618].

2507:    }   #endif    -  protected void filter_preferred_suites(SSLContext|void ctx) +  protected void filter_preferred_suites(Variable.Variable|void ignored, +  SSLContext|void ctx)    {    if (!ctx) ctx = this_program::ctx;   #if constant(SSL.ServerConnection)
2638:    SSLContext ctx = SSLContext();    ctx->random = Crypto.Random.random_string;    set_version(ctx); -  filter_preferred_suites(ctx); +  filter_preferred_suites(UNDEFINED, ctx);       foreach(keypairs, int keypair_id) {    array(Crypto.Sign.State|array(string)) keypair =
2950:    set_version(ctx);   #endif    -  filter_preferred_suites(ctx); +  filter_preferred_suites(UNDEFINED, ctx);       certificates_changed (0, ignore_eaddrinuse);