blob: 4aaf94606fc989bc8182981e285f14158ce20e09 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
From 9ce4bc351f188ee52786c6f3a6b4ee1b48926bfd Mon Sep 17 00:00:00 2001
From: akallabeth <akallabeth@posteo.net>
Date: Thu, 4 Mar 2021 14:26:35 +0100
Subject: [PATCH 12/36] Parse on a copy of the argument string for printer
If done on original the wrong backend is loaded on autoreconnect
(cherry picked from commit af1c6ebcb49c93d636817ec98f74d07cba9d7f26)
---
channels/printer/client/printer_main.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/channels/printer/client/printer_main.c b/channels/printer/client/printer_main.c
index dbcc07dc5..170ecb15b 100644
--- a/channels/printer/client/printer_main.c
+++ b/channels/printer/client/printer_main.c
@@ -979,7 +979,7 @@ printer_DeviceServiceEntry
device = (RDPDR_PRINTER*)pEntryPoints->device;
name = device->Name;
- driver_name = device->DriverName;
+ driver_name = _strdup(device->DriverName);
/* Secondary argument is one of the following:
*
@@ -1016,7 +1016,8 @@ printer_DeviceServiceEntry
if (!driver)
{
WLog_ERR(TAG, "Could not get a printer driver!");
- return CHANNEL_RC_INITIALIZATION_ERROR;
+ error = CHANNEL_RC_INITIALIZATION_ERROR;
+ goto fail;
}
if (name && name[0])
@@ -1064,7 +1065,9 @@ printer_DeviceServiceEntry
}
fail:
- driver->ReleaseRef(driver);
+ free(driver_name);
+ if (driver)
+ driver->ReleaseRef(driver);
return error;
}
--
2.30.2
|