Skip to content

Commit 9939213

Browse files
committed
in_winevtlog: Plug memory errors on exceptions
Signed-off-by: Hiroshi Hatake <hiroshi@chronosphere.io>
1 parent 2be7535 commit 9939213

2 files changed

Lines changed: 36 additions & 17 deletions

File tree

plugins/in_winevtlog/pack.c

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,14 +127,23 @@ static int append_kv_line(flb_sds_t *text, const char *key,
127127
}
128128

129129
*text = flb_sds_cat(*text, key, strlen(key));
130+
if (*text == NULL) {
131+
return -1;
132+
}
133+
130134
*text = flb_sds_cat(*text, "=", 1);
135+
if (*text == NULL) {
136+
return -1;
137+
}
131138

132139
if (val != NULL && val_len > 0) {
133140
*text = flb_sds_cat(*text, val, val_len);
141+
if (*text == NULL) {
142+
return -1;
143+
}
134144
}
135145

136146
*text = flb_sds_cat(*text, "\n", 1);
137-
138147
if (*text == NULL) {
139148
return -1;
140149
}
@@ -1062,6 +1071,10 @@ void winevtlog_pack_text_event(PEVT_VARIANT system, WCHAR *message,
10621071
append_kv_line(&text, "Message", NULL, 0);
10631072
}
10641073

1074+
if (text == NULL) {
1075+
return;
1076+
}
1077+
10651078
out_len = flb_sds_len(text);
10661079
if (out_len > 0 && text[out_len - 1] == '\n') {
10671080
out_len -= 1;
@@ -1072,9 +1085,11 @@ void winevtlog_pack_text_event(PEVT_VARIANT system, WCHAR *message,
10721085
ret = flb_log_event_encoder_set_current_timestamp(ctx->log_encoder);
10731086
}
10741087

1075-
ret = flb_log_event_encoder_append_body_string(ctx->log_encoder,
1076-
ctx->render_event_text_key,
1077-
flb_sds_len(ctx->render_event_text_key));
1088+
if (ret == FLB_EVENT_ENCODER_SUCCESS) {
1089+
ret = flb_log_event_encoder_append_body_string(ctx->log_encoder,
1090+
ctx->render_event_text_key,
1091+
flb_sds_len(ctx->render_event_text_key));
1092+
}
10781093

10791094
if (ret == FLB_EVENT_ENCODER_SUCCESS) {
10801095
ret = flb_log_event_encoder_append_body_string(ctx->log_encoder, text, out_len);

plugins/in_winevtlog/winevtlog.c

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -920,14 +920,16 @@ int winevtlog_read(struct winevtlog_channel *ch, struct winevtlog_config *ctx,
920920
read_size += (system_size + message_size + string_inserts_size);
921921
winevtlog_pack_xml_event(system_xml, message, string_inserts,
922922
count_inserts, ch, ctx);
923+
}
923924

924-
flb_free(string_inserts);
925-
flb_free(system_xml);
926-
if (message)
927-
flb_free(message);
925+
flb_free(string_inserts);
926+
flb_free(system_xml);
927+
if (message) {
928+
flb_free(message);
928929
}
929930
}
930931
else if (ctx->render_event_as_text) {
932+
rendered_system = NULL;
931933
render_system_event(ch->events[i], &rendered_system, &system_size);
932934
message = get_description(ch->events[i], LANG_NEUTRAL, &message_size, ch->remote);
933935
get_string_inserts(ch->events[i], &string_inserts, &count_inserts, &string_inserts_size);
@@ -937,11 +939,12 @@ int winevtlog_read(struct winevtlog_channel *ch, struct winevtlog_config *ctx,
937939
winevtlog_pack_text_event(rendered_system, message, string_inserts,
938940
count_inserts, ch, ctx);
939941

940-
flb_free(string_inserts);
941-
flb_free(rendered_system);
942-
if (message) {
943-
flb_free(message);
944-
}
942+
}
943+
944+
flb_free(string_inserts);
945+
flb_free(rendered_system);
946+
if (message) {
947+
flb_free(message);
945948
}
946949
}
947950
else {
@@ -953,11 +956,12 @@ int winevtlog_read(struct winevtlog_channel *ch, struct winevtlog_config *ctx,
953956
read_size += (system_size + message_size + string_inserts_size);
954957
winevtlog_pack_event(rendered_system, message, string_inserts,
955958
count_inserts, ch, ctx);
959+
}
956960

957-
flb_free(string_inserts);
958-
flb_free(rendered_system);
959-
if (message)
960-
flb_free(message);
961+
flb_free(string_inserts);
962+
flb_free(rendered_system);
963+
if (message) {
964+
flb_free(message);
961965
}
962966
}
963967
}

0 commit comments

Comments
 (0)