Fixed some more memory bugs in ACPI
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12432 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -170,16 +170,18 @@ static ACPI_STATUS get_device_by_hid_callback(ACPI_HANDLE object, UINT32 depth,
|
|||||||
ACPI_STATUS result;
|
ACPI_STATUS result;
|
||||||
ACPI_BUFFER buffer;
|
ACPI_BUFFER buffer;
|
||||||
uint32 *counter = (uint32 *)(context);
|
uint32 *counter = (uint32 *)(context);
|
||||||
|
|
||||||
buffer.Length = 255;
|
|
||||||
buffer.Pointer = malloc(255);
|
|
||||||
|
|
||||||
*return_val = NULL;
|
*return_val = NULL;
|
||||||
|
|
||||||
if (counter[0] == counter[1]) {
|
if (counter[0] == counter[1]) {
|
||||||
|
buffer.Length = 254;
|
||||||
|
buffer.Pointer = malloc(255);
|
||||||
|
|
||||||
result = AcpiGetName(object,ACPI_FULL_PATHNAME,&buffer);
|
result = AcpiGetName(object,ACPI_FULL_PATHNAME,&buffer);
|
||||||
if (result != AE_OK)
|
if (result != AE_OK) {
|
||||||
return result;
|
free(buffer.Pointer);
|
||||||
|
return AE_CTRL_TERMINATE;
|
||||||
|
}
|
||||||
|
|
||||||
((char*)(buffer.Pointer))[buffer.Length] = '\0';
|
((char*)(buffer.Pointer))[buffer.Length] = '\0';
|
||||||
*return_val = buffer.Pointer;
|
*return_val = buffer.Pointer;
|
||||||
@@ -193,7 +195,7 @@ static ACPI_STATUS get_device_by_hid_callback(ACPI_HANDLE object, UINT32 depth,
|
|||||||
status_t get_device (const char *hid, uint32 index, char *result) {
|
status_t get_device (const char *hid, uint32 index, char *result) {
|
||||||
ACPI_STATUS status;
|
ACPI_STATUS status;
|
||||||
uint32 counter[2] = {index,0};
|
uint32 counter[2] = {index,0};
|
||||||
char *result2;
|
char *result2 = NULL;
|
||||||
|
|
||||||
status = AcpiGetDevices((char *)hid,&get_device_by_hid_callback,counter,&result2);
|
status = AcpiGetDevices((char *)hid,&get_device_by_hid_callback,counter,&result2);
|
||||||
if ((status != AE_OK) || (result2 == NULL))
|
if ((status != AE_OK) || (result2 == NULL))
|
||||||
|
|||||||
Reference in New Issue
Block a user