瀏覽代碼

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>
Nigel Croxon 1 年之前
父節點
當前提交
fe76d597a9
共有 1 個文件被更改,包括 4 次插入4 次删除
  1. 4 4
      lib/entry.c

+ 4 - 4
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();
 	}
 }