[all-commits] [llvm/llvm-project] bf279f: [libc] Prevent printf index mode crashes

michaelrj-google via All-commits all-commits at lists.llvm.org
Wed Feb 22 16:27:39 PST 2023

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: bf279f903b3f0e952d06af87d679ca7ae65234e3
  Author: Michael Jones <michaelrj at google.com>
  Date:   2023-02-22 (Wed, 22 Feb 2023)

  Changed paths:
    M libc/src/stdio/printf_core/core_structs.h
    M libc/src/stdio/printf_core/parser.cpp
    M libc/src/stdio/printf_core/parser.h
    M libc/test/src/stdio/printf_core/parser_test.cpp

  Log Message:
  [libc] Prevent printf index mode crashes

The posix standard defines an alternate mode for printf where the
conversions also have an index that describes which argument to select.
Due to how variadic arguments work in C, to reach the nth argument all
n-1 previous arguments must be read with their correct types. If the
format string does not specify the types for a continuous set of
arguments, then the arguments after the discontinuity cannot be safely
read. This patch causes all conversions requesting an argument that
comes after a gap be treated as raw (i.e. the conversion string is
printed literally).

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D143782

More information about the All-commits mailing list