summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2014-02-26 14:42:38 +0000
committerAlexey Samsonov <samsonov@google.com>2014-02-26 14:42:38 +0000
commit50da249d327db4e710812e1d8ae9e0003af554db (patch)
treeb8f457ffff39736f2925f1e8a6240b8b947dd4c4
parent95e0c463269b689c03f38e844bfc7a1390975081 (diff)
Support 'q' length modifier in scanf/printf interceptors
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@202268 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/sanitizer_common/sanitizer_common_interceptors_format.inc2
-rw-r--r--lib/sanitizer_common/tests/sanitizer_format_interceptor_test.cc1
2 files changed, 3 insertions, 0 deletions
diff --git a/lib/sanitizer_common/sanitizer_common_interceptors_format.inc b/lib/sanitizer_common/sanitizer_common_interceptors_format.inc
index 40ebef2b1..f7b085437 100644
--- a/lib/sanitizer_common/sanitizer_common_interceptors_format.inc
+++ b/lib/sanitizer_common/sanitizer_common_interceptors_format.inc
@@ -116,6 +116,8 @@ static int format_get_value_size(char convSpecifier,
return lengthModifier[1] == 'h' ? sizeof(char) : sizeof(short);
case 'l':
return lengthModifier[1] == 'l' ? sizeof(long long) : sizeof(long);
+ case 'q':
+ return sizeof(long long);
case 'L':
return sizeof(long long);
case 'j':
diff --git a/lib/sanitizer_common/tests/sanitizer_format_interceptor_test.cc b/lib/sanitizer_common/tests/sanitizer_format_interceptor_test.cc
index 0ea3932a7..da2999591 100644
--- a/lib/sanitizer_common/tests/sanitizer_format_interceptor_test.cc
+++ b/lib/sanitizer_common/tests/sanitizer_format_interceptor_test.cc
@@ -111,6 +111,7 @@ TEST(SanitizerCommonInterceptors, Scanf) {
testScanf("ab%u%dc", 2, I, I);
testScanf("%ld", 1, L);
testScanf("%llu", 1, LL);
+ testScanf("%qd", 1, LL);
testScanf("a %hd%hhx", 2, S, C);
testScanf("%c", 1, C);