Commit Graph

157 Commits

Author SHA1 Message Date
sin
578b693300 Bump to 0.7 2015-07-24 14:29:06 +01:00
sin
60dcebb6b8 Only crash on overflow for realpath() 2015-07-16 11:45:19 +01:00
sin
edb2ded3af Fix stpncpy() check
Do not crash unless the overflow would happen.
2015-07-15 17:02:27 +01:00
sin
a51406af12 Fix confstr() check
Do not crash unless the overflow would actually happen.
2015-07-15 16:05:52 +01:00
sin
a255506ca4 Fix wcrtomb() check
This was breaking valid code, example:
char c;
wcrtomb(&c, L'0', st);
2015-07-15 15:55:56 +01:00
Steven Barth
7fd984fcb5 Add __extension__ mark to include_next to silence -pedantic
Signed-off-by: Steven Barth <steven@midlink.org>
2015-06-25 10:18:26 +01:00
Steven Barth
0825063aa6 unistd: fix signed / unsigned comparison in getgroups
Signed-off-by: Steven Barth <steven@midlink.org>
2015-06-22 19:05:54 +01:00
sin
8ff214efe6 Bump to 0.6 2015-06-17 16:37:56 +01:00
Trutz Behn
4cdac9cbda Use the __inline__ keyword instead of __inline to avoid breakage
Newer compilers default to GNU11, a C11 dialect. Some software however
is unprepared for this or has wrong compatibility checks. What happens
is that some software will for compatibility with C89

  #define inline

before inclusion of a standard header, which is undefined behaviour in
C99 and above (C99/C11 7.1.2/4), as inline is a keyword.

If any libc headers that are then included via #include_next provide an
__inline macro definition (current musl does this if C++ or C99 and
above is detected) like the following

  #define __inline inline

this results in any __inline token to be preprocessed away.

This breaks use of __builtin_va_arg_pack() in our stdio.h at
compile-time as it can only be used in always inlined functions. The
function attributes __always_inline__ and __gnu_inline__ themselves
require an inline specifier on the function to be applied.
2015-06-04 18:52:50 +01:00
Trutz Behn
1cd5461a53 Use namespace-safe macro, param and variable names 2015-06-03 18:55:35 +01:00
Trutz Behn
a9ee1d2743 Fix usage of __USER_LABEL_PREFIX__
The predefined __USER_LABEL_PREFIX__ macro if it is non-empty contains
an identifier, not a string literal, thus it needs to be stringified.
2015-06-03 08:33:32 +01:00
sin
ec970ecb88 Bump to 0.5 2015-05-29 12:38:17 +01:00
Trutz Behn
720c4f7414 Fix return-type of fortified FD_CLR and FD_SET
POSIX specifies them to have return-type void, not int.
2015-05-21 10:10:17 +01:00
sin
a81e053a1c Be less verbose in README 2015-05-19 10:22:59 +01:00
sin
50e37c7f76 Wrap some overly long lines 2015-05-13 12:18:35 +01:00
sin
07adb50914 Add LICENSE header 2015-05-13 12:15:36 +01:00
sin
158782b3bb Add fortify_fn() helper in fortify-headers.h 2015-05-13 12:05:29 +01:00
sin
316a486533 Minor style fix 2015-05-07 18:04:01 +01:00
Natanael Copa
c2bb9e106a fix realpath when stdlib.h is included before limits.h
If program includes stdlib.h before limits.h without _XOPEN_SOURCE,
_GNU_SOURCE or _BSD_SOURCE explicitly set, then will it always trigger
the trap with musl libc.

This is becase stdlib.h will pull in features.h which will set
_GNU_SOURCE. This means that the fortify stdlib.h will not include
limits.h but it will still trigger the fortified realpath(), but without
PATH_MAX set.

We fix this by including system stdlib.h before testing if limits.h
should be included.

Since PATH_MAX is known at compile time we can also error at compile
time, instead of compiling a broken realpath().
2015-05-07 15:02:11 +01:00
sin
c7e82d4863 Add read checks for bcopy() 2015-04-08 15:25:47 +01:00
sin
2bd3091b36 Check for out of bound reads for memcpy, memmove and mempcpy() 2015-04-08 15:18:49 +01:00
sin
91a579a42c Bump to 0.4 2015-04-06 10:06:01 +01:00
sin
534ef92103 Update README again 2015-04-01 17:49:31 +01:00
sin
e359fc6ace Update README 2015-04-01 17:46:57 +01:00
sin
73839e34a6 Add feature-test guards for mbsnrtowcs() and wcsnrtombs() 2015-04-01 12:41:08 +01:00
sin
739ec00a02 Update README 2015-03-24 12:25:13 +00:00
sin
d6510c1594 Add url to alpine linux fortify integration 2015-03-24 12:24:17 +00:00
sin
19e34402d5 Bump to 0.3 2015-03-16 12:02:16 +00:00
sin
442a2a4d65 Hide stpcpy() and stpncpy() under feature test macros 2015-03-15 09:57:26 +00:00
Trutz Behn
22e7e51007 Use __typeof__ to in part avoid replicating function types 2015-03-14 20:37:27 +00:00
Trutz Behn
c2c9d0c6c8 Fix typo in attribute name 2015-03-14 19:39:14 +00:00
sin
9419492998 Update the README
__builtin_va_arg_pack() is not present in clang along with some
other things like __artificial__ etc.

There will be a fallback mechanism for this implemented in the
next release.
2015-03-14 11:11:04 +00:00
sin
0932a82ada Explicitly cast pointers to satisfy C++ code 2015-03-14 09:45:37 +00:00
sin
37eb2c9c1d Add __artificial__ to aid in debugging 2015-03-14 09:38:22 +00:00
sin
d12254166a Restore C++ support 2015-03-13 23:09:15 +00:00
sin
c4abf4497b Fix typo again 2015-03-13 17:14:58 +00:00
sin
c8ecc164f1 Implement snprintf() and sprintf() using __builtin_va_arg_pack()
Requires at least GCC 4.3.
2015-03-13 17:03:52 +00:00
sin
c2b0ad0bf5 Re-order vsnprintf() and vsprintf()
vsprintf() needs to access __vsnprintf_orig().
2015-03-13 14:22:41 +00:00
sin
2b6657b759 Fix typo 2015-03-13 14:19:32 +00:00
sin
9f8c543dc8 Rework fortify implementation to use extern inline
Overriding functions with macros is legal in C but a lot of software
is not prepared for it.  Use the extern inline method to achieve the
same result.
2015-03-13 11:00:46 +00:00
Trutz Behn
b211796d68 Put include guards in the reserved namespace
fortify-headers is considered part of the implementation.
2015-03-11 21:33:01 +00:00
sin
5933d58bde Clarify what is meant by not supporting C++ 2015-03-11 15:31:47 +00:00
sin
ef43d8c0a5 Add note about C++ in the README 2015-03-11 12:59:01 +00:00
sin
69e43f5c5e Revert "Add explicit casts to satisfy C++ code"
This reverts commit 1fbf7a3a5e9c02cf992848002cfb88c3c7cc0212.
2015-03-11 12:57:37 +00:00
sin
14af218559 Ignore C++ for now
It is not legal to override standard functions using macros in C++.
We may have to revisit this in the future.
2015-03-11 11:18:31 +00:00
sin
8604f138c5 Add ifdef guards for C++ code 2015-03-11 09:26:11 +00:00
sin
1fbf7a3a5e Add explicit casts to satisfy C++ code 2015-03-11 09:21:25 +00:00
sin
499ea65dd5 Revert "Fix invalid conversion in C++ code"
This reverts commit 4b4dfea25d660a8a27e95ea531686001246b3d1e.
2015-03-11 09:21:00 +00:00
sin
4b4dfea25d Fix invalid conversion in C++ code
/usr/include/fortify/string.h: In function 'void* __fortify_memcpy(void*, const void*, size_t)':
/usr/include/fortify/string.h:13:12: error: invalid conversion from 'void*' to 'char*' [-fpermissive]
/usr/include/fortify/string.h:14:18: error: invalid conversion from 'const void*' to 'const char*' [-fpermissive]

Since we are relying on GCC anyway, assume void * arithmetic is OK.
2015-03-11 09:17:56 +00:00
sin
4f9058faae Bump to 0.2 2015-03-10 18:04:47 +00:00