[compiler-rt] r330458 - [Sanitizer] Internal Printf string precision argument + padding.

Peter Collingbourne via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 20 12:48:55 PDT 2018


Could this have caused this test failure?
http://lab.llvm.org:8011/builders/clang-ppc64le-linux-lnt/builds/11600

Peter

On Fri, Apr 20, 2018 at 11:03 AM, Alex Shlyapnikov via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: alekseyshl
> Date: Fri Apr 20 11:03:10 2018
> New Revision: 330458
>
> URL: http://llvm.org/viewvc/llvm-project?rev=330458&view=rev
> Log:
> [Sanitizer] Internal Printf string precision argument + padding.
>
> Summary:
> Example:
>   Printf("%.*s", 5, "123");
> should yield:
>   '123  '
>
> In case Printf's requested string precision is larger than the string
> argument, the resulting string should be padded up to the requested
> precision.
>
> For the simplicity sake, implementing right padding only.
>
> Reviewers: eugenis
>
> Subscribers: kubamracek, delcypher, #sanitizers, llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D45844
>
> Modified:
>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc
>     compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_printf_test.cc
>
> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/
> sanitizer_common/sanitizer_printf.cc?rev=330458&r1=
> 330457&r2=330458&view=diff
> ============================================================
> ==================
> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc (original)
> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_printf.cc Fri Apr 20
> 11:03:10 2018
> @@ -105,6 +105,8 @@ static int AppendString(char **buff, con
>        break;
>      result += AppendChar(buff, buff_end, *s);
>    }
> +  while (result < precision)
> +    result += AppendChar(buff, buff_end, ' ');
>    return result;
>  }
>
>
> Modified: compiler-rt/trunk/lib/sanitizer_common/tests/
> sanitizer_printf_test.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/
> sanitizer_common/tests/sanitizer_printf_test.cc?rev=
> 330458&r1=330457&r2=330458&view=diff
> ============================================================
> ==================
> --- compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_printf_test.cc
> (original)
> +++ compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_printf_test.cc
> Fri Apr 20 11:03:10 2018
> @@ -146,8 +146,13 @@ TEST(Printf, Precision) {
>    EXPECT_EQ(3U, len);
>    EXPECT_STREQ("123", buf);
>    len = internal_snprintf(buf, sizeof(buf), "%.*s", 6, "12345");
> -  EXPECT_EQ(5U, len);
> -  EXPECT_STREQ("12345", buf);
> +  EXPECT_EQ(6U, len);
> +  EXPECT_STREQ("12345 ", buf);
> +  // CHeck that precision does not overflow the smaller buffer, although
> +  // 10 chars is requested, it stops at the buffer size, 8.
> +  len = internal_snprintf(buf, 8, "%.*s", 10, "12345");
> +  EXPECT_EQ(10U, len);  // The required size reported.
> +  EXPECT_STREQ("12345  ", buf);
>  }
>
>  }  // namespace __sanitizer
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>



-- 
-- 
Peter
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180420/42246af5/attachment.html>


More information about the llvm-commits mailing list