[afl] fix bugs detected by a fuzzer

Fixes #981 #983
pull/1006/head
Timothy Stack 2 years ago
parent 31a670ce27
commit 2bc258e621

@ -149,6 +149,7 @@ scrub_ansi_string(std::string& str, string_attrs_t& sa)
}
}
str.erase(str.begin() + caps[0].c_begin, str.begin() + caps[0].c_end);
shift_string_attrs(sa, caps[0].c_begin, -caps[0].length());
if (has_attrs) {
for (auto rit = sa.rbegin(); rit != sa.rend(); rit++) {

@ -814,7 +814,9 @@ struct ws_separated_string {
size_t ss_len;
explicit ws_separated_string(const char* str = nullptr, size_t len = -1)
: ss_str(str), ss_len(len){};
: ss_str(str), ss_len(len)
{
}
struct iterator {
enum class state_t {
@ -1025,18 +1027,24 @@ public:
if (sf.startswith("#")) {
if (sf == "#Date:") {
date_time_scanner dts;
struct exttm tm;
struct timeval tv;
if (dts.scan(sbr.get_data_at(sf.length() + 1),
sbr.length() - sf.length() - 1,
nullptr,
&tm,
tv))
{
this->lf_date_time.set_base_time(tv.tv_sec);
this->wlf_time_scanner.set_base_time(tv.tv_sec);
auto sbr_sf_opt
= sbr.to_string_fragment().consume_n(sf.length());
if (sbr_sf_opt) {
auto sbr_sf = sbr_sf_opt.value();
date_time_scanner dts;
struct exttm tm;
struct timeval tv;
sbr_sf.trim(" \t");
if (dts.scan(sbr_sf.data(),
sbr_sf.length(),
nullptr,
&tm,
tv)) {
this->lf_date_time.set_base_time(tv.tv_sec);
this->wlf_time_scanner.set_base_time(tv.tv_sec);
}
}
}
dst.emplace_back(
@ -1119,6 +1127,10 @@ public:
static const auto* X_FIELDS_NAME = intern_string::lookup("x_fields");
static auto X_FIELDS_IDX = 0;
if (li.li_partial) {
return SCAN_INCOMPLETE;
}
if (!this->wlf_format_name.empty()) {
return this->scan_int(dst, li, sbr);
}

@ -254,6 +254,12 @@ EXPECTED_FILES = \
$(srcdir)/%reldir%/test_json_format.sh_c60050b3469f37c5b0864e1dc7eb354e91d6ec81.out \
$(srcdir)/%reldir%/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.err \
$(srcdir)/%reldir%/test_json_format.sh_fe19b7ebd349cd689b3f5c22618eab5ce995e68e.out \
$(srcdir)/%reldir%/test_logfile.sh_09bd16e044302f6b121092534708594bdad11b5a.err \
$(srcdir)/%reldir%/test_logfile.sh_09bd16e044302f6b121092534708594bdad11b5a.out \
$(srcdir)/%reldir%/test_logfile.sh_0bba304f34ae07c4fa9e91e0b42f5fe98654a6a8.err \
$(srcdir)/%reldir%/test_logfile.sh_0bba304f34ae07c4fa9e91e0b42f5fe98654a6a8.out \
$(srcdir)/%reldir%/test_logfile.sh_a7037efd0c4bbf51940137a44e57d94e9307e83e.err \
$(srcdir)/%reldir%/test_logfile.sh_a7037efd0c4bbf51940137a44e57d94e9307e83e.out \
$(srcdir)/%reldir%/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.err \
$(srcdir)/%reldir%/test_logfile.sh_c18e14a26d8261c9f72747118a469266121d5459.out \
$(srcdir)/%reldir%/test_meta.sh_154047fb52e4831aabf7d36512247bad6a6a2cf7.err \

@ -3,6 +3,15 @@
echo ${top_srcdir}
echo ${top_builddir}
run_cap_test env TEST_COMMENT="w3c with bad header" ${lnav_test} -n <<EOF
#Fields: 0 time
00:00
#Date:
EOF
printf '\x2b0\x1b[a' | run_cap_test \
env TEST_COMMENT="log line with an ansi escape" ${lnav_test} -n
run_cap_test ${lnav_test} -n \
-c ';SELECT * FROM logline' \
${test_dir}/logfile_block.1

Loading…
Cancel
Save