summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2016-05-25 10:37:34 +0200
committerSimon Rettberg2016-05-25 10:37:34 +0200
commit545d10abd32e818dc028917cd0b4aad87e0edde3 (patch)
tree6e6126d182433011988d32fa31df03d73b64358b
parentMerge branch 'master' of git://git.openslx.org/openslx-ng/tm-scripts (diff)
downloadtm-scripts-545d10abd32e818dc028917cd0b4aad87e0edde3.tar.gz
tm-scripts-545d10abd32e818dc028917cd0b4aad87e0edde3.tar.xz
tm-scripts-545d10abd32e818dc028917cd0b4aad87e0edde3.zip
[run-virt] Fix invalid memory access in openslx.exe
-rwxr-xr-xremote/modules/run-virt/data/opt/openslx/vmchooser/data/openslx.exebin61952 -> 61952 bytes
-rw-r--r--remote/modules/run-virt/winres/winres.c14
2 files changed, 6 insertions, 8 deletions
diff --git a/remote/modules/run-virt/data/opt/openslx/vmchooser/data/openslx.exe b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/openslx.exe
index e6e5771e..8b98311a 100755
--- a/remote/modules/run-virt/data/opt/openslx/vmchooser/data/openslx.exe
+++ b/remote/modules/run-virt/data/opt/openslx/vmchooser/data/openslx.exe
Binary files differ
diff --git a/remote/modules/run-virt/winres/winres.c b/remote/modules/run-virt/winres/winres.c
index acc15e93..1c5650b8 100644
--- a/remote/modules/run-virt/winres/winres.c
+++ b/remote/modules/run-virt/winres/winres.c
@@ -495,11 +495,11 @@ static void readShareFile()
char *skey1 = NULL, *skey2 = NULL;
if (fgets(creds, sizeof(creds), h) != NULL) {
char *ptr = creds;
- shost = getToken(&ptr, FALSE);
- sport = getToken(&ptr, FALSE);
+ shost = getToken(&ptr, TRUE);
+ sport = getToken(&ptr, TRUE);
skey1 = getToken(&ptr, FALSE);
skey2 = getToken(&ptr, FALSE);
- suser = getToken(&ptr, FALSE);
+ suser = getToken(&ptr, TRUE);
}
int idx = 0;
while (fgets(buffer, sizeof(buffer), h) != NULL && idx < DRIVEMAX) {
@@ -531,8 +531,6 @@ drive_fail:
return;
if (atoi(sport) < 1000 || atoi(sport) > 65535) // Invalid port
return;
- shost = strdup(shost);
- sport = strdup(sport);
bkey1 = hex2bin(skey1);
bkey2 = hex2bin(skey2);
if (bkey1 == NULL || bkey2 == NULL)
@@ -627,11 +625,11 @@ static DWORD mount(LPNETRESOURCEW share, LPWSTR pass, LPWSTR user)
}
if (retval != ERROR_INVALID_PASSWORD && retval != ERROR_LOGON_FAILURE
&& retval != ERROR_BAD_USERNAME && retval != ERROR_ACCESS_DENIED
- && retval != ERROR_SESSION_CREDENTIAL_CONFLICT) {
+ && retval != ERROR_SESSION_CREDENTIAL_CONFLICT && retval != ERROR_BAD_NET_NAME) {
return retval;
}
}
- static wchar_t nuser[BUFLEN] = L"", npass[BUFLEN] = L"";
+ static wchar_t nuser[BUFLEN] = L"\0", npass[BUFLEN] = L"\0";
if (nuser[0] == 0 && npass[0] == 0) {
BOOL ok = TRUE;
if (suser != NULL) {
@@ -691,7 +689,7 @@ static BOOL mountNetworkShare(const netdrive_t *d)
return TRUE;
}
DWORD retval;
- NETRESOURCEW share;
+ NETRESOURCEW share = { 0 };
share.dwType = RESOURCETYPE_DISK;
share.lpLocalName = letter;
share.lpRemoteName = path;