standalone fortify-source implementation
git clone git://
Log | Files | Refs | README | LICENSE

DateCommit messageAuthorFiles+-
2024-05-20 12:48Add vasprintf/asprintfjvoisin5+105-3
2024-05-20 07:38Improve the testsuite reliability wrt. gccjvoisin1+3-0
2024-04-24 16:36Add a testjvoisin2+12-0
2024-04-24 15:09Fix some overlap mismatchjvoisin4+17-7
2024-04-24 12:49Disable pedantic checks by defaultjvoisin3+13-4
2024-03-19 17:35Relax our checks for memchr on C11 and abovejvoisin3+7-1
2024-03-08 15:07Add some NULL-pointers checksjvoisin8+111-0
2024-03-04 13:12Add a .gitattributes file to simplify releasesjvoisin1+3-0
2024-01-13 19:34Properly check for builtinsjvoisin1+8-4
2023-12-27 16:07Re-enable previously disabled overlap checksjvoisin6+33-31
2023-12-28 09:13Make the CI fail when the testsuite failsjvoisin1+6-2
2023-12-28 09:06Build with USE_NATIVE_CHK for clang and gccjvoisin1+5-3
2023-12-27 15:17Improve __fh_overlap implementationjvoisin2+8-8
2023-12-27 11:36Don't check for overlapping in strncpy/stpncpy for nowjvoisin5+22-0
2023-12-18 11:47fix typo for __builtin_memcpypsykose1+1-1
2023-12-16 01:07Ditto for strrchrq662+8-0
2023-12-16 01:03Disable strchr tests since strchr hardening is disabledq662+8-0
2023-12-16 01:00Also handle SIGTRAP in testsq661+1-0
2023-12-16 00:00Bump to 2.1q661+1-1
2023-12-15 23:51Disable str(r)chr hardeningq661+2-0
2023-12-15 22:48Rename some macros to be more namespace-friendlyq6610+187-187
2023-12-15 22:42Fix missing } for extern "C" when using clangq661+2-2
2023-12-15 22:09Move wctomb to stdlib.h and disable it for nowq662+18-15
2023-12-15 22:05Guard some conditional stdio APIs with the right macrosq661+30-23
2023-12-15 21:42Do not use static inline for C++ to avoid ODR violationsq661+5-0
2023-12-15 21:38Add missing include in select.hq661+1-0
2023-12-15 21:36Remove superfluous includesJulien Voisin12+137-152
2023-12-15 15:08Remove superfluous includesjvoisin12+137-152
2023-12-12 14:10Bump to 2.0jvoisin1+1-1
2023-12-10 13:02Add gcc 13 to the CIjvoisin1+1-1
2023-12-08 17:41Add a check in the CI to keep the readme up to datejvoisin2+36-0
2023-12-08 11:55Update the readme to point to upstream git repojvoisin1+1-1
2023-12-06 20:45Add qsortjvoisin4+71-0
2023-12-07 10:58Add a global test to ensure that all headers are compilingjvoisin3+27-3
2023-12-06 12:37Work around an erroneous `-Wformat-nonliteral` bug in gccjvoisin1+5-0
2023-12-05 18:14Update the READMEjvoisin1+2-3
2023-11-16 15:46Add hardening for select()Julien Voisin4+46-0
2023-11-16 15:42Add hardening for select()jvoisin4+46-0
2023-11-01 20:55Add support for FD_ISSETjvoisin4+41-0
2023-10-16 15:48Add a check about redefined macrosjvoisin1+1-1
2023-10-01 20:06Add vfprintf`jvoisin4+40-0
2023-10-01 20:00Add `fprintf`jvoisin2+19-3
2023-09-30 18:24Add `vprintf`jvoisin3+35-1
2023-09-30 17:24Fix a typojvoisin1+1-1
2023-09-29 22:15Add `strlen`jvoisin4+41-0
2023-09-29 12:50Make use of the native _chk variants for realjvoisin3+3-7
2023-09-27 21:28Add `printf` hardeningjvoisin3+20-0
2023-09-27 21:23Add support for more builtin compiler provided _chk variantsjvoisin1+9-1
2023-09-27 19:52Add an option to make use of compiler-provided _chk builtinsjvoisin4+87-12
2023-09-22 16:27Add more __diagnose_as_builtin annotationsjvoisin7+144-0
2023-09-21 13:50Properly enable diagnose_as_builtin attributejvoisin8+30-50
2023-09-20 22:33Add clang 15 to the CIjvoisin1+1-1
2023-09-20 16:05Add tests for compile-time errorsjvoisin4+32-20
2023-09-20 15:00Replace a strlen+condition with strnlenjvoisin1+1-3
2023-09-17 17:04Make use of the buffers in the wide-chars testsjvoisin10+20-0
2023-09-17 14:23Fix compilation under clang for bsd-specific functionsjvoisin4+8-0
2023-09-17 14:02Add more dynamic testsjvoisin7+118-4
2023-09-17 13:48Add dynamic tests for strcpy and strncatjvoisin3+34-0
2023-09-17 13:12Add a test for stpcpyjvoisin3+19-2
2023-09-11 18:23Factorize overlap checks into a macrojvoisin2+14-20
2023-09-11 18:23Fix a warningjvoisin1+0-1
2023-09-11 16:39Add a warning for _FORTIFY_SOURCE>3jvoisin1+4-0
2023-09-11 15:55Add a warning if realpath is called with path set to NULLjvoisin1+1-0
2023-09-11 15:41Add the warn_unused_result attribute to alloc-related functionsjvoisin2+11-0
2023-09-11 15:11Add a bunch of wchar_t testsjvoisin5+66-5
2023-09-04 18:50Install wget for the coverity workflowjvoisin1+1-1
2023-09-03 23:46Add tests for wmemcpyjvoisin3+30-0
2023-08-28 20:45Fix the coverity runjvoisin1+14-1
2023-08-26 21:42Add two tests for wmemmovejvoisin3+30-0
2023-08-22 18:08Clean up some includesjvoisin2+5-12
2023-08-22 17:37Show the failing file name in the testsuitejvoisin1+1-1
2023-08-22 17:36Increase portabilityjvoisin1+3-0
2023-08-22 17:16Add hardening for pwritejvoisin4+41-0
2023-08-21 20:55Add tests for wmemsetjvoisin3+30-0
2023-08-21 20:49Add tests for mbstowcsjvoisin3+32-0
2023-08-21 15:46Harden umaskjvoisin3+59-0
2023-08-21 15:45Improve the .gitignore file wrt. testsjvoisin1+3-0
2023-08-21 15:22Make use of __diagnose_ifjvoisin2+9-0
2023-08-21 15:11Remove some todo in __bmo's implementationjvoisin1+5-3
2023-08-20 20:51Add coverity analysisjvoisin1+38-0
2023-08-20 22:43Add tests for fgetws and mbsrtowcsjvoisin6+67-1
2023-08-20 21:49Remove the testsuite from the coverage datajvoisin1+2-1
2023-08-20 21:37Split build and runjvoisin3+13-9
2023-08-20 21:11Cache the musl toolchain in the coverage step in the CIjvoisin1+9-1
2023-08-20 20:13Run the testsuite on multiple gcc versionsjvoisin1+7-0
2023-08-20 19:52Add more __access annotations in stdio.hjvoisin1+8-0
2023-08-20 19:45Add two __format annotationsjvoisin1+5-2
2023-08-20 19:33Specify "shell: bash" in github actionsjvoisin1+2-0
2023-08-20 18:50Make use of __diagnose_as_builtinjvoisin8+66-0
2023-08-20 18:43Use pass_dynamic_object_size only for FORTIFY_SOURCE > 2jvoisin1+4-3
2023-08-20 18:28Make use of pass_dynamic_object_size when availablejvoisin1+4-0
2023-08-20 17:02Fix clang buildjvoisin9+32-17
2023-08-20 17:33Fix some sizeof-related typoes in the testsuitejvoisin4+4-4
2023-08-20 16:25Refresh a bit the READMEjvoisin2+115-110
2023-08-20 16:15Add hardening for strrchrjvoisin4+47-0
2023-08-20 16:09Add hardening for strchrjvoisin4+47-0
2023-08-20 15:59Add two tests for memchrjvoisin3+35-0
2023-08-20 14:43Remove memrchr hardening for nowjvoisin1+0-13
2023-08-03 17:41Add hardening for memchr and memrchrjvoisin1+24-0
2023-07-18 21:07Make use of the alloc_size attributejvoisin2+30-0
2023-07-10 22:14Add more dynamic testsjvoisin13+120-6
2023-07-10 22:03Sort build targets in the tests' Makefilejvoisin1+56-56
2023-07-10 22:00Add some dynamic tests for unistd.hjvoisin23+192-11
2023-07-10 21:46Add some dynamic tests for sys/socket.hjvoisin9+64-4
2023-07-10 21:34Add tests for sys/socketjvoisin5+60-0
2023-07-10 21:20Add tests for sys/socket.hjvoisin5+60-0
2023-07-10 21:13Clean up a bit the macro helljvoisin1+12-7
2023-07-09 17:14Add some malloc annotationsjvoisin5+62-2
2023-07-09 16:50Add some `format` annotationsjvoisin3+9-1
2023-07-09 16:37Move a misplaced #endifjvoisin1+2-2
2023-07-09 16:33Add an __access__ annotation to wchar.hjvoisin1+1-0
2023-07-09 16:12Improve a bit `size_t*size_t` overflow checksjvoisin2+23-2
2023-07-09 16:03Add tests for stdio.hjvoisin7+126-0
2023-07-09 14:11Add tests for unistd.hjvoisin12+170-1
2023-07-09 10:27Fix a couple of warningsjvoisin3+2-3
2023-07-08 20:00Add access annotations to unistd.hjvoisin1+10-0
2023-07-08 19:49Add tests for memcpy overflow/underflowjvoisin3+32-0
2023-07-05 13:48Add access annotations to sys/socket.hjvoisin1+4-0
2023-07-05 13:41Add tests for bzerojvoisin3+39-0
2023-07-05 13:38Add tests for bcopyjvoisin5+76-0
2023-07-04 23:01Cache musl-toolchain downloadjvoisin1+9-1
2023-07-04 22:55Run several clang versions in the CIjvoisin1+7-0
2023-07-04 22:52Don't download musl-cc for clang in the CIjvoisin1+0-4
2023-06-27 15:33Add more access-annotationsjvoisin3+10-3
2023-06-25 16:39Fix the coverage on github pagesjvoisin1+2-0
2023-06-25 16:36Run clang and gcc in the CIjvoisin2+15-3
2023-06-25 16:35Fix clang supportjvoisin3+16-5
2022-10-25 22:30add initial clang supportDaniel Kolesa10+157-61
2022-11-01 19:14avoid __extension__ with clangDaniel Kolesa8+12-12
2023-06-22 22:28Add a test for fgetsjvoisin2+18-1
2023-06-22 16:46Add an annotation for fgetsjvoisin1+1-0
2023-06-22 16:42Add a test for ppolljvoisin2+16-0
2023-06-22 16:33Add a test for `poll`jvoisin3+17-2
2023-06-22 16:20Add tests for mempcpyjvoisin5+72-0
2023-06-22 16:14Add a test for strncatjvoisin3+19-3
2023-06-22 16:07Add tests for stcncpyjvoisin5+55-1
2023-06-22 15:58Add tests for stpcpyjvoisin5+61-5
2023-06-14 12:59Add tests for strncpy and handle overlapping buffers therejvoisin5+70-16
2023-05-30 20:06Add some __attribute__((access…)) annotationsjvoisin2+27-0
2023-05-30 19:19Add code coveragejvoisin2+53-0
2023-05-30 18:53Add a test for getcwdjvoisin2+15-0
2023-05-30 18:46Add a check for overlapping copies in strcpyjvoisin4+40-1
2023-05-30 18:13Fix inconsistent time_t version of ppolljvoisin1+1-1
2023-04-13 21:44Add tests for strcat and strcpyjvoisin3+34-0
2023-04-13 20:51Add tests for memsetjvoisin3+35-1
2023-04-13 20:46Add tests for memmovejvoisin5+72-4
2023-03-19 18:16Add a .gitignorejvoisin1+2-0
2023-03-18 12:29Add a basic testsuitejvoisin7+170-0
2023-03-18 13:01Make use of __builtin_dynamic_object_sizejvoisin10+72-64
2019-04-14 08:25Bump to 1.1sin1+1-1
2019-03-13 12:55getgroups: do not trap on non-positive gidsetsizeinfo@mobile-stream.com1+1-1
2019-03-06 13:28wctomb, wcrtomb: guard slow/trap path with MB_LEN_MAXinfo@mobile-stream.com1+5-6
2019-03-06 13:28realpath: guard slow/trap path with PATH_MAXinfo@mobile-stream.com1+3-5
2019-02-25 13:22Bump copyrightsin1+1-1
2019-02-25 13:01Make use of builtins whenever possiblesin2+3-3
2018-07-24 10:01Bump to 1.0sin1+1-1
2018-06-23 22:57Don't use __extension__ in C++ codeA. Wilcox8+24-0
2017-08-22 10:38Bump to 0.9sin1+1-1
2017-08-22 10:31Don't trap if an encoding error occurs in wcrtomb()sin1+3-1
2016-09-10 11:54Bump copyright yearsin11+11-11
2016-07-14 15:09Bump to 0.8sin1+1-1
2016-07-14 14:45Only include limits.h when actually usedNatanael Copa1+1-1
2015-07-24 13:29Bump to 0.7sin1+1-1
2015-07-16 10:45Only crash on overflow for realpath()sin1+11-3
2015-07-15 16:02Fix stpncpy() checksin1+1-1
2015-07-15 15:05Fix confstr() checksin1+3-2
2015-07-15 14:53Fix wcrtomb() checksin1+13-2
2015-06-24 18:13Add __extension__ mark to include_next to silence -pedanticSteven Barth8+10-0
2015-06-22 12:36unistd: fix signed / unsigned comparison in getgroupsSteven Barth1+1-1
2015-06-17 15:37Bump to 0.6sin1+1-1
2015-06-04 13:01Use the __inline__ keyword instead of __inline to avoid breakageTrutz Behn2+3-3
2015-06-03 17:27Use namespace-safe macro, param and variable namesTrutz Behn10+291-291
2015-06-02 19:33Fix usage of __USER_LABEL_PREFIX__Trutz Behn1+3-1
2015-05-29 11:38Bump to 0.5sin1+1-1
2015-05-20 20:09Fix return-type of fortified FD_CLR and FD_SETTrutz Behn1+4-4
2015-05-19 09:22Be less verbose in READMEsin1+0-3
2015-05-13 11:18Wrap some overly long linessin1+8-4
2015-05-13 11:15Add LICENSE headersin10+150-0
2015-05-13 11:04Add fortify_fn() helper in fortify-headers.hsin9+135-230
2015-05-07 17:04Minor style fixsin1+1-1
2015-05-07 12:50fix realpath when stdlib.h is included before limits.hNatanael Copa1+3-3
2015-04-08 14:25Add read checks for bcopy()sin1+5-4
2015-04-08 14:18Check for out of bound reads for memcpy, memmove and mempcpy()sin1+47-44
2015-04-06 09:06Bump to 0.4sin1+1-1
2015-04-01 16:49Update README againsin1+3-0
2015-04-01 16:46Update READMEsin1+4-3
2015-04-01 11:41Add feature-test guards for mbsnrtowcs() and wcsnrtombs()sin1+8-2
2015-03-24 12:25Update READMEsin1+0-1
2015-03-24 12:24Add url to alpine linux fortify integrationsin1+2-1
2015-03-16 12:02Bump to 0.3sin1+1-1
2015-03-15 09:57Hide stpcpy() and stpncpy() under feature test macrossin1+6-2
2015-03-14 19:06Use __typeof__ to in part avoid replicating function typesTrutz Behn8+56-112
2015-03-14 17:35Fix typo in attribute nameTrutz Behn1+1-1
2015-03-14 11:10Update the READMEsin1+1-2
2015-03-14 09:45Explicitly cast pointers to satisfy C++ codesin1+2-2
2015-03-14 09:38Add __artificial__ to aid in debuggingsin9+58-58
2015-03-13 23:09Restore C++ supportsin10+51-11
2015-03-13 17:14Fix typo againsin1+1-1
2015-03-13 17:03Implement snprintf() and sprintf() using __builtin_va_arg_pack()sin1+28-21
2015-03-13 14:22Re-order vsnprintf() and vsprintf()sin1+12-12
2015-03-13 14:19Fix typosin1+1-1
2015-03-13 11:00Rework fortify implementation to use extern inlinesin9+335-361
2015-03-11 18:55Put include guards in the reserved namespaceTrutz Behn9+18-18
2015-03-11 15:31Clarify what is meant by not supporting C++sin1+2-1
2015-03-11 12:59Add note about C++ in the READMEsin1+1-0
2015-03-11 12:57Revert "Add explicit casts to satisfy C++ code"sin1+2-2
2015-03-11 11:18Ignore C++ for nowsin9+9-45
2015-03-11 09:26Add ifdef guards for C++ codesin9+72-0
2015-03-11 09:21Add explicit casts to satisfy C++ codesin1+2-2
2015-03-11 09:21Revert "Fix invalid conversion in C++ code"sin1+4-2
2015-03-11 09:17Fix invalid conversion in C++ codesin1+2-4
2015-03-10 18:04Bump to 0.2sin1+1-1
2015-03-10 18:04Inline ppoll() as wellsin1+2-1
2015-03-10 16:41Initial 0.1 releasesin1+1-1
2015-03-10 16:40Rename make dist target to fortify-headerssin1+6-6
2015-03-10 16:31Make ppoll() staticsin1+1-1
2015-03-08 11:47Update READMEsin1+1-1
2015-03-07 23:11Minor README updatesin1+1-1
2015-03-07 11:49Fix strncat() and strncpy() mappingssin1+2-2
2015-03-07 10:32Style fixsin1+0-1
2015-03-07 10:01Expand UB, may not be clear for all readerssin1+2-2
2015-03-06 17:55More README updatessin1+26-25
2015-03-06 17:15Add section on supported interfacessin1+63-0
2015-03-06 17:10Update READMEsin1+2-2
2015-03-06 16:55Grammar fixsin1+1-1
2015-03-06 16:53Update section names in READMEsin1+4-4
2015-03-06 16:52Update READMEsin1+4-3
2015-03-06 16:47Rephrase text in READMEsin1+2-3
2015-03-06 16:45Add info about out-of-bouds read interfacessin1+4-1
2015-03-06 16:42Update READMEsin1+41-8
2015-03-06 12:39Fix some checks in wchar.hsin1+4-4
2015-03-05 18:21Fix mbsnrtowcs() and wcsnrtombs() checkssin1+24-18
2015-03-04 20:16Fix wcsrtombs() checksin1+4-2
2015-03-04 18:26Fix mbsrtowcs() checksin1+5-2
2015-03-04 17:10Handle early termination in wcsnrtombs() and mbsnrtowcs()sin1+14-2
2015-03-04 13:12Add wctomb() checksin1+13-0
2015-03-04 13:09Add wcstombs() checksin1+18-5
2015-03-04 12:59Add wcsnrtombs() and wcsrtombs() checkssin1+28-0
2015-03-04 12:42Add wcsncat() and wcsncpy() checkssin1+33-0
2015-03-04 12:27Add wcrtomb(), wcscat() and wcscpy() checkssin1+40-0
2015-03-03 20:38Style fixsin1+4-4
2015-03-03 20:36Add mbstowcs() checksin1+13-0
2015-03-03 20:30Add mbsnrtowcs() and mbsrtowcs() checkssin1+28-0
2015-03-03 18:16Add wmemcpy() and wmemmove() checkssin1+26-0
2015-03-03 18:13Add wmemset() checksin1+13-0
2015-03-03 17:11Fix signed/unsigned warningsin1+2-2
2015-03-03 17:10Remove gcc attribute decorationsin1+2-8
2015-03-03 16:59Don't trap on error for vsprintf() and friendssin1+2-2
2015-03-03 14:34Add fgetws() checksin1+24-0
2015-03-03 14:28Add ppoll() checksin1+19-0
2015-03-01 13:17Add fwrite() checksin1+15-0
2015-03-01 13:12Add fread() checksin1+15-0
2015-03-01 12:10Add vsprintf() checksin1+22-0
2015-03-01 11:55Fix potential signed/unsigned warningsin1+1-1
2015-03-01 11:09Add sprintf() checksin1+15-1
2015-02-28 20:49Remove redundant checkssin2+2-2
2015-02-28 20:21Minor style fixsin1+1-1
2015-02-28 16:56Add sendto() checksin1+16-1
2015-02-28 16:48Add readlink() and readlinkat() checkssin1+26-0
2015-02-28 16:11Style fixsin1+2-4
2015-02-28 16:01Use __typeof__(sizeof 0) trickerysin1+2-2
2015-02-28 15:59__fortify_realpath() should trap if PATH_MAX is not definedsin1+4-0
2015-02-28 15:41Add note on binary compatsin1+3-0
2015-02-28 15:40Add README to make distsin1+1-1
2015-02-28 15:39Add initial READMEsin1+7-0
2015-02-28 15:30Add ttyname_r() checksin1+13-0
2015-02-28 14:52Don't include stddef.h from poll.hsin1+2-3
2015-02-28 12:10Add poll() checksin1+25-0
2015-02-28 12:00Add getgroups() checksin1+13-0
2015-02-28 11:52Add getdomainname() checksin1+19-0
2015-02-25 10:35Clarify comment a bitsin1+2-1
2015-02-25 10:31Add getlogin_r() checksin1+13-0
2015-02-24 19:37Add send() checksin1+13-0
2015-02-24 19:34Add write() checksin1+13-0
2015-02-24 19:04Add realpath() checksin1+35-0
2015-02-24 18:12Remove compile time checkssin5+0-103
2015-02-23 10:45Add gethostname() checkssin1+17-0
2015-02-22 09:39Remove header license commentssin6+0-6
2015-02-21 21:22Relicense under 0-clause BSDsin1+12-21
2015-02-05 14:07Add getcwd() checkssin1+17-0
2015-02-05 14:03Add confstr() checkssin1+17-0
2015-02-04 18:06Remember to #undef __errordeclsin5+10-0
2015-02-04 15:12Style fixsin5+5-5
2015-02-04 14:58Add recvfrom() checkssin1+17-0
2015-01-31 11:43Add uninstall, dist and clean target to Makefilesin1+16-2
2015-01-30 16:43Add recv() checkssin1+31-0
2015-01-30 16:40Use consistent naming conventionsin1+4-4
2015-01-30 16:37Remove pwrite/writesin1+0-34
2015-01-30 16:29No need for cp -f when installingsin1+1-1
2015-01-30 16:29Ensure make install can copy dirs toosin1+1-1
2015-01-30 16:25Remove __restrictsin3+13-14
2015-01-30 16:17Add FD_{CLR,SET} checkssin1+38-0
2015-01-30 09:44Add pread() and pwrite() checkssin1+34-0
2015-01-29 20:41Fix typosin1+1-1
2015-01-29 20:34Style fixsin1+0-1
2015-01-29 20:31Add read()/write() checkssin1+49-0
2015-01-29 17:55Allow dest == src in memcpy()sin1+3-3
2015-01-29 12:42Add compile-time checks as wellsin3+63-1
2015-01-29 12:14Style fixsin1+0-2
2015-01-29 12:14Add bzero() checkssin1+14-0
2015-01-29 11:13Add license infosin3+3-0
2015-01-29 11:10Style fixsin2+4-2
2015-01-29 10:47Trap if memcpy() pointers are overlappingsin1+6-0
2015-01-29 10:43Add bcopy() checkssin1+28-0
2015-01-29 00:12Add fgets() checkssin1+12-0
2015-01-28 23:40Use BSD-style func defssin2+27-13
2015-01-28 17:47Use #ifdef instead of #if definedsin1+2-2
2015-01-28 17:44Add mempcpy() checkssin1+17-0
2015-01-28 17:15Use local _n to avoid multiple evaluationsin1+2-2
2015-01-28 17:12Simplify checkssin1+8-30
2015-01-28 17:08Add snprintf() checkssin1+9-3
2015-01-28 16:57Use __builtin_va_listsin1+1-1
2015-01-28 16:54Add vsnprintf() checkssin1+28-0
2015-01-28 16:31Remove trailing semicolonsin1+2-2
2015-01-28 16:21Add stpncpy()sin1+14-0
2015-01-28 16:16Add stpcpy()sin1+14-0
2015-01-28 16:07Move defines to the bottomsin1+20-24
2015-01-28 15:36Merge __foo_chk() into __fortify_foo()sin1+34-119
2015-01-28 15:14Initial commitsin3+267-0