Skip to content

Commit 8ecfed4

Browse files
authored
Merge pull request syslog-ng#5063 from kovgeri01/retain-rawmsg-on-msg-parse-errors
Add no-piggyback-errors flag to syslog-parser() and syslog related source drivers.
2 parents 40b6355 + 72bffce commit 8ecfed4

File tree

8 files changed

+137
-31
lines changed

8 files changed

+137
-31
lines changed

lib/logmsg/logmsg.c

+24-6
Original file line numberDiff line numberDiff line change
@@ -1263,6 +1263,19 @@ log_msg_format_sdata(const LogMessage *self, GString *result, guint32 seq_num)
12631263
log_msg_append_format_sdata(self, result, seq_num);
12641264
}
12651265

1266+
void
1267+
log_msg_clear_sdata(LogMessage *self)
1268+
{
1269+
for (gint i = 0; i < self->num_sdata; i++)
1270+
log_msg_unset_value(self, self->sdata[i]);
1271+
if (!log_msg_chk_flag(self, LF_STATE_OWN_SDATA))
1272+
{
1273+
self->sdata = NULL;
1274+
self->alloc_sdata = 0;
1275+
}
1276+
self->num_sdata = 0;
1277+
}
1278+
12661279
gboolean
12671280
log_msg_append_tags_callback(const LogMessage *self, LogTagId tag_id, const gchar *name, gpointer user_data)
12681281
{
@@ -1366,6 +1379,8 @@ log_msg_init(LogMessage *self)
13661379
void
13671380
log_msg_clear(LogMessage *self)
13681381
{
1382+
g_assert(!log_msg_is_write_protected(self));
1383+
13691384
if(log_msg_chk_flag(self, LF_STATE_OWN_PAYLOAD))
13701385
nv_table_unref(self->payload);
13711386
self->payload = nv_table_new(LM_V_MAX, 16, 256);
@@ -1386,12 +1401,7 @@ log_msg_clear(LogMessage *self)
13861401
}
13871402

13881403
log_msg_clear_matches(self);
1389-
if (!log_msg_chk_flag(self, LF_STATE_OWN_SDATA))
1390-
{
1391-
self->sdata = NULL;
1392-
self->alloc_sdata = 0;
1393-
}
1394-
self->num_sdata = 0;
1404+
log_msg_clear_sdata(self);
13951405

13961406
if (log_msg_chk_flag(self, LF_STATE_OWN_SADDR))
13971407
g_sockaddr_unref(self->saddr);
@@ -2009,6 +2019,14 @@ log_msg_tags_init(void)
20092019
log_tags_register_predefined_tag("syslog.unexpected_framing", LM_T_SYSLOG_UNEXPECTED_FRAMING);
20102020
log_tags_register_predefined_tag("syslog.rfc3164_missing_header", LM_T_SYSLOG_RFC3164_MISSING_HEADER);
20112021
log_tags_register_predefined_tag("syslog.rfc5424_unquoted_sdata_value", LM_T_SYSLOG_RFC5424_UNQUOTED_SDATA_VALUE);
2022+
2023+
log_tags_register_predefined_tag("syslog.rfc5424_missing_hostname", LM_T_SYSLOG_RFC5424_MISSING_HOSTNAME);
2024+
log_tags_register_predefined_tag("syslog.rfc5424_missing_app_name", LM_T_SYSLOG_RFC5424_MISSING_APP_NAME);
2025+
log_tags_register_predefined_tag("syslog.rfc5424_missing_procid", LM_T_SYSLOG_RFC5424_MISSING_PROCID);
2026+
log_tags_register_predefined_tag("syslog.rfc5424_missing_msgid", LM_T_SYSLOG_RFC5424_MISSING_MSGID);
2027+
log_tags_register_predefined_tag("syslog.rfc5424_missing_sdata", LM_T_SYSLOG_RFC5424_MISSING_SDATA);
2028+
log_tags_register_predefined_tag("syslog.rfc5424_invalid_sdata", LM_T_SYSLOG_RFC5424_INVALID_SDATA);
2029+
log_tags_register_predefined_tag("syslog.rfc5424_missing_message", LM_T_SYSLOG_RFC5424_MISSING_MESSAGE);
20122030
}
20132031

20142032
void

lib/logmsg/logmsg.h

+17
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,22 @@ enum
120120
LM_T_SYSLOG_RFC3164_MISSING_HEADER,
121121
/* incorrectly quoted RFC5424 SDATA */
122122
LM_T_SYSLOG_RFC5424_UNQUOTED_SDATA_VALUE,
123+
/* hostname field missing */
124+
LM_T_SYSLOG_RFC5424_MISSING_HOSTNAME,
125+
/* program field missing */
126+
LM_T_SYSLOG_RFC5424_MISSING_APP_NAME,
127+
/* pid field missing */
128+
LM_T_SYSLOG_RFC5424_MISSING_PROCID,
129+
/* msgid field missing */
130+
LM_T_SYSLOG_RFC5424_MISSING_MSGID,
131+
/* sdata field missing */
132+
LM_T_SYSLOG_RFC5424_MISSING_SDATA,
133+
/* invalid SDATA */
134+
LM_T_SYSLOG_RFC5424_INVALID_SDATA,
135+
/* sdata field missing */
136+
LM_T_SYSLOG_RFC5424_MISSING_MESSAGE,
137+
/* message field missing */
138+
LM_T_SYSLOG_MISSING_MESSAGE,
123139
LM_T_PREDEFINED_MAX,
124140
};
125141

@@ -483,6 +499,7 @@ void log_msg_rename_value(LogMessage *self, NVHandle from, NVHandle to);
483499

484500
void log_msg_append_format_sdata(const LogMessage *self, GString *result, guint32 seq_num);
485501
void log_msg_format_sdata(const LogMessage *self, GString *result, guint32 seq_num);
502+
void log_msg_clear_sdata(LogMessage *self);
486503

487504
void log_msg_set_tag_by_id_onoff(LogMessage *self, LogTagId id, gboolean on);
488505
void log_msg_set_tag_by_id(LogMessage *self, LogTagId id);

lib/logmsg/tests/test_log_message.c

+16
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ assert_log_msg_clear_clears_all_properties(LogMessage *message, NVHandle nv_hand
7777
NVHandle sd_handle, const gchar *tag_name)
7878
{
7979
message->flags |= LF_LOCAL + LF_UTF8 + LF_INTERNAL + LF_MARK;
80+
LogPathOptions path_options = LOG_PATH_OPTIONS_INIT;
81+
82+
log_msg_make_writable(&message, &path_options);
8083
log_msg_clear(message);
8184

8285
cr_assert_str_empty(log_msg_get_value(message, nv_handle, NULL),
@@ -186,6 +189,19 @@ Test(log_message, test_log_message_can_be_cleared)
186189
log_message_test_params_free(params);
187190
}
188191

192+
Test(log_message, test_log_message_clear_sdata_unsets_all_sdata)
193+
{
194+
LogMessageTestParams *params = log_message_test_params_new();
195+
196+
log_msg_clear_sdata(params->message);
197+
198+
cr_assert(params->message->num_sdata == 0);
199+
cr_assert_str_empty(log_msg_get_value(params->message, params->sd_handle, NULL),
200+
"Message still contains sdata value after log_msg_clear_sdata");
201+
202+
log_message_test_params_free(params);
203+
}
204+
189205
Test(log_message, test_log_msg_clear_handles_cloned_noninline_tags_properly)
190206
{
191207
LogMessage *msg = _construct_log_message();

lib/msg-format.c

+17-4
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include "find-crlf.h"
3030
#include "scratch-buffers.h"
3131
#include "utf8utils.h"
32+
#include "hostname.h"
3233

3334
static gsize
3435
_rstripped_message_length(const guchar *data, gsize length)
@@ -39,14 +40,22 @@ _rstripped_message_length(const guchar *data, gsize length)
3940
}
4041

4142
static void
42-
msg_format_inject_parse_error(LogMessage *msg, const guchar *data, gsize length, gint problem_position)
43+
msg_format_inject_parse_error(MsgFormatOptions *options, LogMessage *msg, const guchar *data, gsize length,
44+
gint problem_position)
4345
{
4446
GString *buf = scratch_buffers_alloc();
4547

48+
49+
/* overwrite the message as if it was coming from syslog-ng */
4650
log_msg_clear(msg);
4751

4852
msg->timestamps[LM_TS_STAMP] = msg->timestamps[LM_TS_RECVD];
49-
log_msg_set_value(msg, LM_V_HOST, "", 0);
53+
54+
const gchar *hname = options->use_fqdn
55+
? get_local_hostname_fqdn()
56+
: get_local_hostname_short();
57+
58+
log_msg_set_value(msg, LM_V_HOST, hname, -1);
5059

5160
if (problem_position > 0)
5261
g_string_printf(buf, "Error processing log message: %.*s>@<%.*s", (gint) problem_position-1,
@@ -173,7 +182,8 @@ msg_format_parse_into(MsgFormatOptions *options, LogMessage *msg,
173182
if (!msg_format_try_parse_into(options, msg, data, length, &problem_position))
174183
{
175184
log_msg_set_tag_by_id(msg, LM_T_MSG_PARSE_ERROR);
176-
msg_format_inject_parse_error(msg, data, _rstripped_message_length(data, length), problem_position);
185+
if (options->flags & LP_PIGGYBACK_ERRORS)
186+
msg_format_inject_parse_error(options, msg, data, _rstripped_message_length(data, length), problem_position);
177187

178188
/* the injected error message needs to be postprocessed too */
179189
msg_format_postprocess_message(options, msg, data, length);
@@ -228,7 +238,7 @@ msg_format_options_set_sdata_prefix(MsgFormatOptions *options, const gchar *pref
228238
void
229239
msg_format_options_defaults(MsgFormatOptions *options)
230240
{
231-
options->flags = LP_EXPECT_HOSTNAME | LP_STORE_LEGACY_MSGHDR;
241+
options->flags = LP_EXPECT_HOSTNAME | LP_STORE_LEGACY_MSGHDR | LP_PIGGYBACK_ERRORS;
232242
options->recv_time_zone = NULL;
233243
options->recv_time_zone_info = NULL;
234244
options->bad_hostname = NULL;
@@ -264,6 +274,7 @@ msg_format_options_init(MsgFormatOptions *options, GlobalConfig *cfg)
264274
if (!options->sdata_prefix)
265275
options->sdata_prefix = g_strdup(logmsg_sd_prefix);
266276
options->sdata_prefix_len = strlen(options->sdata_prefix);
277+
options->use_fqdn = cfg->host_resolve_options.use_fqdn;
267278
options->initialized = TRUE;
268279
}
269280

@@ -319,6 +330,8 @@ CfgFlagHandler msg_format_flag_handlers[] =
319330
{ "guess-timezone", CFH_SET, offsetof(MsgFormatOptions, flags), LP_GUESS_TIMEZONE },
320331
{ "no-header", CFH_SET, offsetof(MsgFormatOptions, flags), LP_NO_HEADER },
321332
{ "no-rfc3164-fallback", CFH_SET, offsetof(MsgFormatOptions, flags), LP_NO_RFC3164_FALLBACK },
333+
{ "piggyback-errors", CFH_SET, offsetof(MsgFormatOptions, flags), LP_PIGGYBACK_ERRORS },
334+
{ "no-piggyback-errors", CFH_CLEAR, offsetof(MsgFormatOptions, flags), LP_PIGGYBACK_ERRORS },
322335
{ NULL },
323336
};
324337

lib/msg-format.h

+2
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ enum
5959
LP_GUESS_TIMEZONE = 0x1000,
6060
LP_NO_HEADER = 0x2000,
6161
LP_NO_RFC3164_FALLBACK = 0x4000,
62+
LP_PIGGYBACK_ERRORS = 0x8000,
6263
};
6364

6465
typedef struct _MsgFormatHandler MsgFormatHandler;
@@ -76,6 +77,7 @@ typedef struct _MsgFormatOptions
7677
gchar *sdata_prefix;
7778
gsize sdata_prefix_len;
7879
gint sdata_param_value_max;
80+
gboolean use_fqdn;
7981
} MsgFormatOptions;
8082

8183
struct _MsgFormatHandler

lib/tests/test_msgparse.c

+23-15
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#include "gsockaddr.h"
3232
#include "timeutils/cache.h"
3333
#include "timeutils/misc.h"
34+
#include "scratch-buffers.h"
3435
#include "cfg.h"
3536
#include "plugin.h"
3637

@@ -138,6 +139,7 @@ setup(void)
138139
void
139140
teardown(void)
140141
{
142+
scratch_buffers_explicit_gc();
141143
deinit_syslogformat_module();
142144
app_shutdown();
143145
}
@@ -175,7 +177,8 @@ test_log_messages_can_be_parsed(struct msgparse_params *param)
175177

176178
cr_assert_eq(parsed_message->pri, param->expected_pri, "Unexpected message priority %d != %d",
177179
parsed_message->pri, param->expected_pri);
178-
assert_log_message_value(parsed_message, LM_V_HOST, param->expected_host);
180+
if (param->expected_host)
181+
assert_log_message_value(parsed_message, LM_V_HOST, param->expected_host);
179182
assert_log_message_value(parsed_message, LM_V_PROGRAM, param->expected_program);
180183
assert_log_message_value(parsed_message, LM_V_MESSAGE, param->expected_msg);
181184
if (param->expected_pid)
@@ -241,10 +244,10 @@ Test(msgparse, test_bad_sd_data_unescaped)
241244
{
242245
{
243246
"<132>1 2006-10-29T01:59:59.156+01:00 mymachine evntslog - - [a i=\"\"ok\"] An application event log entry...",
244-
LP_SYSLOG_PROTOCOL, NULL,
247+
LP_SYSLOG_PROTOCOL | LP_PIGGYBACK_ERRORS, NULL,
245248
43, // pri
246249
0, 0, 0, // timestamp (sec/usec/zone)
247-
"", // host
250+
NULL, // host
248251
"syslog-ng", //app
249252
"Error processing log message: <132>1 2006-10-29T01:59:59.156+01:00 mymachine evntslog - - [a i=\">@<\"ok\"] An application event log entry...", // msg
250253
"", //sd_str
@@ -691,10 +694,11 @@ Test(msgparse, test_expected_sd_pairs_1)
691694
expected_sd_pairs_test_1
692695
},
693696
{
694-
"<7>1 2006-10-29T01:59:59.156Z mymachine.example.com evntslog - ID47 [ exampleSDID@0 iut=\"3\" eventSource=\"Application\" eventID=\"1011\"][examplePriority@0 class=\"high\"] \xEF\xBB\xBF" "An application event log entry...", LP_SYSLOG_PROTOCOL, NULL,
697+
"<7>1 2006-10-29T01:59:59.156Z mymachine.example.com evntslog - ID47 [ exampleSDID@0 iut=\"3\" eventSource=\"Application\" eventID=\"1011\"][examplePriority@0 class=\"high\"] \xEF\xBB\xBF" "An application event log entry...",
698+
LP_PIGGYBACK_ERRORS | LP_SYSLOG_PROTOCOL, NULL,
695699
43, // pri
696700
0, 0, 0, // timestamp (sec/usec/zone)
697-
"", // host
701+
NULL, // host
698702
"syslog-ng", //app
699703
"Error processing log message: <7>1 2006-10-29T01:59:59.156Z mymachine.example.com evntslog - ID47 >@<[ exampleSDID@0 iut=\"3\" eventSource=\"Application\" eventID=\"1011\"][examplePriority@0 class=\"high\"] \xEF\xBB\xBF" "An application event log entry...", // msg
700704
"",
@@ -879,10 +883,11 @@ Test(msgparse, test_expected_sd_pairs_long)
879883

880884
// parse longer than 255 sd id
881885
{
882-
"<132>1 2006-10-29T01:59:59.156+01:00 mymachine evntslog - - [aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa i=\"long\"] An application event log entry...", LP_SYSLOG_PROTOCOL, NULL,
886+
"<132>1 2006-10-29T01:59:59.156+01:00 mymachine evntslog - - [aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa i=\"long\"] An application event log entry...",
887+
LP_PIGGYBACK_ERRORS | LP_SYSLOG_PROTOCOL, NULL,
883888
43, // pri
884889
0, 0, 0, // timestamp (sec/usec/zone)
885-
"", // host
890+
NULL, // host
886891
"syslog-ng", //app
887892
"Error processing log message: <132>1 2006-10-29T01:59:59.156+01:00 mymachine evntslog - - [aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>@<aaaaaaaa i=\"long\"] An application event log entry...", // msg
888893
"", //sd_str 0,//processid
@@ -923,10 +928,11 @@ Test(msgparse, test_unescaped_too_long_message_parts)
923928
{
924929
// too long hostname
925930
{
926-
"<132>1 2006-10-29T01:59:59.156+01:00 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa evntslog - - [a i=\"ok\"] An application event log entry...", LP_SYSLOG_PROTOCOL, NULL,
931+
"<132>1 2006-10-29T01:59:59.156+01:00 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa evntslog - - [a i=\"ok\"] An application event log entry...",
932+
LP_PIGGYBACK_ERRORS | LP_SYSLOG_PROTOCOL, NULL,
927933
43, // pri
928934
0, 0, 0, // timestamp (sec/usec/zone)
929-
"", //host
935+
NULL, //host
930936
"syslog-ng", //app
931937
"Error processing log message: <132>1 2006-10-29T01:59:59.156+01:00 >@<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa evntslog - - [a i=\"ok\"] An application event log entry...", // msg
932938
"", //sd_str
@@ -979,10 +985,11 @@ Test(msgparse, test_unescaped_too_long_message_parts)
979985

980986
// unescaped ]
981987
{
982-
"<132>1 2006-10-29T01:59:59.156+01:00 mymachine evntslog - - [a i=\"]ok\"] An application event log entry...", LP_SYSLOG_PROTOCOL, NULL,
988+
"<132>1 2006-10-29T01:59:59.156+01:00 mymachine evntslog - - [a i=\"]ok\"] An application event log entry...",
989+
LP_PIGGYBACK_ERRORS | LP_SYSLOG_PROTOCOL, NULL,
983990
43, // pri
984991
0, 0, 0, // timestamp (sec/usec/zone)
985-
"", // host
992+
NULL, // host
986993
"syslog-ng", //app
987994
"Error processing log message: <132>1 2006-10-29T01:59:59.156+01:00 mymachine evntslog - - [a i=\">@<]ok\"] An application event log entry...", // msg
988995
"", //sd_str
@@ -994,10 +1001,11 @@ Test(msgparse, test_unescaped_too_long_message_parts)
9941001

9951002
// bad sd data unescaped "
9961003
{
997-
"<132>1 2006-10-29T01:59:59.156+01:00 mymachine evntslog - - [a i=\"\"ok\"] An application event log entry...", LP_SYSLOG_PROTOCOL, NULL,
1004+
"<132>1 2006-10-29T01:59:59.156+01:00 mymachine evntslog - - [a i=\"\"ok\"] An application event log entry...",
1005+
LP_PIGGYBACK_ERRORS | LP_SYSLOG_PROTOCOL, NULL,
9981006
43, // pri
9991007
0, 0, 0, // timestamp (sec/usec/zone)
1000-
"", // host
1008+
NULL, // host
10011009
"syslog-ng", //app
10021010
"Error processing log message: <132>1 2006-10-29T01:59:59.156+01:00 mymachine evntslog - - [a i=\">@<\"ok\"] An application event log entry...", // msg
10031011
"", //sd_str
@@ -1218,10 +1226,10 @@ Test(msgparse, test_no_rfc3164_fallback_flag)
12181226
{
12191227
{
12201228
.msg = "<189>some message",
1221-
.parse_flags = LP_SYSLOG_PROTOCOL | LP_NO_RFC3164_FALLBACK,
1229+
.parse_flags = LP_SYSLOG_PROTOCOL | LP_NO_RFC3164_FALLBACK | LP_PIGGYBACK_ERRORS,
12221230
.expected_pri = 43,
12231231
.expected_program = "syslog-ng",
1224-
.expected_host = "",
1232+
.expected_host = NULL,
12251233
.expected_msg = "Error processing log message: <189>some message",
12261234
},
12271235
{NULL}

modules/syslogformat/syslog-format.c

+25-6
Original file line numberDiff line numberDiff line change
@@ -1085,13 +1085,17 @@ _syslog_format_parse_syslog_proto(const MsgFormatOptions *parse_options, const g
10851085
goto error;
10861086

10871087
if (!_skip_space(&src, &left))
1088-
goto error;
1088+
{
1089+
log_msg_set_tag_by_id(msg, LM_T_SYSLOG_RFC5424_MISSING_HOSTNAME);
1090+
goto error;
1091+
}
10891092

10901093
/* hostname 255 ascii */
10911094
_syslog_format_parse_hostname(msg, &src, &left, &hostname_start, &hostname_len, parse_options->flags, NULL);
10921095
if (!_skip_space(&src, &left))
10931096
{
10941097
src++;
1098+
log_msg_set_tag_by_id(msg, LM_T_SYSLOG_RFC5424_MISSING_APP_NAME);
10951099
goto error;
10961100
}
10971101
/* If we did manage to find a hostname, store it. */
@@ -1105,24 +1109,39 @@ _syslog_format_parse_syslog_proto(const MsgFormatOptions *parse_options, const g
11051109
/* application name 48 ascii*/
11061110
_syslog_format_parse_column(msg, LM_V_PROGRAM, &src, &left, 48);
11071111
if (!_skip_space(&src, &left))
1108-
goto error;
1112+
{
1113+
log_msg_set_tag_by_id(msg, LM_T_SYSLOG_RFC5424_MISSING_PROCID);
1114+
goto error;
1115+
}
11091116

11101117
/* process id 128 ascii */
11111118
_syslog_format_parse_column(msg, LM_V_PID, &src, &left, 128);
11121119
if (!_skip_space(&src, &left))
1113-
goto error;
1120+
{
1121+
log_msg_set_tag_by_id(msg, LM_T_SYSLOG_RFC5424_MISSING_MSGID);
1122+
goto error;
1123+
}
11141124

11151125
/* message id 32 ascii */
11161126
_syslog_format_parse_column(msg, LM_V_MSGID, &src, &left, 32);
11171127
if (!_skip_space(&src, &left))
1118-
goto error;
1128+
{
1129+
log_msg_set_tag_by_id(msg, LM_T_SYSLOG_RFC5424_MISSING_SDATA);
1130+
goto error;
1131+
}
11191132

11201133
/* structured data part */
11211134
if (!_syslog_format_parse_sd_column(msg, &src, &left, parse_options))
1122-
goto error;
1135+
{
1136+
log_msg_set_tag_by_id(msg, LM_T_SYSLOG_RFC5424_INVALID_SDATA);
1137+
goto error;
1138+
}
11231139

11241140
if (!_syslog_format_parse_message_column(msg, &src, &left, parse_options))
1125-
goto error;
1141+
{
1142+
log_msg_set_tag_by_id(msg, LM_T_SYSLOG_MISSING_MESSAGE);
1143+
goto error;
1144+
}
11261145

11271146
log_msg_set_value_to_string(msg, LM_V_MSGFORMAT, "rfc5424");
11281147

0 commit comments

Comments
 (0)