Changeset 3663 for trunk


Ignore:
Timestamp:
Sep 17, 2010, 1:40:39 AM (15 years ago)
Author:
bird
Message:

libomflib/emxomfar: detect non-OMF objects before adding them to a library.

Location:
trunk/emx/src/libomflib
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/emx/src/libomflib/omflibam.c

    r465 r3663  
    1414  char name[256];
    1515  char obj_fname[256+4];
    16   byte libhdr[1];
     16  byte libhdr[4];
    1717  int ret;
    1818
     
    2626  /* this may be a library, check so we don't create invalid libraries
    2727     (#579?) */
    28   if (   fread(&libhdr[0], sizeof(libhdr), 1, f) == 1
    29       && libhdr[0] == LIBHDR
    30       )
     28  memset (libhdr, 0, sizeof(libhdr));
     29  if (fread (&libhdr[0], 1, sizeof(libhdr), f) >= 1)
    3130    {
    32       struct omflib *   src = omflib_open (fname, error);
    33       if (!src)
    34           return -1;
    35       ret = omflib_copy_lib(p, src, error);
    36       omflib_close(src, error);
    37       return ret;
     31       if (libhdr[0] == LIBHDR)
     32         {
     33           struct omflib *   src = omflib_open (fname, error);
     34           if (!src)
     35             return -1;
     36           ret = omflib_copy_lib (p, src, error);
     37           omflib_close (src, error);
     38           fclose (f);
     39           return ret;
     40         }
     41       if (libhdr[0] != THEADR)
     42         {
     43           fclose (f);
     44           if (memcmp(libhdr, "\177ELF", 4) == 0)
     45             strcpy (error, "ELF object, use AR instead of EMXOMFAR");
     46           else
     47             strcpy (error, "not OMF obj");
     48           return -1;
     49         }
    3850    }
     51
    3952  fseek(f, 0, SEEK_SET);
    4053
Note: See TracChangeset for help on using the changeset viewer.