Skip to content

Commit 950fcfa

Browse files
committed
Unirec output: added check of failed array allocation for some conversion functions
1 parent 6c0c313 commit 950fcfa

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

extra_plugins/output/unirec/src/translator.c

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ translate_array_uint(translator_t *trans, const struct translator_rec *rec,
564564
while ((rc = fds_blist_iter_next(&list_it)) == FDS_OK) {
565565
uint64_t value;
566566
void *field_ptr = ur_array_append_get_ptr(trans->record.ur_tmplt, trans->record.data, ur_id);
567-
if (fds_get_uint_be(list_it.field.data, list_it.field.size, &value) != FDS_OK || field_ptr == NULL) {
567+
if (field_ptr == NULL || fds_get_uint_be(list_it.field.data, list_it.field.size, &value) != FDS_OK) {
568568
ur_array_clear(trans->record.ur_tmplt, trans->record.data, ur_id);
569569
return 1; // Conversion failed
570570
}
@@ -595,7 +595,7 @@ translate_array_int(translator_t *trans, const struct translator_rec *rec,
595595
while ((rc = fds_blist_iter_next(&list_it)) == FDS_OK) {
596596
int64_t value;
597597
void *field_ptr = ur_array_append_get_ptr(trans->record.ur_tmplt, trans->record.data, ur_id);
598-
if (fds_get_int_be(list_it.field.data, list_it.field.size, &value) != FDS_OK || field_ptr == NULL) {
598+
if (field_ptr == NULL || fds_get_int_be(list_it.field.data, list_it.field.size, &value) != FDS_OK) {
599599
ur_array_clear(trans->record.ur_tmplt, trans->record.data, ur_id);
600600
return 1; // Conversion failed
601601
}
@@ -625,7 +625,7 @@ translate_array_bool(translator_t *trans, const struct translator_rec *rec,
625625
while ((rc = fds_blist_iter_next(&list_it)) == FDS_OK) {
626626
bool value;
627627
void *field_ptr = ur_array_append_get_ptr(trans->record.ur_tmplt, trans->record.data, ur_id);
628-
if (fds_get_bool(list_it.field.data, list_it.field.size, &value) != FDS_OK || field_ptr == NULL) {
628+
if (field_ptr == NULL || fds_get_bool(list_it.field.data, list_it.field.size, &value) != FDS_OK) {
629629
ur_array_clear(trans->record.ur_tmplt, trans->record.data, ur_id);
630630
return 1; // Conversion failed
631631
}
@@ -655,7 +655,7 @@ translate_array_float(translator_t *trans, const struct translator_rec *rec,
655655
while ((rc = fds_blist_iter_next(&list_it)) == FDS_OK) {
656656
double value;
657657
void *field_ptr = ur_array_append_get_ptr(trans->record.ur_tmplt, trans->record.data, ur_id);
658-
if (fds_get_float_be(list_it.field.data, list_it.field.size, &value) != FDS_OK || field_ptr == NULL) {
658+
if (field_ptr == NULL || fds_get_float_be(list_it.field.data, list_it.field.size, &value) != FDS_OK) {
659659
ur_array_clear(trans->record.ur_tmplt, trans->record.data, ur_id);
660660
return 1; // Conversion failed
661661
}
@@ -685,7 +685,7 @@ translate_array_ip(translator_t *trans, const struct translator_rec *rec,
685685
while ((rc = fds_blist_iter_next(&list_it)) == FDS_OK) {
686686
void *field_ptr = ur_array_append_get_ptr(trans->record.ur_tmplt, trans->record.data, ur_id);
687687

688-
if (translator_store_ip(list_it.field.data, list_it.field.size, field_ptr)) {
688+
if (field_ptr == NULL || translator_store_ip(list_it.field.data, list_it.field.size, field_ptr)) {
689689
ur_array_clear(trans->record.ur_tmplt, trans->record.data, ur_id);
690690
return 1;
691691
}
@@ -713,6 +713,11 @@ translate_array_mac(translator_t *trans, const struct translator_rec *rec,
713713
}
714714

715715
ur_time_t *field_ptr = ur_array_append_get_ptr(trans->record.ur_tmplt, trans->record.data, ur_id);
716+
if (field_ptr == NULL) {
717+
ur_array_clear(trans->record.ur_tmplt, trans->record.data, ur_id);
718+
return 1;
719+
}
720+
716721
memcpy(field_ptr, list_it.field.data, 6U);
717722
}
718723

@@ -735,8 +740,7 @@ translate_array_time(translator_t *trans, const struct translator_rec *rec,
735740
fds_blist_iter_init(&list_it, field, NULL);
736741
while ((rc = fds_blist_iter_next(&list_it)) == FDS_OK) {
737742
ur_time_t *field_ptr = ur_array_append_get_ptr(trans->record.ur_tmplt, trans->record.data, ur_id);
738-
739-
if (translator_store_time(type_ipx, list_it.field.data, list_it.field.size, field_ptr)) {
743+
if (field_ptr == NULL || translator_store_time(type_ipx, list_it.field.data, list_it.field.size, field_ptr)) {
740744
ur_array_clear(trans->record.ur_tmplt, trans->record.data, ur_id);
741745
return 1;
742746
}

0 commit comments

Comments
 (0)