diff options
author | Nigel Croxon <ncroxon@redhat.com> | 2023-05-16 08:34:07 -0400 |
---|---|---|
committer | Nigel Croxon <ncroxon@redhat.com> | 2023-05-16 08:34:07 -0400 |
commit | fe76d597a9b85f8af55235dd41722abf8fe63ca1 (patch) | |
tree | d45b1ade2e78add818f5fd4c0982f037a72f012d | |
parent | 24c80efc1af996bf8252f4a2f5ffc02d8c44640b (diff) | |
download | gnu-efi-fe76d597a9b85f8af55235dd41722abf8fe63ca1.tar.gz |
Make ELF constructors/destructors work
Since commit [4f8b339facb471192e021fffd5db545a0fbddbc3]
Simple EFI tools like for example t.c from the apps directory crash.
The reason seems to be a wrong null-pointer check in the
ctors()/dtors() functions in lib/entry.c.
sourceforge.net/u/davemueller
Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
-rw-r--r-- | lib/entry.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/entry.c b/lib/entry.c index d852608..6338112 100644 --- a/lib/entry.c +++ b/lib/entry.c @@ -24,13 +24,13 @@ static void ctors(void) { for (funcp *location = (void *)&_init_array; location < (funcp *)&_init_array_end; location++) { funcp func = *location; - if (location != NULL) + if (func != NULL) func(); } for (funcp *location = (void *)&__CTOR_LIST__; location < (funcp *)&__CTOR_END__; location++) { funcp func = *location; - if (location != NULL) + if (func != NULL) func(); } } @@ -39,13 +39,13 @@ static void dtors(void) { for (funcp *location = (void *)&__DTOR_LIST__; location < (funcp *)&__DTOR_END__; location++) { funcp func = *location; - if (location != NULL) + if (func != NULL) func(); } for (funcp *location = (void *)&_fini_array; location < (funcp *)&_fini_array_end; location++) { funcp func = *location; - if (location != NULL) + if (func != NULL) func(); } } |