diff --git a/sysutils/acpi_call/Makefile b/sysutils/acpi_call/Makefile index b56ff57106a8..0b2b810542a9 100644 --- a/sysutils/acpi_call/Makefile +++ b/sysutils/acpi_call/Makefile @@ -1,6 +1,6 @@ PORTNAME= acpi_call PORTVERSION= 1.0.1 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= sysutils MASTER_SITES= http://projects.ukrweb.net/files/ \ http://imax.in.ua/files/ diff --git a/sysutils/acpi_call/files/patch-acpi__call.c b/sysutils/acpi_call/files/patch-acpi__call.c index 39d1785bae2d..a278233a969e 100644 --- a/sysutils/acpi_call/files/patch-acpi__call.c +++ b/sysutils/acpi_call/files/patch-acpi__call.c @@ -12,7 +12,7 @@ #include #if __FreeBSD__ >= 8 # include -@@ -45,18 +45,97 @@ +@@ -45,18 +45,99 @@ void acpi_call_fixup_pointers(ACPI_OBJECT *p, UINT8 *o void acpi_call_fixup_pointers(ACPI_OBJECT *p, UINT8 *orig); @@ -95,7 +95,9 @@ + ACPI_OBJECT_LIST *args; ACPI_BUFFER result; + char path[256]; ++ int error; ++ error = 0; result.Length = ACPI_ALLOCATE_BUFFER; result.Pointer = NULL; @@ -111,13 +113,14 @@ if (ACPI_SUCCESS(params->retval)) { if (result.Pointer != NULL) -@@ -64,30 +143,31 @@ acpi_call_ioctl(u_long cmd, caddr_t addr, void *arg) +@@ -64,30 +145,31 @@ acpi_call_ioctl(u_long cmd, caddr_t addr, void *arg) if (params->result.Pointer != NULL) { params->result.Length = min(params->result.Length, result.Length); +- copyout(result.Pointer, params->result.Pointer, + if (result.Length >= sizeof(ACPI_OBJECT)) + acpi_call_fixup_pointers((ACPI_OBJECT*)result.Pointer, params->result.Pointer); - copyout(result.Pointer, params->result.Pointer, ++ error = copyout(result.Pointer, params->result.Pointer, params->result.Length); params->reslen = result.Length; - if (result.Length >= sizeof(ACPI_OBJECT)) @@ -129,7 +132,8 @@ + free_acpi_object_list(args); } - return (0); +- return (0); ++ return error; } void