#
a2f733ab |
| 24-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
lib: Automated cleanup of cdefs and other formatting
Apply the following automated changes to try to eliminate no-longer-needed sys/cdefs.h includes as well as now-empty blank lines in a row.
Remov
lib: Automated cleanup of cdefs and other formatting
Apply the following automated changes to try to eliminate no-longer-needed sys/cdefs.h includes as well as now-empty blank lines in a row.
Remove /^#if.*\n#endif.*\n#include\s+<sys/cdefs.h>.*\n/ Remove /\n+#include\s+<sys/cdefs.h>.*\n+#if.*\n#endif.*\n+/ Remove /\n+#if.*\n#endif.*\n+/ Remove /^#if.*\n#endif.*\n/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/types.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/param.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/capsicum.h>/
Sponsored by: Netflix
show more ...
|
Revision tags: release/14.0.0 |
|
#
1d386b48 |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
#
3a46fe22 |
| 11-Jul-2023 |
Jessica Clarke <jrtc27@FreeBSD.org> |
getlocalbase: Make default path actually configurable
We include paths.h in getlocalbase.c, which defines _PATH_LOCALBASE. This will override a definition on the command line, meaning it is impossib
getlocalbase: Make default path actually configurable
We include paths.h in getlocalbase.c, which defines _PATH_LOCALBASE. This will override a definition on the command line, meaning it is impossible to override like how the manpage says you can, and it means the code to provide a fallback default is dead as the macro is always defined.
Instead, introduce a new LOCALBASE_PATH macro like LOCALBASE_CTL_LEN that can be set on the command line and will default to the system's existing _PATH_LOCALBASE to avoid duplicating the default here.
Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D40975
show more ...
|
#
f8cabe55 |
| 11-Jul-2023 |
Jessica Clarke <jrtc27@FreeBSD.org> |
libutil: Delete trailing whitespace
|
Revision tags: release/13.2.0, release/12.4.0, release/13.1.0, release/12.3.0, release/13.0.0 |
|
#
6c2596f0 |
| 12-Dec-2020 |
Stefan Eßer <se@FreeBSD.org> |
Change getlocalbase() to not allocate any heap memory
After the commit of the current version, Scott Long pointed out, that an attacker might be able to cause a use-after-free access if this functio
Change getlocalbase() to not allocate any heap memory
After the commit of the current version, Scott Long pointed out, that an attacker might be able to cause a use-after-free access if this function returned the value of the sysctl variable "user.localbase" by freeing the allocated memory without the cached address being cleared in the library function.
To resolve this issue, I have proposed the originally suggested version with a statically allocated buffer in a review (D27370). There was no feedback on this review and after waiting for more than 2 weeks, the potential security issue is fixed by this commit. (There was no security risk in practice, since none of the programs converted to use this function attempted to free the buffer. The address could only have pointed into the heap if user.localbase was set to a non-default value, into r/o data or the environment, else.)
This version uses a static buffer of size LOCALBASE_CTL_LEN, which defaults to MAXPATHLEN. This does not increase the memory footprint of the library at this time, since its data segment grows from less than 7 KB to less than 8 KB, i.e. it will get two 4 KB pages on typical architectures, anyway.
Compiling with LOCALBASE_CTL_LEN defined as 0 will remove the code that accesses the sysctl variable, values between 1 and MAXPATHLEN-1 will limit the maximum size of the prefix. When built with such a value and if too large a value has been configured in user.localbase, the value defined as ILLEGAL_PREFIX will be returned to cause any file operations on that result to fail. (Default value is "/dev/null/", the review contained "/\177", but I assume that "/dev/null" exists and can not be accessed as a directory. Any other string that can be assumed not be a valid path prefix could be used.)
I do suggest to use LOCALBASE_CTL_LEN to size the in-kernel buffer for the user.localbase variable, too. Doing this would guarantee that the result always fit into the buffer in this library function (unless run on a kernel built with a different buffer size.)
The function always returns a valid string, and only in case it is built with a small static buffer and run on a system with too large a value in user.localbase, the ILLEGAL_PREFIX will be returned, effectively causing the created path to be non-existent.
Differential Revision: https://reviews.freebsd.org/D27370
show more ...
|
#
30d21d27 |
| 18-Nov-2020 |
Stefan Eßer <se@FreeBSD.org> |
Add function getlocalbase() to libutil.
This function returns the path to the local software base directory, by default "/usr/local" (or the value of _PATH_LOCALBASE in include/paths.h when building
Add function getlocalbase() to libutil.
This function returns the path to the local software base directory, by default "/usr/local" (or the value of _PATH_LOCALBASE in include/paths.h when building the world).
The value returned can be overridden by 2 methods:
- the LOCALBASE environment variable (ignored by SUID programs) - else a non-default user.localbase sysctl value
Reviewed by: hps (earlier version) Relnotes: yes Differential Revision: https://reviews.freebsd.org/D27236
show more ...
|
#
85a5fe29 |
| 15-Nov-2020 |
Scott Long <scottl@FreeBSD.org> |
Because getlocalbase() returns -1 on error, it needs to use a signed type internally. Do that, and make sure that conversations between signed and unsigned don't overflow
|
#
bcf9ae27 |
| 14-Nov-2020 |
Scott Long <scottl@FreeBSD.org> |
Fix a problem with r367686 related to the use of ssize_t. Not sure how this escaped prior testing, but it should be better now.
Reported by: lots
|
#
98b76d22 |
| 14-Nov-2020 |
Scott Long <scottl@FreeBSD.org> |
Add the library function getlocalbase and its manual page. This helps to unify the retrieval of the various ways that the local software base directory, typically "/usr/local", is expressed in the s
Add the library function getlocalbase and its manual page. This helps to unify the retrieval of the various ways that the local software base directory, typically "/usr/local", is expressed in the system.
Reviewed by: se Differential Revision: https://reviews.freebsd.org/D27022
show more ...
|