https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110974

            Bug ID: 110974
           Summary: format out of bounds read on invalid format string
                    "{:{}."
           Product: gcc
           Version: 13.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gcc at pauldreik dot se
  Target Milestone: ---

The following code:

#include <cstdio>
#include <format>
#include <string_view>

int main() {
    double v = 0;
    // use a char buffer instead of a literal
    // to avoid the implicit null terminator
    char fmtbuf[] = {'{', ':', '{', '}', '.'};
    std::string_view fmt{&fmtbuf[0], sizeof(fmtbuf)};
    std::puts(std::vformat(fmt, std::make_format_args(v)).c_str());
}

causes an out of bounds read when compiled with gcc 13.2, as well as the
current trunk.

Link to reproducer: https://godbolt.org/z/6qPMdse5o

Reply via email to