[PATCH 3/5] xinput1_3: Use a fixed size array for HID device_path.
Rémi Bernon
rbernon at codeweavers.com
Fri Aug 6 10:08:57 CDT 2021
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
dlls/xinput1_3/main.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/dlls/xinput1_3/main.c b/dlls/xinput1_3/main.c
index 9c33d705f41..7f4bb329c75 100644
--- a/dlls/xinput1_3/main.c
+++ b/dlls/xinput1_3/main.c
@@ -114,7 +114,7 @@ struct hid_platform_private
HIDP_CAPS caps;
HANDLE device;
- WCHAR *device_path;
+ WCHAR device_path[MAX_PATH];
BOOL enabled;
char *input_report_buf[2];
@@ -243,7 +243,6 @@ static BOOL VerifyGamepad(PHIDP_PREPARSED_DATA preparsed, XINPUT_CAPABILITIES *x
static BOOL init_controller(struct xinput_controller *controller, PHIDP_PREPARSED_DATA preparsed,
HIDP_CAPS *caps, HANDLE device, WCHAR *device_path)
{
- size_t size;
struct hid_platform_private *private;
if (!(private = calloc(1, sizeof(struct hid_platform_private)))) return FALSE;
@@ -257,9 +256,7 @@ static BOOL init_controller(struct xinput_controller *controller, PHIDP_PREPARSE
if (!(private->input_report_buf[0] = calloc(1, private->caps.InputReportByteLength))) goto failed;
if (!(private->input_report_buf[1] = calloc(1, private->caps.InputReportByteLength))) goto failed;
if (!(private->output_report_buf = calloc(1, private->caps.OutputReportByteLength))) goto failed;
- size = (lstrlenW(device_path) + 1) * sizeof(WCHAR);
- if (!(private->device_path = malloc(size))) goto failed;
- memcpy(private->device_path, device_path, size);
+ lstrcpynW(private->device_path, device_path, MAX_PATH);
private->enabled = TRUE;
memset(&controller->state, 0, sizeof(controller->state));
@@ -269,7 +266,6 @@ static BOOL init_controller(struct xinput_controller *controller, PHIDP_PREPARSE
return TRUE;
failed:
- free(private->device_path);
free(private->input_report_buf[0]);
free(private->input_report_buf[1]);
free(private->output_report_buf);
@@ -360,7 +356,6 @@ static void remove_gamepad(struct xinput_controller *device)
free(private->input_report_buf[0]);
free(private->input_report_buf[1]);
free(private->output_report_buf);
- free(private->device_path);
HidD_FreePreparsedData(private->preparsed);
free(private);
}
--
2.32.0
More information about the wine-devel
mailing list