|
ec7f5ee9
|
2024-02-12T01:04:37
|
|
Add vasprintf() and asprintf() functions missing on AIX
These functions are used by code in the library, even though these
functions started as GNU extensions, they are present in all BSDs,
so we expose them as part of our interface on AIX.
|
|
5392f0c1
|
2024-02-12T02:55:08
|
|
build: Add support for Solaris
|
|
be4aced4
|
2024-02-11T23:55:40
|
|
build: Make almost all exposed interfaces use the new ABI selection
Explicitly select what to include as part of the target ABI, instead of
letting autoconfiguration potentially break ABI if the system grows
functionality provided by the library.
Make almost all the library selectable per target. Do not install manual
pages for interfaces not included in the library. Control inclusion of
symbols in map file via pre-processor macros, and move the comments
describing the ABI selection to configure.ac.
For now the header files are included as is and filtered through
pre-processor conditionals. Eventually they might get switched to be
autogenerated at build time.
|
|
99739877
|
2024-02-14T04:59:44
|
|
build: Rename ABI selection variables from need_ to abi_
This should make the purpose of these variables more clear.
|
|
a81d0b71
|
2024-02-11T23:55:40
|
|
build: Sort variables and their contents in automake files
This should make it easier to add new entries, and find them afterwards.
|
|
c8e5338a
|
2024-02-21T02:05:57
|
|
build: Rename LIBBSD_ABI to SOVERSION
This matches the semantics of the variable, and makes it independent of
the project, just as the package variables.
|
|
f8cb9d8b
|
2024-02-20T03:57:37
|
|
build: Remove space before shell redirection
This makes it more clear what the redirection applies to.
|
|
154624ab
|
2024-02-18T20:40:24
|
|
build: Add support for silent rules for the libbsd.map generation
The new rule was introduced w/o silent rule support.
Fixes: commit 19e06407eb365a2bedc9bdd29a83c1e1803e3f92
|
|
9fab225f
|
2024-02-17T05:25:01
|
|
Split errc family of functions from err ones
On most systems the err family of functions is already present, but are
missing the errc family of functions, which are also present on some
other systems. Splitting them into separate files will make it easer to
conditionally include one or the other.
|
|
461f10ac
|
2024-02-17T03:07:58
|
|
Sync strtoi()/strtou() implementations from NetBSD
These contain the fixes to the error handling logic.
In NetBSD the manual page for strtou.3 is generated from the strtoi.3
manual page applying some substitutions, the problem is that the
cross-references are then lost. We will still keep them separate.
Reported-by: Alejandro Colomar <alx@kernel.org>
|
|
f0501609
|
2024-02-14T03:39:16
|
|
build: Swap symbol and alias arguments order in macros creating aliases
The current order is rather confusing, pass the real symbol first
and the alias we want to create next.
|
|
19e06407
|
2024-02-11T19:35:05
|
|
build: Generate the map file from the configured ABI
Some linkers require the map file definitions to contain only symbols
that are present on the linked object, either in the map file or in the
sym file we generate from the map file.
This is preparatory work to be able to conditionally include symbols
in the man and sym files depending on the ABI definitions.
|
|
304a1f83
|
2024-01-08T23:37:43
|
|
doc: Use macOS to refer to the operating system
This is the correct spelling, instead of capitalizing it.
|
|
ecb44e16
|
2023-11-14T19:15:11
|
|
Do not add a pointer to the NULL constant
Warned-by: cppcheck (nullPointerArithmetic)
|
|
459b7f7d
|
2023-11-14T19:09:25
|
|
Do not confuse code analyzers with out-of-bounds array access look alike
The code is only getting the address, but we might be performing an
addressing that is out-of-bounds. Avoid it and use the address form
instead.
Warned-by: cppcheck (objectIndex)
|
|
6777eb62
|
2023-07-27T13:57:51
|
|
pwcache: Do not declare uidtb and gidtb when not used
When the system provides implementations for user_from_uid() or
group_from_gid() we are not using these variables, so better not declare
them.
Fixes: commit 21d12b02112097f0c195dceb1892c95b7b957b36
|
|
d4e0cdc9
|
2023-07-27T13:39:00
|
|
fgetln: Include <stdio.h> after <sys/*>
The <sys/*> headers tend to define things that might be used by other
headers, so while they should be self-contained, it is better to simply
include them first.
|
|
cf61ebb8
|
2023-04-22T20:47:20
|
|
build: Do not build the progname module if it is not needed
This was made conditional, but the code part was accidentally left
untouched due to having ported it locally to use __progname, which
caused build failures on the stock repo.
Fixes: commit 046621d7967e7a0f08ae988bcf7e4cd1b6cf204c
|
|
73b25a8f
|
2023-04-23T02:04:47
|
|
build: Sort entries alphabetically
|
|
5434ba16
|
2023-04-23T02:05:04
|
|
build: Conditionalize wcslcpy() and wcslcat() functions on macOS
These functions are provided by the system libc.
|
|
dc1bd1a2
|
2023-04-23T02:00:10
|
|
build: Conditionalize only id-from-name functions not the entire pwcache
On macOS the name-from-id functions are present, but not the
id-from-name ones, so we want to provide those instead of suppressing
the entire file.
|
|
8f998d1d
|
2023-04-22T20:23:08
|
|
progname: Include <procinfo.h> if available
We need this header on AIX. Missed transplanting the code from the AIX
porting system.
Fixes: commit 9fa06763a1afe0946a3a20e5bbdba72885cbade5
|
|
6385ccc9
|
2023-04-18T03:58:24
|
|
build: Conditionalize bsd_getopt() on macOS
The system library provides a getopt() with BSD semantics.
|
|
c1206817
|
2023-04-18T00:47:12
|
|
Move the version script comments before the symbols
When generating the .sym export file from the .map file, we are not
stripping these comments that are part of the same line as the symbol,
which causes ld(1) implementations to error out. Moving them before
the symbols avoids the need to strip them, as we are only keeping
actual symbol lines.
|
|
9fa06763
|
2023-04-18T00:44:49
|
|
Port getprogname() to AIX
Get the program name from the COMM field from the proc filesystem.
We could use instead the information from the psinfo binary file under
/proc, but that seems to have a shorter string limit.
|
|
92337b15
|
2023-04-17T23:59:03
|
|
Make getprogname() porting mandatory
Although the function is documented as possibly returning NULL if it
cannot find a known source of information, we should still at least
attempt to port it to any supported system, and otherwise explicitly
mark it as not implementable for such systems if that was to be the
case.
|
|
06e8a1b2
|
2023-04-01T12:45:04
|
|
Define _NSIG if it is not defined by the system
At least on macOS this macro is not defined.
|
|
44824aca
|
2023-04-01T12:41:42
|
|
Declare environ if the system does not do so
The environ variable is supposed to be defined by the code using it, but
on glibc-based systems it will get defined if we request it, by including
<unistd.h> and defining _GNU_SOURCE.
|
|
1fb6c3f4
|
2023-04-10T23:10:40
|
|
Use lockf() when flock() is not available
On Solaris flock() is not available, and we should use instead lockf()
or fcntl().
|
|
21d12b02
|
2023-04-04T23:59:05
|
|
build: On macOS do not build functions provided by the system
We have never built before on macOS, so we can exclude all the functions
that are currently provided in the system.
Closes: #1
Closes: !3
|
|
bc65806c
|
2023-04-06T23:05:27
|
|
build: Select whether to include funopen() in the build system
This makes sure we include it when expected, alongside the man pages,
and the test cases, and do not accidentally break the ABI if the system
starts providing such interface.
|
|
e0976d7e
|
2023-04-02T22:33:25
|
|
build: Add a new libbsd_strong_alias() macro and switch users to it
We had several cases of code needing a strong alias, so we switch those
to use the new macro. This covers systems that support the alias
attribute and others such as macOS where we need to use assembler
directives to add the alias as the attribute is not supported.
|
|
49c7dd1c
|
2023-04-02T22:32:11
|
|
build: Only emit link warnings for ELF objects
|
|
8622767a
|
2023-04-11T00:24:13
|
|
build: Use an export symbols file if there is no version script support
We generate the symbol list from the version script to avoid repeating
ourselves and potentially getting the lists out-of-sync.
|
|
8f610364
|
2023-04-11T03:03:54
|
|
build: Add -no-undefined libtool flag
We have no need for undefined symbols, so we can let the shared
library build even on systems without support for undefined symbols.
|
|
ae7942ba
|
2023-04-11T03:02:30
|
|
build: Do not override the default DEPENDENCIES for libbsd
Extend it instead via EXTRA_*_DEPENDENCIES, to make sure that we
preserve the builtin library dependencies generated from LIBADD.
|
|
a5faf170
|
2023-04-01T12:46:49
|
|
Only use <stdio_ext.h> if present
|
|
ec88b7bb
|
2022-12-15T09:02:22
|
|
funopen: Replace off64_t with off_t in funopen_seek()
AC_SYS_LARGEFILE in configure.ac is setting needed defines to make
64bit off_t on relevant platforms.
Fixes build on musl:
| src/funopen.c:68:28: error: unknown type name 'off64_t'; did you mean 'off_t'?
| funopen_seek(void *cookie, off64_t *offset, int whence)
| ^~~~~~~
| off_t
Closes: !24
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
e5089628
|
2022-11-23T23:31:54
|
|
build: Do not require funopen() to be ported
This function cannot be easily and (more importantly) correctly ported
without cooperation from the libc stdio layer. We already document that
users should be prepared to have the function not available on some
platforms and that they should ideally switch their code to other
more portable and better interfaces.
Instead of making the build fail, and requiring porters to add
exceptions for something that most probably cannot be ported correctly
anyway, simply print a warning and let it build. This will not be a
regression because on those systems libbsd would have never been built
before.
Prompted-by: Jens Finkhaeuser <jens@finkhaeuser.de>
|
|
00b538ff
|
2022-11-23T23:28:34
|
|
build: Terminate lists in variables with «# EOL»
This means we can add a trailing «\» to every element, so that they
can be removed without requiring modification of other lines, and can
be easily sorted.
Replace the old usage of $(nil) which could possibly end up with junk
added if such variable is ever defined, in the environment.
|
|
28298ac0
|
2022-10-05T01:35:08
|
|
doc: Switch references from pkg-config to pkgconf
The former used to be the reference implementation, but it has been
stagnant to the point of not showing much signs of life. Switch to
the currently active and more complete implementation for references.
|
|
be327c6e
|
2022-08-24T01:58:58
|
|
fgetwln: Add comment about lack of getwline(3) for recommendation
Ideally we'd recommend getwline(3), but unfortunately even though it
was part of the ISO/IEC TR 24731-2:2010 draft, it did not make it into
C11 and is not widely implemented.
|
|
a14612d9
|
2022-08-23T23:49:34
|
|
setmode: Dot not use saveset after free
While we are only doing a pointer difference and not dereferencing it,
it's easier and more correct to do the pointer difference before passing
it to reallocarray().
Warned-by: gcc
|
|
1f6a48b2
|
2022-08-03T02:03:05
|
|
Sync arc4random(3) implementation from OpenBSD
Closes: #12
|
|
873639eb
|
2022-06-07T19:27:13
|
|
Fix ELF support for big endian SH
Fix the following build failure with big endian SH (e.g. sh4aeb):
,---
In file included from nlist.c:44:
nlist.c: In function '__elf_is_okay__':
local-elf.h:223:25: error: 'ELFDATA2LMSB' undeclared (first use in this function); did you mean 'ELFDATA2LSB'?
223 | #define ELF_TARG_DATA ELFDATA2LMSB
| ^~~~~~~~~~~~
`---
Fixes: http://autobuild.buildroot.org/results/2980fb79c208454195d77383f1ece9afbd7f981b
Closes: !19
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
5f213075
|
2022-03-31T20:46:56
|
|
getentropy: Fix function cast for getauxval()
Fix also the Hurd implementation, missed in the original fix.
Extends: commit 72a82ee262795c9162e712885381a111fcf988bc
Warned-by: gcc
|
|
15200ec7
|
2021-09-11T12:54:28
|
|
Add LoongArch support to nlist()
Closes: !13
Signed-off-by: WANG Xuerui <git@xen0n.name>
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
e5ed5fdd
|
2021-12-31T08:25:08
|
|
Remove arc4random() OpenBSD support
The arc4random() support for OpenBSD does not build. The intention was
to include any portability code so that the library could be easily
ported to such systems, but it makes little sense to build it on OpenBSD
where most of the functionality will be already present, or the software
would have been ported anyway.
[guillem@hadrons.org: Reword commit message to add rationale. ]
Closes: !15
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
ba3c46b3
|
2022-01-25T20:32:30
|
|
fpurge: Make it work with non fd based FILEs
Streams opened with for example open_memstream(3) will have no associated
file descriptor, and fileno(3) will fail.
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
f11ab672
|
2022-01-23T15:36:55
|
|
build: Respect $(OBJDUMP)
We already search for it in `./configure` so let's respect
the result of that search.
This helps with cross-compilation and any other cases
where one might want to choose a different toolchain.
Closes: !16
Bug: https://bugs.gentoo.org/831863
Signed-off-by: Sam James <sam@gentoo.org>
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
48107fc8
|
2021-11-28T23:19:16
|
|
build: Clarify link-time warnings
Mention the involved function instead of stating an implicit "this
function". Mention libbsd when proposing using an alternative libmd
to make the context clear.
|
|
e7cf8c57
|
2021-11-28T22:44:08
|
|
Switch md5 compatibility logic back to direct linking
When using the recent dlsym() based wrapper, we are not requiring any
symbol from libmd, as we resolve those dynamically at run-time. We were
ending up linking against libmd because in another part of the code we
require (depending on the architecture) the SHA512 functions for the
getentropy() local implementation. But that function might be provided
by the system libc on some systems, which means we end up not linking
against libmd at all.
To solve this we go back to the previous simpler solution of linking
directly, which had the main drawback of then making programs fail to
link when not specifying -lmd (on platforms that need it). And then
switch the .so link point from a symlink to a linker script, so that we
can inject the -lmd library as-needed. This is similar to what glibc is
doing.
Fixes: commit 31f034e3862debda8615a449b1c11c4d6920dcc7
|
|
25d35625
|
2021-11-28T22:40:58
|
|
build: Split libmd dependency due to MD5 functions from SHA requirements
To be able to rework the md5 deprecation logic, we need to detangle when
we depend on libmd due to requiring MD5 functions, which might be
otherwise provided by libc, or when we require SHA functions for the
internal getentropy() implementation.
|
|
500b3080
|
2021-11-28T22:34:59
|
|
build: Add new libbsd_symver_weak() macro
We will use it for the reworked md5 deprecation logic.
|
|
8ad7570c
|
2021-11-27T21:07:00
|
|
getentropy: Add missing prototype for BSD variant
Warned-by: gcc
|
|
43a82703
|
2021-11-27T20:26:05
|
|
nlist: Remove condition which is always true
The nlist() function is limited to handle ELF binaries of the same class
as size as the size_t of the architecture built.
In addition the SIZE_T_MAX macro is BSD specific, and was falling back
to the wrong constant on most 64-bit non-BSD systems.
Warned-by: gcc
|
|
6a71b24b
|
2021-11-27T22:52:28
|
|
build: Append __ after __attribute and __typeof keywords
Be consistent with other usages in the code base.
|
|
54f87456
|
2021-11-26T20:01:18
|
|
build: Enable .init_array support when building with LTO
Because these symbols are not otherwise referenced, GCC would like
to remove them.
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
c7a5d780
|
2021-09-30T03:39:57
|
|
build: Allow building with -flto on gcc-10 and newer
Global asm statements (like .symver directives) do not work reliably
in gcc with link time optimization. Use the symver attribute introduced
with gcc-10 to set symbol versions instead, if available.
[guillem@hadrons.org:
- Simplify by using __has_attribute fallback from <sys/cdefs.h>.
- Coding style changes. ]
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
731b0a77
|
2021-08-17T02:59:59
|
|
build: Detect sed at configure time
Check whether sed is available and use the implementation matching the
requirements via the SED variable.
|
|
50b50a43
|
2021-03-02T05:18:04
|
|
vis: Add prototypes for strnvis() and strnunvis() variants
Warned-by: gcc
|
|
04a8fb24
|
2021-03-02T00:48:02
|
|
Add missing prototypes to functions
Warned-by: gcc
|
|
8f59221c
|
2021-02-19T06:51:18
|
|
nlist: Remove repeated shadowing variable declaration
Warned-by: gcc
|
|
72a82ee2
|
2021-02-20T22:22:54
|
|
getentropy: Fix function cast for getauxval()
Warned-by: gcc
|
|
25278891
|
2021-02-19T06:49:24
|
|
Mark local functions as static
Warned-by: gcc
|
|
e35d9141
|
2021-02-11T04:41:46
|
|
Add link-time warnings to MD5 wrapper functions
Let's get the word out that these functions are deprecated and should be
switched away from.
|
|
4feda870
|
2021-02-11T04:40:48
|
|
Require a semicolon for libbsd_link_warning() macro
Remove the semicolon in the macro definition to force adding one on the
call sites, to make the code look like an actual function.
|
|
c0d86a64
|
2021-02-09T08:35:36
|
|
build: Add a Libs.private field to overlay pkg-config file
We need to list all internal libraries there so that we can statically
link.
Fixes: commit 2374f409defb380d0c5c07f28b9c166ef8bdc742
|
|
31f034e3
|
2021-02-09T05:57:37
|
|
Switch libmd wrapper to use dlsym()
Switch from the previous versioned symbol implementation which required
users to also link against the message digest provider explicitly, or
they would fail to find the symbols, to an implementation that loads
the symbols from the linked library providing the functions using
dlsym(), thus preserving backwards compatibility.
|
|
2374f409
|
2021-02-09T05:56:49
|
|
build: Add a Libs.private field to pkg-config file
We need to list all internal libraries there so that we can statically
link.
|
|
a4e0db2b
|
2021-02-09T06:04:38
|
|
build: Use a single variable to track libraries to link against
Using various variables means we have to keep these in sync in various
places. Just use a single variable that we can use anywhere where this
is needed.
|
|
e832b768
|
2021-02-08T03:45:06
|
|
closefrom: Use close_range() on Linux when available
Closes: !11
Based-on-patch-by: cptpcrd <cptpcrd.git@gmail.com>
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
c4fca5bb
|
2021-02-07T14:22:21
|
|
closefrom: Handle lowfd < 0 properly
More important if close_range() is going to be used, since casting
negative values to 'unsigned int' might hide the errors.
[guillem@hadrons.org: Minor coding style fix. ]
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
a1f79978
|
2021-02-08T02:52:50
|
|
closefrom: Import some changes from sudo
Take most of the changes done in sudo, but preserve the existing local
changes and refactoring.
In addition, refactor pstat implementation into closefrom_pstat(), so
that the code is easier to read, and requires no conditional
declarations.
|
|
d54ceb37
|
2021-02-07T00:09:45
|
|
Update copyright claims
|
|
847e682f
|
2021-02-07T00:09:30
|
|
Use libmd hashing function implementations instead of embedding our own
This splits the implementation responsibilities, and reduces embedded
code copies, which was one of the driving points with this project to
start with, so it's nice to give a good example.
|
|
68f980c9
|
2018-07-05T14:47:47
|
|
Provide a default progname on Windows
[guillem@hadrons.org:
- Remove .exe extension from default program name.
- Call reallocarray() once by switching to a «do {} while» loop.
- Minor coding style fixes. ]
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
37a9b56c
|
2021-02-06T23:43:12
|
|
Import pwcache module from OpenBSD
|
|
01f0d1ea
|
2020-12-31T12:46:03
|
|
Add recallocarray() and freezero() from OpenBSD
Add recallocarray(), introduced in OpenBSD 6.1, and freezero(),
introduced in OpenBSD 6.2. The former is imported as-is from OpenBSD,
while the latter is the non-malloc-internal branch of the same code (and
also the OpenSSH portable variant).
Both of these originated in OpenBSD, but have also been implemented by
IllumOS, cf. https://www.illumos.org/issues/8546
Documentation for these functions is in malloc(3) upstream, the relevant
parts of which were previously imported in reallocarray(3bsd). Update
reallocarray(3bsd) with the changes that were introduced since, and add
the relevant bits for recallocarray() and freezero(), plus aliases.
[guillem@hadrons.org: Update copyright in COPYING. ]
Closes: !10
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
9c85d828
|
2019-11-14T07:26:41
|
|
Fix ELF detection on Intel compilers
The Intel compiler does not define __amd64__ on x86_64 platforms;
instead, like other compilers, it defines __x86_64__ .
Closes: !8
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
cfeafeab
|
2020-08-16T21:58:04
|
|
funopen: Fix memory leak in funopen_close() when closefn is NULL
We need to free the cookiewrap even when the closefn method is NULL.
Warned-by: gcc ASAN
|
|
3d6b6ead
|
2019-11-16T00:04:18
|
|
build: Detect support for --version-script in ld
|
|
eb445425
|
2019-08-12T23:52:10
|
|
Do not define SIZE_T_MAX if already defined
|
|
3548c5f6
|
2019-08-26T05:39:17
|
|
Add missing strnvisx() to the symbols script
Fixes: commit 2d7de186e9cb19a756c0630ee85cb3f2d29b3484.
|
|
5745ca03
|
2019-08-06T15:49:41
|
|
err: Add err(), warn(), errx() and warnx() familiy of functions
Some systems such as Windows or musl-libc based ones do not have these
BSD extensions. In addition libbsd itself is making use of the warnx()
functions, so we better provide these interfaces in case they are
missing.
|
|
9628798d
|
2019-08-06T15:37:43
|
|
err: Rewrite warnc() and errc() family functions to be standalone
Do not depend on the system vwarn() and verr() functions to implement
the *c() variants, as the system might actually lack any of the <err.h>
BSD extensions.
|
|
72c68868
|
2019-08-07T00:02:09
|
|
Add e2k support for nlist()
This is a Russian 64-bit LE VLIW architecture named Elbrus
(formerly Elbrus 2000).
[guillem@hadrons.org:
- Place the entry in alphabetical order. ]
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
a4323f2b
|
2019-05-28T16:04:54
|
|
Add AArch64 ILP32 support to nlist()
Closes: !7
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
4997efa5
|
2019-05-17T01:44:56
|
|
Add ARC support to nlist()
Closes: !6
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
96202c6c
|
2019-08-07T00:00:15
|
|
Add a comment to note the ELF entries are sorted alphabetically
This should help people wanting to add new entries.
|
|
9d917aad
|
2019-08-07T22:58:30
|
|
nlist: Fix out-of-bounds read on strtab
When doing a string comparison for a symbol name from the string table,
we should make sure we do a bounded comparison, otherwise a non-NUL
terminated string might make the code read out-of-bounds.
Warned-by: coverity
|
|
18662cad
|
2019-06-15T14:33:32
|
|
nlist: Fix unbounded malloc() calls
There are a couple of malloc() calls with unbounded size arguments,
coming from the parsed file. We need to make sure the size is not
larger than the file being parsed, otherwise we might end up with
out of memory conditions.
Reported-by: Daniel Hodson <daniel@elttam.com.au>
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
ce53f7c2
|
2019-06-15T14:33:32
|
|
nlist: Fix pread() return value check
We should check for partial reads, and not continue in those cases,
as we are not retrying them, otherwise we might end up operating on
uninitialized data.
Reported-by: Daniel Hodson <daniel@elttam.com.au>
Based-on-patch-by: Daniel Hodson <daniel@elttam.com.au>
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
24d1f4dd
|
2019-06-15T14:33:32
|
|
nlist: Check whether sh_link is within bounds
The sh_link members should be >= e_shnum, otherwise we might do out of
bounds read accesses on the shdr array.
Reported-by: Daniel Hodson <daniel@elttam.com.au>
Based-on-patch-by: Daniel Hodson <daniel@elttam.com.au>
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
e9529d9b
|
2019-06-15T14:33:32
|
|
nlist: Check that e_shnum and e_shentsize are within bounds
The e_shnum must not be 0, otherwise we will do a zero sized allocation
and further processing of the executable will lead to out of bounds
read/write accesses. The e_shentsize must be equal to sizeof(Elf_Shdr),
otherwise we will perform out of bounds read accesses on the shdr array.
Reported-by: Daniel Hodson <daniel@elttam.com.au>
Based-on-patch-by: Daniel Hodson <daniel@elttam.com.au>
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
3aaedb12
|
2019-06-15T14:33:32
|
|
nlist: Check whether the nl argument is not NULL
This prevents programming errors.
Reported-by: Daniel Hodson <daniel@elttam.com.au>
Based-on-patch-by: Daniel Hodson <daniel@elttam.com.au>
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
f99b8ea5
|
2018-06-14T11:38:33
|
|
build: Disable CRT warnings on Windows
These warnings are not helpful for libbsd.
[guillem@hadrons.org:
- Rename WINDOWS conditional to OS_WINDOWS.
- Add a nil terminator to the AM_CPPFLAGS. ]
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
2e071c3c
|
2019-08-06T19:14:29
|
|
build: Support platforms without symbol versioning
The .symver directive is ELF-specific. On non-ELF platforms, work around
this with __attribute__((__alias__)) for the default symbol, and ignore
the variant versioned symbols.
Based-on-patch-by: Aaron Dierking <aarond@fb.com>
Signed-off-by: Guillem Jover <guillem@hadrons.org>
|
|
890699a7
|
2019-08-06T18:51:45
|
|
build: Abstract symbol versioning via new libbsd_symver_* macros
This makes it more obvious what they are doing. It will make it easier
to make these directives more portable, as they are really ELF specific.
|
|
b0ebb0d4
|
2019-08-06T23:16:42
|
|
build: Use __register_atfork() only if really available
This is a glibc-specific symbol that has no public declaration. But is
being used by the OpenBSD and this implementation as a hack to avoid
having to link against the pthread library. This interface is at least
included in LSB 5.0 [L], and using pthread_atfork() is otherwise
problematic anyway [P].
[L] <https://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib---register-atfork.html>
[P] <http://austingroupbugs.net/view.php?id=851>
One problem is that we were using it whenever __GLIBC__ is defined,
which is supposed to be defined only on an actual glibc, but uClibc
defines that macro, but it does not provide the symbol on its noMMU
variant.
We add a new configure check that will try to link a program that uses
that symbol to make sure it is present.
Closes: !2
Reported-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|