| #
e7a629c8
|
| 08-Mar-2022 |
Kyle Evans <kevans@FreeBSD.org> |
libmd, kern, stand: consolidate md5 implementations (NFC)
Reduce the number of md5c.c between the three of these from two to one by just reaching into the kernel build for both userland builds. The
libmd, kern, stand: consolidate md5 implementations (NFC)
Reduce the number of md5c.c between the three of these from two to one by just reaching into the kernel build for both userland builds. The precedent for this already exists for sha2 in both cases.
_libmd_ symbol privatization bits have been moved to sys/md5.h and md5.h remains to #include <sys/md5.h> for compatibility.
This stops exporting MD5Pad() in the process because the kernel stopped exporting it in 502a35d60f4c. soversion is bumped accordingly.
This also renames the libc version of stack_protector.c; it previously only worked by coincidence because .PATH ordering worked out such that we got the right one, but this is not the case anymore. Remove the landmine.
PR: 280784 (exp-run) Reviewed by: allanjude, delphij Differential Revision: https://reviews.freebsd.org/D34497
show more ...
|
| #
559a218c
|
| 01-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
libc: Purge unneeded cdefs.h
These sys/cdefs.h are not needed. Purge them. They are mostly left-over from the $FreeBSD$ removal. A few in libc are still required for macros that cdefs.h defines. Kee
libc: Purge unneeded cdefs.h
These sys/cdefs.h are not needed. Purge them. They are mostly left-over from the $FreeBSD$ removal. A few in libc are still required for macros that cdefs.h defines. Keep those.
Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D42385
show more ...
|
| #
1d386b48
|
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
| #
f44df795
|
| 10-Feb-2023 |
Kyle Evans <kevans@FreeBSD.org> |
libc: ssp: remove some GCC 4.2 remnants
With GCC 4.2 out of the tree for a while now and no sign of it returning, we don't really need to support older versions that don't allow us to specify a ctor
libc: ssp: remove some GCC 4.2 remnants
With GCC 4.2 out of the tree for a while now and no sign of it returning, we don't really need to support older versions that don't allow us to specify a ctor priority anymore.
Noticed by: mjg
show more ...
|
| #
5487294d
|
| 29-Sep-2021 |
Kyle Evans <kevans@FreeBSD.org> |
libc: ssp: sprinkle around some __dead2
This is consistent with, e.g., NetBSD's implementation, which declares these as noreturn in ssp/ssp.h.
|
| #
a34e99ee
|
| 04-Jan-2020 |
Kyle Evans <kevans@FreeBSD.org> |
ssp: knock out some trivial warnings that come up with WARNS=6
A future commit will rebuild this as part of libssp. The exact warnings are fairly trivially fixed: - No previous declaration for __sta
ssp: knock out some trivial warnings that come up with WARNS=6
A future commit will rebuild this as part of libssp. The exact warnings are fairly trivially fixed: - No previous declaration for __stack_chk_guard - idx is the wrong type, nitems yields a size_t - Casting away volatile on the tmp_stack_chk_guard directly is a no-no.
Reviewed by: kib, emaste, pfg, Oliver Pinter (earlier version) MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D22943
show more ...
|
| #
4e0706cb
|
| 13-Nov-2019 |
Kyle Evans <kevans@FreeBSD.org> |
ssp: further refine the conditional used for constructor priority
__has_attribute(__constructor__) is a better test for clang than defined(__clang__). Switch to it instead.
While we're already here
ssp: further refine the conditional used for constructor priority
__has_attribute(__constructor__) is a better test for clang than defined(__clang__). Switch to it instead.
While we're already here and touching it, pfg@ nailed down when GCC actually introduced the priority argument -- 4.3. Use that instead of our hammer-guess of GCC >= 5 for the sake of correctness.
show more ...
|
| #
5ba134a4
|
| 13-Nov-2019 |
Kyle Evans <kevans@FreeBSD.org> |
ssp: rework the logic to use priority=200 on clang builds
The preproc logic was added at the last minute to appease GCC 4.2, and kevans@ did clearly not go back and double-check that the logic worke
ssp: rework the logic to use priority=200 on clang builds
The preproc logic was added at the last minute to appease GCC 4.2, and kevans@ did clearly not go back and double-check that the logic worked out for clang builds to use the new variant.
It turns out that clang defines __GNUC__ == 4. Flip it around and check __clang__ as well, leaving a note to remove it later.
Reported by: cem
show more ...
|
| #
d0fa84f4
|
| 13-Nov-2019 |
Kyle Evans <kevans@FreeBSD.org> |
ssp: add a priority to the __stack_chk_guard constructor
First, this commit is a NOP on GCC <= 4.x; this decidedly doesn't work cleanly on GCC 4.2, and it will be gone soon anyways so I chose not to
ssp: add a priority to the __stack_chk_guard constructor
First, this commit is a NOP on GCC <= 4.x; this decidedly doesn't work cleanly on GCC 4.2, and it will be gone soon anyways so I chose not to dump time into figuring out if there's a way to make it work. xtoolchain-gcc, clocking in as GCC6, can cope with it just fine and later versions are also generally ok with the syntax. I suspect very few users are running GCC4.2 built worlds and also experiencing potential fallout from the status quo.
For dynamically linked applications, this change also means very little. rtld will run libc ctors before most others, so the situation is approximately a NOP for these as well.
The real cause for this change is statically linked applications doing almost questionable things in their constructors. qemu-user-static, for instance, creates a thread in a global constructor for their async rcu callbacks. In general, this works in other places-
- On OpenBSD, __stack_chk_guard is stored in an .openbsd.randomdata section that's initialized by the kernel in the static case, or ld.so in the dynamic case - On Linux, __stack_chk_guard is apparently stored in TLS and such a problem is circumvented there because the value is presumed stable in the new thread.
On FreeBSD, the rcu thread creation ctor and __guard_setup are both unmarked priority. qemu-user-static spins up the rcu thread prior to __guard_setup which starts making function calls- some of these are sprinkled with the canary. In the middle of one of these functions, __guard_setup is invoked in the main thread and __stack_chk_guard changes- qemu-user-static is promptly terminated for an SSP violation that didn't actually happen.
This is not an all-too-common problem. We circumvent it here by giving the __stack_chk_guard constructor a solid priority. 200 was chosen because that gives static applications ample range (down to 101) for working around it if they really need to. I suspect most applications will "just work" as expected- the default/non-prioritized flavor of __constructor__ functions run last, and the canary is generally not expected to change as of this point at the very least.
This took approximately three weeks of spare time debugging to pin down.
PR: 241905
show more ...
|
| #
989b861f
|
| 24-Apr-2018 |
Konstantin Belousov <kib@FreeBSD.org> |
Carefully update stack guard bytes inside __guard_setup().
This is necessary to make sure that functions that can have stack protection are not used to update the stack guard. If not, the stack guar
Carefully update stack guard bytes inside __guard_setup().
This is necessary to make sure that functions that can have stack protection are not used to update the stack guard. If not, the stack guard check would fail when it shouldn't.
guard_setup() calls elf_aux_info(), which, in turn, calls memcpy() to update stack_chk_guard. If either elf_aux_info() or memcpy() have stack protection enabled, __stack_chk_guard will be modified before returning from them, causing the stack protection check to fail.
This change uses a temporary buffer to delay changing __stack_chk_guard until elf_aux_info() returns.
Submitted by: Luis Pires MFC after: 1 week Differential revision: https://reviews.freebsd.org/D15173
show more ...
|
| #
2cf5e936
|
| 18-Apr-2016 |
Andriy Voskoboinyk <avos@FreeBSD.org> |
libc: do not include <sys/types.h> where <sys/param.h> was already included
According to style(9): > normally, include <sys/types.h> OR <sys/param.h>, but not both. (<sys/param.h> already includes <
libc: do not include <sys/types.h> where <sys/param.h> was already included
According to style(9): > normally, include <sys/types.h> OR <sys/param.h>, but not both. (<sys/param.h> already includes <sys/types.h> when LOCORE is not defined).
show more ...
|
| #
fe0d386c
|
| 14-Aug-2015 |
Pedro F. Giffuni <pfg@FreeBSD.org> |
Move the stack protector to a new "secure" directory
As part of the code refactoring to support FORTIFY_SOURCE we want a new subdirectory "secure" to keep the files related to security. Move the sta
Move the stack protector to a new "secure" directory
As part of the code refactoring to support FORTIFY_SOURCE we want a new subdirectory "secure" to keep the files related to security. Move the stack protector functions to this new directory.
No functional change.
Differential Review: https://reviews.freebsd.org/D3333
show more ...
|
| #
b7c4ed65
|
| 14-Jun-2015 |
Jeremie Le Hen <jlh@FreeBSD.org> |
NetBSD commit log: Use a constant array for the MIB. Newer LLVM decided that mib[] warranted stack protections, with the obvious crash after the setup was done. As a positive side effect, code
NetBSD commit log: Use a constant array for the MIB. Newer LLVM decided that mib[] warranted stack protections, with the obvious crash after the setup was done. As a positive side effect, code size shrinks a bit.
I'm not sure why this hasn't bitten us yes, but it is certainly possible and there are no real drawbacks to this change anyway.
Submitted by: pfg Obtained from: NetBSD MFC after: 1 week
show more ...
|
| #
294246bb
|
| 25-Nov-2014 |
Ed Maste <emaste@FreeBSD.org> |
Revert r274772: it is not valid on MIPS
Reported by: sbruno
|
| #
688fd61a
|
| 21-Nov-2014 |
Ed Maste <emaste@FreeBSD.org> |
Use canonical __PIC__ flag
It is automatically set when -fPIC is passed to the compiler.
Reviewed by: dim, kib Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.or
Use canonical __PIC__ flag
It is automatically set when -fPIC is passed to the compiler.
Reviewed by: dim, kib Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D1179
show more ...
|
| #
565424b2
|
| 13-Oct-2010 |
Rui Paulo <rpaulo@FreeBSD.org> |
Clang related fixes: * When calling syslog(), pass a format string. * Define YY_NO_INPUT on nslexer.l
Submitted by: Norberto Lopes <nlopes.ml at gmail.com>
|
| #
3e3fbd3f
|
| 24-Aug-2010 |
Konstantin Belousov <kib@FreeBSD.org> |
Remove extra FreeBSD tag.
MFC after: 3 days
|
| #
da2a0df5
|
| 24-Aug-2010 |
Konstantin Belousov <kib@FreeBSD.org> |
Move the __stack_chk_fail_local@FBSD_1.0 compat symbol definition into the separate .o for libc_pic.a. This prevents rtld from making the symbol global.
Putting the stack_protector_compat.c into the
Move the __stack_chk_fail_local@FBSD_1.0 compat symbol definition into the separate .o for libc_pic.a. This prevents rtld from making the symbol global.
Putting the stack_protector_compat.c into the public domain acknowledged by kan.
Reviewed by: kan MFC after: 2 weeks
show more ...
|
| #
2793b018
|
| 17-Aug-2010 |
Konstantin Belousov <kib@FreeBSD.org> |
Use aux vector to get values for SSP canary, pagesize, pagesizes array, number of host CPUs and osreldate.
This eliminates the last sysctl(2) calls from the dynamically linked image startup.
No obj
Use aux vector to get values for SSP canary, pagesize, pagesizes array, number of host CPUs and osreldate.
This eliminates the last sysctl(2) calls from the dynamically linked image startup.
No objections from: kan Tested by: marius (sparc64) MFC after: 1 month
show more ...
|
| #
e330a6a5
|
| 17-Sep-2009 |
Alexander Kabaev <kan@FreeBSD.org> |
Make libc.a provide __stack_chk_fail_local weak alias. This is needed to satisfy static libraries that are compiled with -fpic and linked into static binary afterwards. Several libraries in gcc are e
Make libc.a provide __stack_chk_fail_local weak alias. This is needed to satisfy static libraries that are compiled with -fpic and linked into static binary afterwards. Several libraries in gcc are examples of such static libs.
show more ...
|
| #
2286fe76
|
| 14-Jul-2009 |
Alexander Kabaev <kan@FreeBSD.org> |
Second attempt at eliminating .text relocations in shared libraries compiled with stack protector.
Use libssp_nonshared library to pull __stack_chk_fail_local symbol into each library that needs it
Second attempt at eliminating .text relocations in shared libraries compiled with stack protector.
Use libssp_nonshared library to pull __stack_chk_fail_local symbol into each library that needs it instead of pulling it from libc. GCC generates local calls to this function which result in absolute relocations put into position-independent code segment, making dynamic loader do extra work every time given shared library is being relocated and making affected text pages non-shareable.
Reviewed by: kib Approved by: re (kib)
show more ...
|
| #
d48890cf
|
| 29-Jun-2009 |
Alexander Kabaev <kan@FreeBSD.org> |
Back out previous revision until better tested fix is ready.
Approved by: re (impliciti, by approving previos check-in)
|
| #
a162c9ae
|
| 28-Jun-2009 |
Alexander Kabaev <kan@FreeBSD.org> |
Eliminate .text relocations in shared libraries compiled with stack protector.
Use libssp_nonshared library to pull __stack_chk_fail_local symbol into each library that needs it instead of pulling i
Eliminate .text relocations in shared libraries compiled with stack protector.
Use libssp_nonshared library to pull __stack_chk_fail_local symbol into each library that needs it instead of pulling it from libc. GCC generates local calls to this function which result in absolute relocations put into position-independent code segment, making dynamic loader do extra work everys time given shared library is being relocated and making affected text pages non-shareable.
Reviewed by: kib Approved by: re (kensmith)
show more ...
|
| #
0d1b4624
|
| 05-Jun-2007 |
Dag-Erling Smørgrav <des@FreeBSD.org> |
Expose __stack_chk_fail_local() so -fstack-protector-all works.
|
| #
91c1e2bf
|
| 19-May-2007 |
Alexander Kabaev <kan@FreeBSD.org> |
Follow NetBSD, OpenBSD and DragonfyBSD project and add BSD-licensed SSP functions into FreeBSD libc. Use the same file name and location for consistency with other projects.
|