HexBrain

LibSass · Report #221163

heap-buffer-overflow (read outside of buffer) in Sass::Prelexer::exactly<(char)92>(char const*) - libsass/src/lexer.hpp:92

Informativestatus
highseverity
2upvotes
5 Oct 2019disclosed

How it was found

Built with afl-clang-fast from git source 5909ba5.

Feeding a file that contains nothing but '\ to sassc triggers this flaw.

==22006==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60200000ef93 at pc 0x000000907c6a bp 0x7fff656d9430 sp 0x7fff656d9428
READ of size 1 at 0x60200000ef93 thread T0
    #0 0x907c69 in char const* Sass::Prelexer::exactly<(char)92>(char const*) /home/geeknik/libsass/src/lexer.hpp:92:7
    #1 0x907c69 in char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)92>(char const*)), &Sass::Prelexer::re_linebreak>(char const*) /home/geeknik/libsass/src/lexer.hpp:218
    #2 0x907c69 in char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)92>(char const*)), &Sass::Prelexer::re_linebreak>(char const*)), &Sass::Prelexer::escape_seq, &Sass::Prelexer::unicode_seq, &Sass::Prelexer::interpolant, &(char const* Sass::Prelexer::any_char_but<(char)39>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:202
    #3 0x907c69 in char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)92>(char const*)), &Sass::Prelexer::re_linebreak>(char const*)), &Sass::Prelexer::escape_seq, &Sass::Prelexer::unicode_seq, &Sass::Prelexer::interpolant, &(char const* Sass::Prelexer::any_char_but<(char)39>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:236
    #4 0x907c69 in char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)92>(char const*)), &Sass::Prelexer::re_linebreak>(char const*)), &Sass::Prelexer::escape_seq, &Sass::Prelexer::unicode_seq, &Sass::Prelexer::interpolant, &(char const* Sass::Prelexer::any_char_but<(char)39>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)39>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:218
    #5 0x907c69 in char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)39>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)92>(char const*)), &Sass::Prelexer::re_linebreak>(char const*)), &Sass::Prelexer::escape_seq, &Sass::Prelexer::unicode_seq, &Sass::Prelexer::interpolant, &(char const* Sass::Prelexer::any_char_but<(char)39>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)39>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:219
    #6 0x907c69 in Sass::Prelexer::single_quoted_string(char const*) /home/geeknik/libsass/src/prelexer.cpp:509
    #7 0x924494 in char const* Sass::Prelexer::alternatives<&Sass::Prelexer::single_quoted_string, &Sass::Prelexer::double_quoted_string>(char const*) /home/geeknik/libsass/src/lexer.hpp:202:19
    #8 0x924494 in Sass::Prelexer::quoted_string(char const*) /home/geeknik/libsass/src/prelexer.cpp:557
    #9 0x924494 in char const* Sass::Prelexer::alternatives<&Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*) /home/geeknik/libsass/src/lexer.hpp:202
    #10 0x924494 in char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*) /home/geeknik/libsass/src/lexer.hpp:203
    #11 0x924494 in char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*) /home/geeknik/libsass/src/lexer.hpp:203
    #12 0x922ba7 in char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:212:20
    #13 0x922ba7 in char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:219
    #14 0x922ba7 in char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:244
    #15 0x922ba7 in char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:218
    #16 0x922ba7 in char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)35>(char const*)), &(char const* Sass::Prelexer::negate<&(char const* Sass::Prelexer::exactly<(char)123>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)46>(char const*)), &(char const* Sass::Prelexer::optional<&Sass::Prelexer::pseudo_prefix>(char const*))>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:219
    #17 0x922ba7 in char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::optional<&Sass::Prelexer::namespace_schema>(char const*)), &(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)35>(char const*)), &(char const* Sass::Prelexer::negate<&(char const* Sass::Prelexer::exactly<(char)123>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)46>(char const*)), &(char const* Sass::Prelexer::optional<&Sass::Prelexer::pseudo_prefix>(char const*))>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:219
    #18 0x923fa3 in char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::optional<&Sass::Prelexer::namespace_schema>(char const*)), &(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)35>(char const*)), &(char const* Sass::Prelexer::negate<&(char const* Sass::Prelexer::exactly<(char)123>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)46>(char const*)), &(char const* Sass::Prelexer::optional<&Sass::Prelexer::pseudo_prefix>(char const*))>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:196:19
    #19 0x923fa3 in char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::exact_match, &Sass::Prelexer::class_match, &Sass::Prelexer::dash_match, &Sass::Prelexer::prefix_match, &Sass::Prelexer::suffix_match, &Sass::Prelexer::substring_match>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::optional<&Sass::Prelexer::namespace_schema>(char const*)), &(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)35>(char const*)), &(char const* Sass::Prelexer::negate<&(char const* Sass::Prelexer::exactly<(char)123>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)46>(char const*)), &(char const* Sass::Prelexer::optional<&Sass::Prelexer::pseudo_prefix>(char const*))>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:203
    #20 0x923fa3 in char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)40>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::optional<&Sass::Prelexer::re_selector_list>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::exactly<(char)41>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::exact_match, &Sass::Prelexer::class_match, &Sass::Prelexer::dash_match, &Sass::Prelexer::prefix_match, &Sass::Prelexer::suffix_match, &Sass::Prelexer::substring_match>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::optional<&Sass::Prelexer::namespace_schema>(char const*)), &(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)35>(char const*)), &(char const* Sass::Prelexer::negate<&(char const* Sass::Prelexer::exactly<(char)123>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)46>(char const*)), &(char const* Sass::Prelexer::optional<&Sass::Prelexer::pseudo_prefix>(char const*))>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:203
    #21 0x923fa3 in char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_combinator_ops>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)40>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::optional<&Sass::Prelexer::re_selector_list>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::exactly<(char)41>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::exact_match, &Sass::Prelexer::class_match, &Sass::Prelexer::dash_match, &Sass::Prelexer::prefix_match, &Sass::Prelexer::suffix_match, &Sass::Prelexer::substring_match>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::optional<&Sass::Prelexer::namespace_schema>(char const*)), &(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)35>(char const*)), &(char const* Sass::Prelexer::negate<&(char const* Sass::Prelexer::exactly<(char)123>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)46>(char const*)), &(char const* Sass::Prelexer::optional<&Sass::Prelexer::pseudo_prefix>(char const*))>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:203
    #22 0x923fa3 in char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_lookahead_ops>(char const*)), &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_combinator_ops>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)40>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::optional<&Sass::Prelexer::re_selector_list>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::exactly<(char)41>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::exact_match, &Sass::Prelexer::class_match, &Sass::Prelexer::dash_match, &Sass::Prelexer::prefix_match, &Sass::Prelexer::suffix_match, &Sass::Prelexer::substring_match>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::optional<&Sass::Prelexer::namespace_schema>(char const*)), &(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)35>(char const*)), &(char const* Sass::Prelexer::negate<&(char const* Sass::Prelexer::exactly<(char)123>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)46>(char const*)), &(char const* Sass::Prelexer::optional<&Sass::Prelexer::pseudo_prefix>(char const*))>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:203
    #23 0x92261b in char const* Sass::Prelexer::alternatives<&Sass::Prelexer::schema_reference_combinator, &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_lookahead_ops>(char const*)), &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_combinator_ops>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)40>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::optional<&Sass::Prelexer::re_selector_list>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::exactly<(char)41>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::exact_match, &Sass::Prelexer::class_match, &Sass::Prelexer::dash_match, &Sass::Prelexer::prefix_match, &Sass::Prelexer::suffix_match, &Sass::Prelexer::substring_match>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::optional<&Sass::Prelexer::namespace_schema>(char const*)), &(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)35>(char const*)), &(char const* Sass::Prelexer::negate<&(char const* Sass::Prelexer::exactly<(char)123>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)46>(char const*)), &(char const* Sass::Prelexer::optional<&Sass::Prelexer::pseudo_prefix>(char const*))>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:203:14
    #24 0x92261b in char const* Sass::Prelexer::alternatives<&Sass::Prelexer::line_comment, &Sass::Prelexer::schema_reference_combinator, &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_lookahead_ops>(char const*)), &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_combinator_ops>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)40>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::optional<&Sass::Prelexer::re_selector_list>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::exactly<(char)41>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::exact_match, &Sass::Prelexer::class_match, &Sass::Prelexer::dash_match, &Sass::Prelexer::prefix_match, &Sass::Prelexer::suffix_match, &Sass::Prelexer::substring_match>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::optional<&Sass::Prelexer::namespace_schema>(char const*)), &(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)35>(char const*)), &(char const* Sass::Prelexer::negate<&(char const* Sass::Prelexer::exactly<(char)123>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)46>(char const*)), &(char const* Sass::Prelexer::optional<&Sass::Prelexer::pseudo_prefix>(char const*))>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:203
    #25 0x92261b in char const* Sass::Prelexer::alternatives<&Sass::Prelexer::block_comment, &Sass::Prelexer::line_comment, &Sass::Prelexer::schema_reference_combinator, &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_lookahead_ops>(char const*)), &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_combinator_ops>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)40>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::optional<&Sass::Prelexer::re_selector_list>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::exactly<(char)41>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::exact_match, &Sass::Prelexer::class_match, &Sass::Prelexer::dash_match, &Sass::Prelexer::prefix_match, &Sass::Prelexer::suffix_match, &Sass::Prelexer::substring_match>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::optional<&Sass::Prelexer::namespace_schema>(char const*)), &(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)35>(char const*)), &(char const* Sass::Prelexer::negate<&(char const* Sass::Prelexer::exactly<(char)123>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)46>(char const*)), &(char const* Sass::Prelexer::optional<&Sass::Prelexer::pseudo_prefix>(char const*))>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:203
    #26 0x92261b in char const* Sass::Prelexer::alternatives<&Sass::Prelexer::spaces, &Sass::Prelexer::block_comment, &Sass::Prelexer::line_comment, &Sass::Prelexer::schema_reference_combinator, &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_lookahead_ops>(char const*)), &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_combinator_ops>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)40>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::optional<&Sass::Prelexer::re_selector_list>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::exactly<(char)41>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::exact_match, &Sass::Prelexer::class_match, &Sass::Prelexer::dash_match, &Sass::Prelexer::prefix_match, &Sass::Prelexer::suffix_match, &Sass::Prelexer::substring_match>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::optional<&Sass::Prelexer::namespace_schema>(char const*)), &(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)35>(char const*)), &(char const* Sass::Prelexer::negate<&(char const* Sass::Prelexer::exactly<(char)123>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)46>(char const*)), &(char const* Sass::Prelexer::optional<&Sass::Prelexer::pseudo_prefix>(char const*))>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:203
    #27 0x91aebf in char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::spaces, &Sass::Prelexer::block_comment, &Sass::Prelexer::line_comment, &Sass::Prelexer::schema_reference_combinator, &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_lookahead_ops>(char const*)), &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_combinator_ops>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)40>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::optional<&Sass::Prelexer::re_selector_list>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::exactly<(char)41>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::exact_match, &Sass::Prelexer::class_match, &Sass::Prelexer::dash_match, &Sass::Prelexer::prefix_match, &Sass::Prelexer::suffix_match, &Sass::Prelexer::substring_match>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::optional<&Sass::Prelexer::namespace_schema>(char const*)), &(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)35>(char const*)), &(char const* Sass::Prelexer::negate<&(char const* Sass::Prelexer::exactly<(char)123>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)46>(char const*)), &(char const* Sass::Prelexer::optional<&Sass::Prelexer::pseudo_prefix>(char const*))>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:244:23
    #28 0x91aebf in char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::spaces, &Sass::Prelexer::block_comment, &Sass::Prelexer::line_comment, &Sass::Prelexer::schema_reference_combinator, &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_lookahead_ops>(char const*)), &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_combinator_ops>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)40>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::optional<&Sass::Prelexer::re_selector_list>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::exactly<(char)41>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::exact_match, &Sass::Prelexer::class_match, &Sass::Prelexer::dash_match, &Sass::Prelexer::prefix_match, &Sass::Prelexer::suffix_match, &Sass::Prelexer::substring_match>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::optional<&Sass::Prelexer::namespace_schema>(char const*)), &(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)35>(char const*)), &(char const* Sass::Prelexer::negate<&(char const* Sass::Prelexer::exactly<(char)123>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)46>(char const*)), &(char const* Sass::Prelexer::optional<&Sass::Prelexer::pseudo_prefix>(char const*))>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*))>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:196
    #29 0x91aebf in char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&Sass::Prelexer::ampersand, &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &Sass::Prelexer::word_boundary, &Sass::Prelexer::optional_spaces>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::spaces, &Sass::Prelexer::block_comment, &Sass::Prelexer::line_comment, &Sass::Prelexer::schema_reference_combinator, &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_lookahead_ops>(char const*)), &(char const* Sass::Prelexer::class_char<&Sass::Constants::selector_combinator_ops>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)40>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::optional<&Sass::Prelexer::re_selector_list>(char const*)), &Sass::Prelexer::optional_spaces, &(char const* Sass::Prelexer::exactly<(char)41>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::exact_match, &Sass::Prelexer::class_match, &Sass::Prelexer::dash_match, &Sass::Prelexer::prefix_match, &Sass::Prelexer::suffix_match, &Sass::Prelexer::substring_match>(char const*)), &(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::optional<&Sass::Prelexer::namespace_schema>(char const*)), &(char const* Sass::Prelexer::alternatives<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::exactly<(char)35>(char const*)), &(char const* Sass::Prelexer::negate<&(char const* Sass::Prelexer::exactly<(char)123>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::exactly<(char)46>(char const*)), &(char const* Sass::Prelexer::optional<&Sass::Prelexer::pseudo_prefix>(char const*))>(char const*)), &(char const* Sass::Prelexer::one_plus<&(char const* Sass::Prelexer::sequence<&(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*)), &(char const* Sass::Prelexer::alternatives<&Sass::Prelexer::kwd_optional, &(char const* Sass::Prelexer::exactly<(char)42>(char const*)), &Sass::Prelexer::quoted_string, &Sass::Prelexer::interpolant, &Sass::Prelexer::identifier, &Sass::Prelexer::variable, &Sass::Prelexer::percentage, &Sass::Prelexer::binomial, &Sass::Prelexer::dimension, &Sass::Prelexer::alnum>(char const*))>(char const*))>(char const*)), &(char const* Sass::Prelexer::zero_plus<&(char const* Sass::Prelexer::exactly<(char)45>(char const*))>(char const*))>(char const*))>(char const*))>(char const*))>(char const*) /home/geeknik/libsass/src/lexer.hpp:203
    #30 0x91aebf in Sass::Prelexer::re_selector_list(char const*) /home/geeknik/libsass/src/prelexer.cpp:1580
    #31 0x806242 in char const* Sass::Parser::peek<&Sass::Prelexer::re_selector_list>(char const*) /home/geeknik/libsass/src/parser.hpp:122:27
    #32 0x806242 in Sass::Parser::lookahead_for_selector(char const*) /home/geeknik/libsass/src/parser.cpp:2600
    #33 0x7db514 in Sass::Parser::parse_block_node(bool) /home/geeknik/libsass/src/parser.cpp:264:35
    #34 0x7cf433 in Sass::Parser::parse_block_nodes(bool) /home/geeknik/libsass/src/parser.cpp:187:11
    #35 0x7cb3c7 in Sass::Parser::parse() /home/geeknik/libsass/src/parser.cpp:113:5
    #36 0x62a92c in Sass::Context::register_resource(Sass::Include const&, Sass::Resource const&, Sass::ParserState*) /home/geeknik/libsass/src/context.cpp:322:22
    #37 0x64c19b in Sass::File_Context::parse() /home/geeknik/libsass/src/context.cpp:584:5
    #38 0x5d0650 in Sass::sass_parse_block(Sass_Compiler*) /home/geeknik/libsass/src/sass_context.cpp:227:22
    #39 0x5d0650 in sass_compiler_parse /home/geeknik/libsass/src/sass_context.cpp:476
    #40 0x5cf1d1 in sass_compile_context(Sass_Context*, Sass::Context*) /home/geeknik/libsass/src/sass_context.cpp:364:7
    #41 0x5cf6be in sass_compile_file_context /home/geeknik/libsass/src/sass_context.cpp:463:12
    #42 0x5b9d2e in compile_file /home/geeknik/sassc/sassc.c:145:5
    #43 0x5bab9b in main /home/geeknik/sassc/sassc.c:335:18
    #44 0x7f8112b0ab44 in __libc_start_main /build/glibc-qK83Be/glibc-2.19/csu/libc-start.c:287
    #45 0x5b92fc in _start (/home/geeknik/sassc/bin/sassc+0x5b92fc)

0x60200000ef93 is located 0 bytes to the right of 3-byte region [0x60200000ef90,0x60200000ef93)
allocated by thread T0 here:
    #0 0x59bc7b in __interceptor_malloc (/home/geeknik/sassc/bin/sassc+0x59bc7b)
    #1 0x7963f9 in Sass::File::read_file(std::string const&) /home/geeknik/libsass/src/file.cpp:411:30
    #2 0x64b255 in Sass::File_Context::parse() /home/geeknik/libsass/src/context.cpp:556:22
    #3 0x5d0650 in Sass::sass_parse_block(Sass_Compiler*) /home/geeknik/libsass/src/sass_context.cpp:227:22
    #4 0x5d0650 in sass_compiler_parse /home/geeknik/libsass/src/sass_context.cpp:476
    #5 0x5cf1d1 in sass_compile_context(Sass_Context*, Sass::Context*) /home/geeknik/libsass/src/sass_context.cpp:364:7
    #6 0x5b9d2e in compile_file /home/geeknik/sassc/sassc.c:145:5

SUMMARY: AddressSanitizer: heap-buffer-overflow /home/geeknik/libsass/src/lexer.hpp:92 char const* Sass::Prelexer::exactly<(char)92>(char const*)

This report was disclosed publicly on HackerOne and belongs to its author and the program. See the original