Browse Source

* More correctly scan Elf Auxiliary Vector. Fixes possible crash when the first vector entry is AT_NULL. Issue #26973.

git-svn-id: trunk@29065 -
yury 10 years ago
parent
commit
c40960466a
1 changed files with 9 additions and 8 deletions
  1. 9 8
      rtl/linux/i386/syscall.inc

+ 9 - 8
rtl/linux/i386/syscall.inc

@@ -62,15 +62,16 @@ begin
 
 
   auxv := PElf32AuxiliaryVector(ep);
   auxv := PElf32AuxiliaryVector(ep);
 
 
-  repeat
-    if auxv^.a_type = AT_SYSINFO then begin
-      psysinfo := auxv^.a_un.a_val;
-      if psysinfo <> 0 then
-        sysenter_supported := 1; // descision factor in asm syscall routines
-      Break;
+  while auxv^.a_type <> AT_NULL do
+    begin
+      if auxv^.a_type = AT_SYSINFO then begin
+        psysinfo := auxv^.a_un.a_val;
+        if psysinfo <> 0 then
+          sysenter_supported := 1; // descision factor in asm syscall routines
+        Break;
+      end;
+      Inc(auxv);
     end;
     end;
-    Inc(auxv);
-  until auxv^.a_type = AT_NULL;
 end;
 end;
 
 
 {***********************SYSENTER CODE END******************************}
 {***********************SYSENTER CODE END******************************}