summaryrefslogtreecommitdiff
path: root/tests/string_test.cpp
AgeCommit message (Collapse)Author
2020-08-12Various coverage improvements.Elliott Hughes
Mostly from extra test cases, but also: * Move the fgets size < 0 assertion into fgets. * Use ELF aliases for strtoq/strtouq rather than duplicating code. * Don't check uname() succeeded, since it can't fail. Test: treehugger Change-Id: I2e6b3b88b0a3eb16bd68be68b9bc9f40d8043291
2020-08-07Merge "Switch to musl memmem (via OpenBSD)."Elliott Hughes
2020-08-06Switch to musl memmem (via OpenBSD).Elliott Hughes
Similar to the musl strstr. This patch also increases test coverage for memmem, again similar to the strstr tests. Test: treehugger Change-Id: I7f4a2ab93a610cb692994d06d2512976e657ae9f
2020-08-06Trivial strxfrm coverage improvement.Elliott Hughes
Test: treehugger Change-Id: I450bd3324c3f0f8ab95cecebe0f57dc85acc2996
2019-11-22Sync with upstream OpenBSD strstr().Elliott Hughes
Bug: http://b/124855136 Test: treehugger Change-Id: I6cbeb82bc0e418f50e6c171ac4e38e335c448db8
2019-03-12bionic tests: use GTEST_SKIP.Elliott Hughes
Also be a bit more to the point in our messages, focusing on "why" not "what". Test: ran tests Change-Id: I297806c7a102bd52602dcd2fcf7a2cd34aba3a11
2019-02-05Move NetBSD string routines to OpenBSD.Elliott Hughes
NetBSD seems to be the least well maintained of our three BSD upstreams, and it's already the one we use the least. Let's push a little further in that direction... Test: new smoke tests Change-Id: Idfebd11794445fe14cbfa07177a7392a7b36a5e4
2018-12-03Reduce strerror(3)'s impact on .data.rel.ro.Elliott Hughes
Test: tests pass Change-Id: I60b15dfac6ca7dce45f4858ad10b8255e2f1b66d
2018-08-02Modernize codebase by replacing NULL with nullptrYi Kong
Fixes -Wzero-as-null-pointer-constant warning. Test: m Bug: 68236239 Change-Id: I5b4123bc6709641315120a191e36cc57541349b2
2017-05-08Add new memchr/strrchr tests.Christopher Ferris
There are new optimizations for these functions, so adding some extra testing for these routines. Also, clean up the strchr test slightly with some extra comments. Test: Ran new tests on glibc version, and on angler. Change-Id: I41bf4e5e2c84295cc1ce9d2226ed57c2d228d7b8
2016-08-16Fix memmem behavior with empty needles.Elliott Hughes
Change-Id: I8b893d80c27b548652d843af9520d7adc8ba8902
2016-06-03Fix misc-macro-parentheses warnings in bionic/tests.Chih-Hung Hsieh
Bug: 28705665 Change-Id: I532205b94e30acbdc97f3f4db0660c9a16a7de89
2016-05-03Fix google-explicit-constructor warnings.Chih-Hung Hsieh
Bug: 28341362 Change-Id: I84effbdfa1b9b39328a909b7f70fe17e7ee316c8
2016-02-12Add a memcpy(a, a, n) test.Christopher Ferris
clang depends on memcpy where src and dst are the same to actually work. Even though this is, technically, undefined behavior, clang is not going to change. Add a test to verify this assumption holds true for android devices. Change-Id: Ib575af3c14e705bb62c18fad7d57e1cc0d242899
2016-01-13Add method to run fortified versions of funcs.Christopher Ferris
Add a way to turn fortify off for the files that test fortify functions. This method involves simply compiling the same file with fortify off and changing the test name slightly. It's not very pretty, and it assumes that only these few files test functions that can be fortified. Bug: 15195631 Change-Id: Iba9db1d508b7d28a1d6968019cb70fe08864827b
2015-09-24Fix over read in strcpy/stpcpy/strcat.Christopher Ferris
This bug will happen when these circumstances are met: - Destination address & 0x7 == 1, strlen of src is 11, 12, 13. - Destination address & 0x7 == 2, strlen of src is 10, 11, 12. - Destination address & 0x7 == 3, strlen of src is 9, 10, 11. - Destination address & 0x7 == 4, strlen of src is 8, 9, 10. In these cases, the dest alignment code does a ldr which reads 4 bytes, and it will read past the end of the source. In most cases, this is probably benign, but if this crosses into a new page it could cause a crash. Fix the labels in the cortex-a9 strcat. Modify the overread test to vary the dst alignment to expost this bug. Also, shrink the strcat/strlcat overread cases since the dst alignment variation increases the runtime too much. Bug: 24345899 Change-Id: Ib34a559bfcebd89861985b29cae6c1e47b5b5855
2015-08-26Add strchrnul.Elliott Hughes
Bug: http://b/18374026 Change-Id: Iea923309c090a51a2d41c5a83320ab3789f40f1c
2015-07-27Add a regression test for a fixed strnlen bug.Elliott Hughes
Bug: https://code.google.com/p/android/issues/detail?id=74741 Change-Id: I78b0114bdbe8e680b0e938af608a634e73c86eda
2015-02-18Add GNU extensions mempcpy and wmemcpy.Elliott Hughes
Used by elfutils. On the bright side, they stopped using __mempcpy. Bug: 18374026 Change-Id: Id29bbe6ef1c5ed5a171bb6c32182f129d8332abb
2015-02-14Fix memchr overflow.Elliott Hughes
The overflow's actually in the generic C implementation of memchr. While I'm here, let's switch our generic memrchr to the OpenBSD version too. Bug: https://code.google.com/p/android/issues/detail?id=147048 Change-Id: I296ae06a1ee196d2c77c95a22f11ee4d658962da
2014-11-10Add align/overread tests for strlcpy/strlcat.Christopher Ferris
Change-Id: I2801c7ee1847cd68ec95eba5bdffde5e52edf1e5
2014-09-04Reset enviroment for math_testsDmitriy Ivanov
Bug: 17390824 Change-Id: I42f4c8d9199a2efe7641f0b0e64580cacb5695da
2014-09-03Merge "Make string tests check all alignment combinations"Dmitriy Ivanov
2014-08-28Add GNU-compatible strerror_r.Elliott Hughes
We already had the POSIX strerror_r, but some third-party code defines _GNU_SOURCE and expects to get the GNU strerror_r instead. This exposed a bug in the libc internal logging functions where unlike their standard brethren they wouldn't return the number of bytes they'd have liked to have written. Bug: 16243479 Change-Id: I1745752ccbdc569646d34f5071f6df2be066d5f4
2014-08-19Implement the GNU basename(3) in addition to the POSIX one.Elliott Hughes
Code like perf(1) needs this. Bug: 11860789 Change-Id: I907eb448052a7b165e4012d74303330d32328cb2
2014-08-14Make string tests check all alignment combinationsDmitriy Ivanov
Reduce randomization of the test by (1) replacing random() & 255 with hard-coded char and (2) by making State *Iteration function visit every possible alignment combination instead of 10 random ones. Change-Id: I0ff0b4ca817ba9fbbcce53e09b25eb10a1a853c2
2014-07-30Fix memchr with a zero length.Christopher Ferris
The memchr implementation for 64 bit fails if these conditions occur: - The buffer is 32 byte aligned. - The buffer contains the character in the first byte. - The count sent in is zero. The function should return NULL, but it's not. Bug: 16676625 Change-Id: Iab33cc7a8b79920350c72f054dff0e0a3cde69ce
2014-06-30Add extra strchr testing.Christopher Ferris
Change-Id: Idd0a779eb3388e402cfcb4e0df40872320f8e155
2014-06-14Revert "Backing this one out since the counterpart needs to be sent upstream."Dan Albert
This reverts commit a04d2bc28e7d7fcaf34ad71e4a6608a13cf84197. Change-Id: I1b49165ca5d4bafdba7948818256a6167a363aca
2014-06-14Backing this one out since the counterpart needs to be sent upstream.Dan Albert
This reverts commit 5ee320dd35fafc11eaf90c62198e08c6670e35b4. Change-Id: I1a9c6b06c3aca595f01c629f7649be743dc48e77
2014-06-13Hides valloc(3)/pvalloc(3) on LP64.Dan Albert
These were removed from POSIX 2004. Hides the header declarations for all targets, and hides the symbols for LP64. Bug: 13935372 Change-Id: Id592f67e9b7051517a05f536e1373b30162e669c
2014-06-12Remove __memcmp16 from bionic.Elliott Hughes
Change-Id: I2486d667d96c8900dd368d855f37c1327161efb7
2014-06-10AArch64: Fix memcmp16() testSerban Constantinescu
__memcmp16() should return an integer less than, equal to, or greater than zero. However the tests looks for a specific value. Change-Id: I06052f58f9ccc67146a3df9abb349c4bc19f090e Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
2014-06-05Fix for slm-tuned memmove (both 32- and 64-bit).Varvara Rainchik
Introduce a test for memmove that catches a fault. Fix both 32- and 64-bit versions of slm-tuned memmove. Change-Id: Ib416def2610a0972e32c3b9b6055b54967643dc3 Signed-off-by: Varvara Rainchik <varvara.rainchik@intel.com>
2014-05-20denver: optimize memmoveShu Zhang
Optimize 32-bit denver memmove with reversal memcpy. Change-Id: Iaad0a9475248cdd7e4f50d58bea9db1b767abc88
2014-04-30Make SIGRTMIN hide the real-time signals we use internally.Elliott Hughes
__SIGRTMIN will continue to tell the truth. This matches glibc's behavior (as evidenced by the fact that we don't need a special case in the strsignal test now). Change-Id: I1abe1681d516577afa8cd39c837ef12467f68dd2
2014-04-07Add stpcpy/stpncpy.Christopher Ferris
Add tests for the above. Add the fortify implementations of __stpcpy_chk and __stpncpy_chk. Modify the strncpy test to cover more cases and use this template for stpncpy. Add all of the fortify test cases. Bug: 13746695 Change-Id: I8c0f0d4991a878b8e8734fff12c8b73b07fdd344
2014-02-06Make sure that the same tests are on all platforms.Christopher Ferris
In order to be able to generate a list of tests for cts, the same set of tests must exist across all platforms. This CL adds empty tests where a test was conditionally compiled out. This CL creates a single library libBionicTests that includes all of the tests found in bionic-unit-tests-static. Also fix a few missing include files in some test files. Tested by running and compiling the tests for every platform and verifying the same number of tests are on each platform. Change-Id: I9989d4bfebb0f9c409a0ce7e87169299eac605a2
2013-12-03Add strcmp/memcmp testing.Christopher Ferris
Bug: 9797008 Change-Id: I11b1da060d29f7dacbb53f20a3e2082395b5bd8a
2013-11-15Add new tests for memory/string routines.Christopher Ferris
Create a few generic testing functions to allow any memory/string tests to be created. Add alignment tests for memcpy/memset/strcat/strcpy/strlen. Add an overread test for memcpy/strcat/strcpy/strlen. This test attempts to verify that the functions do not read past the end of their buffers (src buffer in the case of src/dst functions). Bug: 9797008 Change-Id: Ib3223ca1b99e729ae8229adc2d03f4dc3103d97c
2013-08-02Add ssse3 implementation of __memcmp16.Alexander Ivchenko
__memcmp16 was missing in x86. Also added C-version for backward compatibility. Added bionic test for __memcmp16 and for wmemcmp. Change-Id: I33718441e7ee343cdb021d91dbeaf9ce2d4d7eb4 Signed-off-by: Alexander Ivchenko <alexander.ivchenko@intel.com>
2013-06-04Add tests for __strcpy_chk()Nick Kralevich
Change-Id: I5675d04fcd471732c1b87b83879a54fbcd27762e
2013-05-31FORTIFY_SOURCE: strcat / strncat optimizeNick Kralevich
__strcat_chk and __strncat_chk are slightly inefficient, because they end up traversing over the same memory region two times. This change optimizes __strcat_chk / __strncat_chk so they only access the memory once. Although I haven't benchmarked these changes, it should improve the performance of these functions. __strlen_chk - expose this function, even if -D_FORTIFY_SOURCE isn't defined. This is needed to compile libc itself without -D_FORTIFY_SOURCE. Change-Id: Id2c70dff55a276b47c59db27a03734d659f84b74
2013-05-02libc: cleanup strchrNick Kralevich
Move strchr to a .cpp file, and change to bionic directory. Change-Id: I64ade7df326c0a9a714aca4caf5647b6833b1c97
2013-04-29strncpy: implement _FORTIFY_SOURCE=2Nick Kralevich
Add support for fortify source level 2 to strncpy. This will enable detection of more areas where strncpy is used inappropriately. For example, this would have detected bug 8727221. Move the fortify_source tests out of string_test.cpp, and put it into fortify1_test.cpp. Create a new fortify2_test.cpp file, which copies all the tests in fortify1_test.cpp, and adds fortify_source level 2 specific tests. Change-Id: Ica0fba531cc7d0609e4f23b8176739b13f7f7a83
2013-01-17FORTIFY_SOURCE: optimizeNick Kralevich
Don't do the fortify_source checks if we can determine, at compile time, that the provided operation is safe. This avoids silliness like calling fortify source on things like: size_t len = strlen("asdf"); printf("%d\n", len); and allows the compiler to optimize this code to: printf("%d\n", 4); Defer to gcc's builtin functions instead of pointing our code to the libc implementation. Change-Id: I5e1dcb61946461c4afaaaa983e39f07c7a0df0ae
2013-01-15fix strerror_r testNick Kralevich
e6e60065ff093ff8c859ab146cf543531cb1967c modified strerror_r to treat errno as signed. However, the change to the test code modified the "strerror" test, not the "strerror_r" test. Make the same change for the strerror_r code. Change-Id: Ia236a53df5745935e229a4446a74da8bed0cfd7b
2013-01-11Add stack canaries / strcpy tests.Nick Kralevich
Add a test to ensure that stack canaries are working correctly. Since stack canaries aren't normally generated on non-string functions, we have to enable stack-protector-all. Add a test to ensure that an out of bounds strcpy generates a runtime failure. Change-Id: Id0d3e59fc4b9602da019e4d35c5c653e1a57fae4
2013-01-10glibc 2.15 treats errno as signed in strerror(3).Elliott Hughes
And the only reason I hadn't done that in bionic is because I wanted to behave the same as glibc. Change-Id: I2cf1bf0aac82a748cd6305a2cabbac0790058570
2012-11-07Tests for string routines.Anna Tikhonova
Change-Id: I24068a228f59df1c3b758c5b2026a09720490616 Signed-off-by: Anna Tikhonova <anna.tikhonova@intel.com>