diff options
| author | Steve McIntyre <steve@einval.com> | 2024-02-17 17:35:37 +0000 |
|---|---|---|
| committer | Steve McIntyre <steve@einval.com> | 2024-05-03 14:36:51 +0100 |
| commit | f898e219b4b06cf2bb7af18b5cc7a00754d3d274 (patch) | |
| tree | c535b3ff1b13388dbaa7072c7f5ec78f5d73ee53 /httpboot.c | |
| parent | 3cf4042d82ef314f19e9f7bd4f86c4b59efd8233 (diff) | |
| download | efi-boot-shim-f898e219b4b06cf2bb7af18b5cc7a00754d3d274.tar.gz efi-boot-shim-f898e219b4b06cf2bb7af18b5cc7a00754d3d274.zip | |
New upstream version 15.8
Diffstat (limited to 'httpboot.c')
| -rw-r--r-- | httpboot.c | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -578,7 +578,13 @@ receive_http_response(EFI_HTTP_PROTOCOL *http, VOID **buffer, UINT64 *buf_size) } if (*buf_size == 0) { - perror(L"Failed to get Content-Lenght\n"); + perror(L"Failed to get Content-Length\n"); + goto error; + } + + if (*buf_size < rx_message.BodyLength) { + efi_status = EFI_BAD_BUFFER_SIZE; + perror(L"Invalid Content-Length\n"); goto error; } @@ -713,18 +719,20 @@ error: } EFI_STATUS -httpboot_fetch_buffer (EFI_HANDLE image, VOID **buffer, UINT64 *buf_size) +httpboot_fetch_buffer (EFI_HANDLE image, VOID **buffer, UINT64 *buf_size, + CHAR8 *name) { EFI_STATUS efi_status; EFI_HANDLE nic; - CHAR8 next_loader[sizeof DEFAULT_LOADER_CHAR]; + CHAR8 *next_loader; CHAR8 *next_uri = NULL; CHAR8 *hostname = NULL; if (!uri) return EFI_NOT_READY; - translate_slashes(next_loader, DEFAULT_LOADER_CHAR); + next_loader = (CHAR8 *)AllocatePool((strlen(name) + 1) * sizeof (CHAR8)); + translate_slashes(next_loader, name); /* Create the URI for the next loader based on the original URI */ efi_status = generate_next_uri(uri, next_loader, &next_uri); |
