stand/efihttp: Work around a bug in edk2 http instance reconfiguration
A bug in the EFI HTTP driver of TianoCore EDK2 causes memory corruption when an http instance that uses tls is reconfigured, leading to a crash. Work around this by forcing a new http instance for each request instead of reconfiguring the existing one. The upstream bug report is https://bugzilla.tianocore.org/show_bug.cgi?id=1917 Submitted by: bcran Reviewed By: imp, kevans, tsoome MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D21281
This commit is contained in:
parent
022c2f5570
commit
d455cd5ac3
@ -576,6 +576,14 @@ efihttp_fs_open(const char *path, struct open_file *f)
|
||||
*/
|
||||
err = _efihttp_fs_open(path, f);
|
||||
if (err != 0) {
|
||||
/*
|
||||
* Work around a bug in the EFI HTTP implementation which
|
||||
* causes a crash if the http instance isn't torn down
|
||||
* between requests.
|
||||
* See https://bugzilla.tianocore.org/show_bug.cgi?id=1917
|
||||
*/
|
||||
efihttp_dev_close(f);
|
||||
efihttp_dev_open(f);
|
||||
path_slash = malloc(strlen(path) + 2);
|
||||
if (path_slash == NULL)
|
||||
return (ENOMEM);
|
||||
@ -719,6 +727,14 @@ efihttp_fs_seek(struct open_file *f, off_t offset, int where)
|
||||
path = fh->path;
|
||||
fh->path = NULL;
|
||||
efihttp_fs_close(f);
|
||||
/*
|
||||
* Work around a bug in the EFI HTTP implementation which
|
||||
* causes a crash if the http instance isn't torn down
|
||||
* between requests.
|
||||
* See https://bugzilla.tianocore.org/show_bug.cgi?id=1917
|
||||
*/
|
||||
efihttp_dev_close(f);
|
||||
efihttp_dev_open(f);
|
||||
err = efihttp_fs_open(path, f);
|
||||
free(path);
|
||||
if (err != 0)
|
||||
|
Loading…
Reference in New Issue
Block a user