If fileDescriptor is not retrieved don't close it, and if firmwareFileSize is negative fail. CID 3493 CID CID 3494.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39976 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -47,7 +47,7 @@ const struct firmware*
|
|||||||
firmware_get(const char* fbsdFirmwareName)
|
firmware_get(const char* fbsdFirmwareName)
|
||||||
{
|
{
|
||||||
char* fbsdFirmwareNameCopy = NULL;
|
char* fbsdFirmwareNameCopy = NULL;
|
||||||
int fileDescriptor = 0;
|
int fileDescriptor = -1;
|
||||||
struct firmware* firmware = NULL;
|
struct firmware* firmware = NULL;
|
||||||
int32 firmwareFileSize;
|
int32 firmwareFileSize;
|
||||||
char* firmwarePath = NULL;
|
char* firmwarePath = NULL;
|
||||||
@@ -75,6 +75,9 @@ firmware_get(const char* fbsdFirmwareName)
|
|||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
firmwareFileSize = lseek(fileDescriptor, 0, SEEK_END);
|
firmwareFileSize = lseek(fileDescriptor, 0, SEEK_END);
|
||||||
|
if (firmwareFileSize == -1)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
lseek(fileDescriptor, 0, SEEK_SET);
|
lseek(fileDescriptor, 0, SEEK_SET);
|
||||||
|
|
||||||
fbsdFirmwareNameCopy = strndup(fbsdFirmwareName,
|
fbsdFirmwareNameCopy = strndup(fbsdFirmwareName,
|
||||||
@@ -111,7 +114,7 @@ cleanup:
|
|||||||
free(fbsdFirmwareNameCopy);
|
free(fbsdFirmwareNameCopy);
|
||||||
if (firmwarePath)
|
if (firmwarePath)
|
||||||
free(firmwarePath);
|
free(firmwarePath);
|
||||||
if (fileDescriptor)
|
if (fileDescriptor >= 0)
|
||||||
close(fileDescriptor);
|
close(fileDescriptor);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user