1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-09 00:00:04 +01:00

ss: policy: unwind after policy syntax errors cleanly

This commit is contained in:
Andy Green 2021-09-22 06:11:19 +01:00
parent 8c7d541011
commit ad990a61a0
5 changed files with 21 additions and 7 deletions

View file

@ -107,7 +107,7 @@ void
lejp_destruct(struct lejp_ctx *ctx)
{
/* no allocations... just let callback know what it happening */
if (ctx->pst[0].callback)
if (ctx && ctx->pst[0].callback)
ctx->pst[0].callback(ctx, LEJPCB_DESTRUCTED);
}

View file

@ -420,6 +420,9 @@ lws_ss_policy_set(struct lws_context *context, const char *name)
* policy that's laid out in args->ac
*/
if (!args)
return 1;
lejp_destruct(&args->jctx);
if (context->ac_policy) {

View file

@ -1152,10 +1152,16 @@ lws_ss_policy_parse_abandon(struct lws_context *context)
* Free all the client DER buffers now they have been parsed
* into tls library X.509 objects
*/
if (!x->keep) { /* used for server */
lws_free((void *)x->ca_der);
x->ca_der = NULL;
}
lws_free((void *)x->ca_der);
x->ca_der = NULL;
x = x->next;
}
x = context->server_der_list;
while (x) {
lws_free((void *)x->ca_der);
x->ca_der = NULL;
x = x->next;
}
@ -1164,6 +1170,8 @@ lws_ss_policy_parse_abandon(struct lws_context *context)
lwsac_free(&args->ac);
lws_free_set_NULL(context->pol_args);
context->server_der_list = NULL;
return 0;
}

View file

@ -1052,7 +1052,7 @@ malformed:
if (!h)
return -1;
lwsl_notice("%s: LWS_CALLBACK_HTTP\n", __func__);
lwsl_info("%s: LWS_CALLBACK_HTTP\n", __func__);
{
h->txn_resp_set = 0;
@ -1113,7 +1113,9 @@ malformed:
r = lws_ss_event_helper(h, LWSSSCS_SERVER_TXN);
if (r)
return _lws_ss_handle_state_ret_CAN_DESTROY_HANDLE(r, wsi, &h);
return _lws_ss_handle_state_ret_CAN_DESTROY_HANDLE(r,
wsi, &h);
return 0;
#endif

View file

@ -293,6 +293,7 @@ lws_ss_check_next_state(lws_lifecycle_t *lc, uint8_t *prevstate,
{
if (cs >= LWSSSCS_USER_BASE ||
cs == LWSSSCS_EVENT_WAIT_CANCELLED ||
cs == LWSSSCS_SERVER_TXN ||
cs == LWSSSCS_UPSTREAM_LINK_RETRY)
/*
* we can't judge user or transient states, leave the old state