Skip to content

Commit 03c2e21

Browse files
authored
Merge pull request #1207 from matusmarhefka/fix_memory_leak_seap-command
OVAL/probes/SEAP/seap-command.c: fixed memory leaks
2 parents e3495ee + f142e0e commit 03c2e21

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

src/OVAL/probes/SEAP/seap-command.c

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -231,10 +231,10 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
231231
SEAP_cmdfn_t func,
232232
void *funcarg)
233233
{
234-
SEAP_desc_t *dsc;
235-
SEAP_cmdrec_t *rec;
234+
SEAP_desc_t *dsc = NULL;
235+
SEAP_cmdrec_t *rec = NULL;
236236
SEAP_cmdtbl_t *tbl[2];
237-
SEXP_t *res;
237+
SEXP_t *res = NULL;
238238
int8_t i;
239239

240240
_A(ctx != NULL);
@@ -348,14 +348,17 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
348348
dI("Can't register async command handler: id=%u, tbl=%p, sd=%u: already registered.",
349349
rec->code, (void *)dsc->cmd_w_table, sd);
350350
SEAP_cmdrec_free (rec);
351+
SEAP_packet_free(packet);
351352
return (NULL);
352353
case -1:
353354
dI("Can't register async command handler: id=%u, tbl=%p, sd=%u: errno=%u, %s.",
354355
rec->code, (void *)dsc->cmd_w_table, sd, errno, strerror (errno));
355356
SEAP_cmdrec_free (rec);
357+
SEAP_packet_free(packet);
356358
return (NULL);
357359
default:
358360
SEAP_cmdrec_free (rec);
361+
SEAP_packet_free(packet);
359362
errno = EDOOFUS;
360363
return (NULL);
361364
}
@@ -364,7 +367,7 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
364367
protect_errno {
365368
dI("FAIL: errno=%u, %s.", errno, strerror (errno));
366369
SEAP_cmdtbl_del(dsc->cmd_w_table, rec);
367-
SEAP_packet_free (packet);
370+
SEAP_packet_free(packet);
368371
}
369372
return (NULL);
370373
}
@@ -389,6 +392,7 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
389392

390393
if (SEAP_packet_recv(ctx, sd, &packet_rcv) != 0) {
391394
dI("FAIL: ctx=%p, sd=%d, errno=%u, %s.", ctx, sd, errno, strerror(errno));
395+
SEAP_packet_free(packet);
392396
return(NULL);
393397
}
394398

@@ -399,6 +403,7 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
399403
SEAP_packet_free(packet_rcv);
400404
break;
401405
default:
406+
SEAP_packet_free(packet);
402407
errno = EDOOFUS;
403408
return(NULL);
404409
}
@@ -445,7 +450,7 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
445450
pthread_mutex_unlock (&(h.mtx));
446451
pthread_cond_destroy (&(h.cond));
447452
pthread_mutex_destroy (&(h.mtx));
448-
SEAP_packet_free (packet);
453+
SEAP_packet_free(packet);
449454

450455
return (res);
451456
}
@@ -465,14 +470,17 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
465470
dI("Can't register async command handler: id=%u, tbl=%p, sd=%u: already registered.",
466471
rec->code, (void *)dsc->cmd_w_table, sd);
467472
SEAP_cmdrec_free (rec);
473+
SEAP_packet_free(packet);
468474
return (NULL);
469475
case -1:
470476
dI("Can't register async command handler: id=%u, tbl=%p, sd=%u: errno=%u, %s.",
471477
rec->code, (void *)dsc->cmd_w_table, sd, errno, strerror (errno));
472-
SEAP_cmdrec_free (rec);
478+
SEAP_cmdrec_free(rec);
479+
SEAP_packet_free(packet);
473480
return (NULL);
474481
default:
475-
SEAP_cmdrec_free (rec);
482+
SEAP_cmdrec_free(rec);
483+
SEAP_packet_free(packet);
476484
errno = EDOOFUS;
477485
return (NULL);
478486
}
@@ -481,17 +489,17 @@ SEXP_t *SEAP_cmd_exec (SEAP_CTX_t *ctx,
481489
protect_errno {
482490
dI("FAIL: errno=%u, %s.", errno, strerror (errno));
483491
SEAP_cmdtbl_del(dsc->cmd_w_table, rec);
484-
SEAP_cmdrec_free(rec);
485-
SEAP_packet_free (packet);
492+
SEAP_packet_free(packet);
486493
}
487494
return (NULL);
488495
}
489496

490-
SEAP_packet_free (packet);
497+
SEAP_packet_free(packet);
491498

492499
return (args);
493500
default:
494501
errno = EINVAL;
502+
SEAP_packet_free(packet);
495503
return (NULL);
496504
}
497505
}

0 commit comments

Comments
 (0)