Skip to content

Commit dd6e4f7

Browse files
committed
server session BUGFIX zero server options on destroy
So that init can be safely called again. Refs CESNET/netopeer2#269
1 parent 69feafd commit dd6e4f7

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

src/session_server.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,9 @@ nc_server_destroy(void)
504504
lydict_remove(server_opts.ctx, server_opts.capabilities[i]);
505505
}
506506
free(server_opts.capabilities);
507+
server_opts.capabilities = NULL;
508+
server_opts.capabilities_count = 0;
509+
507510
pthread_spin_destroy(&server_opts.sid_lock);
508511

509512
#if defined(NC_ENABLED_SSH) || defined(NC_ENABLED_TLS)
@@ -513,20 +516,28 @@ nc_server_destroy(void)
513516
if (server_opts.passwd_auth_data && server_opts.passwd_auth_data_free) {
514517
server_opts.passwd_auth_data_free(server_opts.passwd_auth_data);
515518
}
519+
server_opts.passwd_auth_data = NULL;
520+
server_opts.passwd_auth_data_free = NULL;
516521

517522
nc_server_ssh_del_authkey(NULL, NULL, 0, NULL);
518523

519524
if (server_opts.hostkey_data && server_opts.hostkey_data_free) {
520525
server_opts.hostkey_data_free(server_opts.hostkey_data);
521526
}
527+
server_opts.hostkey_data = NULL;
528+
server_opts.hostkey_data_free = NULL;
522529
#endif
523530
#ifdef NC_ENABLED_TLS
524531
if (server_opts.server_cert_data && server_opts.server_cert_data_free) {
525532
server_opts.server_cert_data_free(server_opts.server_cert_data);
526533
}
534+
server_opts.server_cert_data = NULL;
535+
server_opts.server_cert_data_free = NULL;
527536
if (server_opts.trusted_cert_list_data && server_opts.trusted_cert_list_data_free) {
528537
server_opts.trusted_cert_list_data_free(server_opts.trusted_cert_list_data);
529538
}
539+
server_opts.trusted_cert_list_data = NULL;
540+
server_opts.trusted_cert_list_data_free = NULL;
530541
#endif
531542
nc_destroy();
532543
}

0 commit comments

Comments
 (0)