[prev in list] [next in list] [prev in thread] [next in thread] 

List:       klik-devel
Subject:    [klik-devel] [klikclient commit] r1684 -
From:       codesite-noreply () google ! com
Date:       2008-08-29 15:41:42
Message-ID: 0016e64355de1ab7be04559b1760 () google ! com
[Download RAW message or body]

Author: lionel.tricon
Date: Fri Aug 29 08:41:36 2008
New Revision: 1684

Modified:
    trunk/virtualization/unionfuse/trunk/fusioniso/src/fusioniso-fs.c

Log:
Improved the way we detect ELF binariesby using elf.h


Modified: trunk/virtualization/unionfuse/trunk/fusioniso/src/fusioniso-fs.c
==============================================================================
--- trunk/virtualization/unionfuse/trunk/fusioniso/src/fusioniso-fs.c	 
(original)
+++ trunk/virtualization/unionfuse/trunk/fusioniso/src/fusioniso-fs.c	Fri  
Aug 29 08:41:36 2008
@@ -94,6 +94,7 @@
  #include <sys/statfs.h>
  #include <iconv.h>
  #include <errno.h>
+#include <elf.h>

  #include "fusioniso-fs.h"
  #include "fusioniso-isofs.h"
@@ -969,7 +970,7 @@
              lseek(v_file, offset, SEEK_SET);
              v_count = read(v_file, out_buf, size);
              close(v_file);
-            if (extern_glibc && offset==0 && v_count>18 && out_buf[0]==127  
&& memcmp(&(out_buf[1]), "ELF",3)==0)
+            if (extern_glibc && offset==0 && v_count>18 && memcmp(out_buf,  
ELFMAG, SELFMAG)==0 && out_buf[16]==ET_EXEC)
              {
                  fs_rewrite_loader(out_buf, v_count);
              }
@@ -984,7 +985,7 @@
              lseek(v_file, offset, SEEK_SET);
              v_count = read(v_file, out_buf, size);
              close(v_file);
-            if (extern_glibc && offset==0 && v_count>18 && out_buf[0]==127  
&& memcmp(&(out_buf[1]), "ELF",3)==0)
+            if (extern_glibc && offset==0 && v_count>18 && out_buf[0]==127  
&& memcmp(out_buf, ELFMAG, SELFMAG)==0 && out_buf[16]==ET_EXEC)
              {
                  fs_rewrite_loader(out_buf, v_count);
              }
@@ -1010,7 +1011,7 @@
      if (inode->ZF)                                                 // this  
file is compressed, handle it specially
      {
          int v_count = isofs_real_read_zf(inode, out_buf, size, offset);
-        if (extern_glibc && offset==0 && v_count>18 && out_buf[0]==127 &&  
memcmp(&(out_buf[1]), "ELF",3)==0)
+        if (extern_glibc && offset==0 && v_count>18 && out_buf[0]==127 &&  
memcmp(out_buf, ELFMAG, SELFMAG)==0 && out_buf[16]==ET_EXEC)
          {
              fs_rewrite_loader(out_buf, v_count);
          }
@@ -1078,7 +1079,7 @@
      }

      free(buf);
-    if (extern_glibc && total_size>18 && offset==0 && out_buf[0]==127 &&  
memcmp(&(out_buf[1]), "ELF",3)==0)
+    if (extern_glibc && total_size>18 && offset==0 && out_buf[0]==127 &&  
memcmp(out_buf, ELFMAG, SELFMAG)==0 && out_buf[16]==ET_EXEC)
      {
          fs_rewrite_loader(out_buf, total_size);
      }
_______________________________________________
klik-devel mailing list
klik-devel@kde.org
https://mail.kde.org/mailman/listinfo/klik-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic