thisline[--len] = 0;
dec_size = base64dec(thisline, len, (char *) (keys_ref->tlskeys + i % TLS_TICKETS_NO), sizeof(union tls_sess_key));
+ ha_memset_s(thisline, 0, sizeof(thisline));
if (dec_size < 0) {
memprintf(err, "'%s' : unable to decode base64 key on line %d", args[cur_arg+1], i + 1);
goto fail;
return 0;
fail:
+ ha_memset_s(thisline, 0, sizeof(thisline));
if (f)
fclose(f);
if (keys_ref) {
free(keys_ref->filename);
- free(keys_ref->tlskeys);
+ if (keys_ref->tlskeys) {
+ ha_memset_s(keys_ref->tlskeys, 0,
+ sizeof(*keys_ref->tlskeys) * TLS_TICKETS_NO);
+ free(keys_ref->tlskeys);
+ }
free(keys_ref);
}
return ERR_ALERT | ERR_FATAL;
free(bind_conf->ca_sign_pass);
if (bind_conf->keys_ref && !--bind_conf->keys_ref->refcount) {
free(bind_conf->keys_ref->filename);
- free(bind_conf->keys_ref->tlskeys);
+ if (bind_conf->keys_ref->tlskeys) {
+ ha_memset_s(bind_conf->keys_ref->tlskeys, 0,
+ sizeof(*bind_conf->keys_ref->tlskeys) * TLS_TICKETS_NO);
+ free(bind_conf->keys_ref->tlskeys);
+ }
LIST_DELETE(&bind_conf->keys_ref->list);
free(bind_conf->keys_ref);
}
return cli_err(appctx, "'set ssl tls-key' received invalid base64 encoded TLS key.\n");
trash.data = ret;
- if (ssl_sock_update_tlskey_ref(ref, &trash) < 0)
+ ret = ssl_sock_update_tlskey_ref(ref, &trash);
+ ha_memset_s(trash.area, 0, trash.data);
+ chunk_reset(&trash);
+ if (ret < 0)
return cli_err(appctx, "'set ssl tls-key' received a key of wrong size.\n");
return cli_msg(appctx, LOG_INFO, "TLS ticket key updated!\n");