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:
Nathan Whitehorn
2005-04-18 00:42:47 +00:00
parent 6843026324
commit 37c35f77a4
@@ -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))