From cd74d6924d119370ca8a9acf07d3631cd7a9501b Mon Sep 17 00:00:00 2001 From: RichardG867 Date: Fri, 15 Oct 2021 14:59:30 -0300 Subject: [PATCH] pcireg: Update POSIX-UEFI to fix fseek bug --- pcireg/PCIREG.EFI | Bin 47237 -> 47219 bytes pcireg/PCIREG.EXE | Bin 51336 -> 51344 bytes pcireg/pcireg.c | 18 +++++++++--------- pcireg/uefi/stdio.c | 34 +++++++++++++++++++++++++++++++--- 4 files changed, 40 insertions(+), 12 deletions(-) diff --git a/pcireg/PCIREG.EFI b/pcireg/PCIREG.EFI index 444ed814636f196497802b756b9f4df47b66d4ca..18cdf05343521e9243933dc15478695f8ff922d6 100644 GIT binary patch delta 13637 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 diff --git a/pcireg/pcireg.c b/pcireg/pcireg.c index 10d4a32..9c8dce2 100644 --- a/pcireg/pcireg.c +++ b/pcireg/pcireg.c @@ -181,7 +181,7 @@ pciids_read_string(uint32_t offset) return NULL; /* Seek to string offset. */ - fseek_to(pciids_f, pciids_header.string_db_offset + offset); + fseek(pciids_f, pciids_header.string_db_offset + offset, SEEK_SET); /* Read string length, and return nothing if it's an empty string. */ fread(&length, sizeof(length), 1, pciids_f); @@ -209,7 +209,7 @@ pciids_find_vendor(uint16_t vendor_id) return 0; /* Seek to vendor database. */ - fseek_to(pciids_f, sizeof(pciids_header)); + fseek(pciids_f, sizeof(pciids_header), SEEK_SET); /* Read vendor entries until the ID is matched or overtaken. */ do { @@ -244,7 +244,7 @@ pciids_get_device(uint16_t device_id) return NULL; /* Seek to device database entries for the established vendor. */ - fseek_to(pciids_f, pciids_header.device_db_offset + pciids_vendor.devices_offset); + fseek(pciids_f, pciids_header.device_db_offset + pciids_vendor.devices_offset, SEEK_SET); /* Read device entries until the ID is matched or overtaken. */ do { @@ -271,7 +271,7 @@ pciids_get_subdevice(uint16_t subvendor_id, uint16_t subdevice_id) return NULL; /* Seek to subdevice database entries for the established subvendor. */ - fseek_to(pciids_f, pciids_header.subdevice_db_offset + pciids_device.subdevices_offset); + fseek(pciids_f, pciids_header.subdevice_db_offset + pciids_device.subdevices_offset, SEEK_SET); /* Read subdevice entries until the ID is matched or overtaken. */ do { @@ -296,7 +296,7 @@ pciids_get_class(uint8_t class_id) return NULL; /* Seek to class database. */ - fseek_to(pciids_f, pciids_header.class_db_offset); + fseek(pciids_f, pciids_header.class_db_offset, SEEK_SET); /* Read class entries until the ID is matched or overtaken. */ do { @@ -321,7 +321,7 @@ pciids_get_subclass(uint8_t class_id, uint8_t subclass_id) return NULL; /* Seek to subclass database. */ - fseek_to(pciids_f, pciids_header.subclass_db_offset); + fseek(pciids_f, pciids_header.subclass_db_offset, SEEK_SET); /* Read subclass entries until the ID is matched or overtaken. */ do { @@ -346,7 +346,7 @@ pciids_get_progif(uint8_t class_id, uint8_t subclass_id, uint8_t progif_id) return NULL; /* Seek to programming interface database. */ - fseek_to(pciids_f, pciids_header.progif_db_offset); + fseek(pciids_f, pciids_header.progif_db_offset, SEEK_SET); /* Read programming interface entries until the ID is matched or overtaken. */ do { @@ -782,8 +782,8 @@ dump_info(uint8_t bus, uint8_t dev, uint8_t func) #else reg_val.u32 = pci_readl(bus, dev, func, 0x00); if (!reg_val.u32 || (reg_val.u32 == 0xffffffff)) { - printf("\nNo device appears to exist here. (vendor:device %04X:%04X)", - reg_val.u16[0], reg_val.u16[1]); + printf("\nNo device appears to exist here. (vendor:device %04X:%04X)\n", + reg_val.u16[0], reg_val.u16[1]); return 1; } #endif diff --git a/pcireg/uefi/stdio.c b/pcireg/uefi/stdio.c index a9f80de..dd0004d 100644 --- a/pcireg/uefi/stdio.c +++ b/pcireg/uefi/stdio.c @@ -113,6 +113,10 @@ int fclose (FILE *__stream) { efi_status_t status = EFI_SUCCESS; uintn_t i; + if(!__stream) { + errno = EINVAL; + return 0; + } if(__stream == stdin || __stream == stdout || __stream == stderr || (__ser && __stream == (FILE*)__ser)) { return 1; } @@ -128,6 +132,10 @@ int fflush (FILE *__stream) { efi_status_t status = EFI_SUCCESS; uintn_t i; + if(!__stream) { + errno = EINVAL; + return 0; + } if(__stream == stdin || __stream == stdout || __stream == stderr || (__ser && __stream == (FILE*)__ser)) { return 1; } @@ -146,7 +154,7 @@ int __remove (const char_t *__filename, int isdir) efi_file_info_t info; uintn_t fsiz = (uintn_t)sizeof(efi_file_info_t), i; FILE *f = fopen(__filename, CL("r")); - if(f == stdin || f == stdout || f == stderr || (__ser && f == (FILE*)__ser)) { + if(!f || f == stdin || f == stdout || f == stderr || (__ser && f == (FILE*)__ser)) { errno = EBADF; return 1; } @@ -288,6 +296,10 @@ size_t fread (void *__ptr, size_t __size, size_t __n, FILE *__stream) { uintn_t bs = __size * __n, i, n; efi_status_t status; + if(!__ptr || __size < 1 || __n < 1 || !__stream) { + errno = EINVAL; + return 0; + } if(__stream == stdin || __stream == stdout || __stream == stderr) { errno = ESPIPE; return 0; @@ -320,6 +332,10 @@ size_t fwrite (const void *__ptr, size_t __size, size_t __n, FILE *__stream) { uintn_t bs = __size * __n, n, i; efi_status_t status; + if(!__ptr || __size < 1 || __n < 1 || !__stream) { + errno = EINVAL; + return 0; + } if(__stream == stdin || __stream == stdout || __stream == stderr) { errno = ESPIPE; return 0; @@ -355,6 +371,10 @@ int fseek (FILE *__stream, long int __off, int __whence) efi_guid_t infoGuid = EFI_FILE_INFO_GUID; efi_file_info_t info; uintn_t fsiz = sizeof(efi_file_info_t), i; + if(!__stream || (__whence != SEEK_SET && __whence != SEEK_CUR && __whence != SEEK_END)) { + errno = EINVAL; + return -1; + } if(__stream == stdin || __stream == stdout || __stream == stderr) { errno = ESPIPE; return -1; @@ -399,7 +419,7 @@ int fseek (FILE *__stream, long int __off, int __whence) } break; default: - status = __stream->SetPosition(__stream, off); + status = __stream->SetPosition(__stream, __off); break; } return EFI_ERROR(status) ? -1 : 0; @@ -410,6 +430,10 @@ long int ftell (FILE *__stream) uint64_t off = 0; uintn_t i; efi_status_t status; + if(!__stream) { + errno = EINVAL; + return -1; + } if(__stream == stdin || __stream == stdout || __stream == stderr) { errno = ESPIPE; return -1; @@ -433,6 +457,10 @@ int feof (FILE *__stream) efi_file_info_t info; uintn_t fsiz = (uintn_t)sizeof(efi_file_info_t), i; efi_status_t status; + if(!__stream) { + errno = EINVAL; + return 0; + } if(__stream == stdin || __stream == stdout || __stream == stderr) { errno = ESPIPE; return 0; @@ -702,7 +730,7 @@ int vfprintf (FILE *__stream, const char_t *__format, __builtin_va_list args) #else ret = vsnprintf(dst, BUFSIZ, __format, args); #endif - if(ret < 1 || __stream == stdin) return 0; + if(ret < 1 || !__stream || __stream == stdin) return 0; for(i = 0; i < __blk_ndevs; i++) if(__stream == (FILE*)__blk_devs[i].bio) { errno = EBADF;