Skip to content

Commit 94de46b

Browse files
committed
session server BUGFIX fix bugs found by coverity
1 parent 916d666 commit 94de46b

File tree

4 files changed

+22
-8
lines changed

4 files changed

+22
-8
lines changed

src/server_config.c

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5438,12 +5438,25 @@ nc_server_config_tls_dup(const struct nc_server_tls_opts *src, struct nc_server_
54385438
dst_ctn->id = src_ctn->id;
54395439
if (src_ctn->fingerprint) {
54405440
dst_ctn->fingerprint = strdup(src_ctn->fingerprint);
5441-
NC_CHECK_ERRMEM_GOTO(!dst_ctn->fingerprint, rc = 1, cleanup);
5441+
if (!dst_ctn->fingerprint) {
5442+
/* we need to free the dst_ctn we just allocated */
5443+
free(dst_ctn);
5444+
rc = 1;
5445+
ERRMEM;
5446+
goto cleanup;
5447+
}
54425448
}
54435449
dst_ctn->map_type = src_ctn->map_type;
54445450
if (src_ctn->name) {
54455451
dst_ctn->name = strdup(src_ctn->name);
5446-
NC_CHECK_ERRMEM_GOTO(!dst_ctn->name, rc = 1, cleanup);
5452+
if (!dst_ctn->name) {
5453+
/* we need to free the dst_ctn we just allocated */
5454+
free(dst_ctn->fingerprint);
5455+
free(dst_ctn);
5456+
rc = 1;
5457+
ERRMEM;
5458+
goto cleanup;
5459+
}
54475460
}
54485461

54495462
if (prev_ctn) {

src/session_server.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4171,9 +4171,7 @@ nc_server_notif_cert_exp_thread(void *arg)
41714171
if (targ->clb_free_data) {
41724172
targ->clb_free_data(targ->clb_data);
41734173
}
4174-
if (exp_dates) {
4175-
nc_server_notif_cert_exp_data_destroy(exp_dates, exp_date_count, intervals);
4176-
}
4174+
nc_server_notif_cert_exp_data_destroy(exp_dates, exp_date_count, intervals);
41774175
free(targ);
41784176
return NULL;
41794177
}

src/session_server_tls.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ _nc_server_tls_verify_peer_cert(void *peer_cert, struct nc_server_tls_client_aut
522522
int ret;
523523
void *cert;
524524
struct nc_certificate *certs;
525-
uint32_t i, cert_count;
525+
uint32_t i, cert_count = 0;
526526

527527
if (client_auth->ee_certs_store == NC_STORE_LOCAL) {
528528
/* local definition */

tests/test_config.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -645,19 +645,22 @@ read_config_file(const char *path, char **mem)
645645
{
646646
FILE *f;
647647
long fsize;
648+
size_t read;
648649

649650
f = fopen(path, "r");
650651
assert_non_null(f);
651652

652653
fseek(f, 0, SEEK_END);
653654
fsize = ftell(f);
655+
assert_true(fsize > 0);
654656
fseek(f, 0, SEEK_SET);
655657

656658
*mem = malloc(fsize + 1);
657659
assert_non_null(*mem);
658660

659-
fread(*mem, 1, fsize, f);
660-
(*mem)[fsize] = '\0';
661+
read = fread(*mem, 1, fsize, f);
662+
assert_int_equal(read, fsize);
663+
(*mem)[read] = '\0';
661664

662665
fclose(f);
663666
}

0 commit comments

Comments
 (0)