X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=windows%2Fwinshare.c;h=56276045b7ed29a6cbec4a075ba3d7332ab90ec2;hb=1de7240eb88fa24a8532ded116b4ec72dd213008;hp=1ad20ba1148150afbaffb81083106cb42092206c;hpb=e43b6203ecaf90aec709c984991d0d65c47472d1;p=PuTTY.git diff --git a/windows/winshare.c b/windows/winshare.c index 1ad20ba1..56276045 100644 --- a/windows/winshare.c +++ b/windows/winshare.c @@ -5,6 +5,8 @@ #include #include +#if !defined NO_SECURITY + #define DEFINE_PLUG_METHOD_MACROS #include "tree234.h" #include "putty.h" @@ -12,10 +14,25 @@ #include "proxy.h" #include "ssh.h" -#if !defined NO_SECURITY - +#include "wincapi.h" #include "winsecur.h" +#ifdef COVERITY +/* + * The hack I use to build for Coverity scanning, using winegcc and + * Makefile.mgw, didn't provide some defines in wincrypt.h last time I + * looked. Therefore, define them myself here, but enclosed in #ifdef + * COVERITY to ensure I don't make up random nonsense values for any + * real build. + */ +#ifndef CRYPTPROTECTMEMORY_BLOCK_SIZE +#define CRYPTPROTECTMEMORY_BLOCK_SIZE 16 +#endif +#ifndef CRYPTPROTECTMEMORY_CROSS_PROCESS +#define CRYPTPROTECTMEMORY_CROSS_PROCESS 1 +#endif +#endif + #define CONNSHARE_PIPE_PREFIX "\\\\.\\pipe\\putty-connshare" #define CONNSHARE_MUTEX_PREFIX "Local\\putty-connshare-mutex" @@ -115,7 +132,6 @@ int platform_ssh_share(const char *pi_name, Conf *conf, Socket retsock; PSECURITY_DESCRIPTOR psd; PACL acl; - PSID networksid; /* * Transform the platform-independent version of the connection @@ -140,9 +156,9 @@ int platform_ssh_share(const char *pi_name, Conf *conf, mutexname = make_name(CONNSHARE_MUTEX_PREFIX, name); if (!make_private_security_descriptor(MUTEX_ALL_ACCESS, - &psd, &networksid, - &acl, logtext)) { + &psd, &acl, logtext)) { sfree(mutexname); + sfree(name); return SHARE_NONE; } @@ -157,15 +173,14 @@ int platform_ssh_share(const char *pi_name, Conf *conf, *logtext = dupprintf("CreateMutex(\"%s\") failed: %s", mutexname, win_strerror(GetLastError())); sfree(mutexname); + sfree(name); LocalFree(psd); - LocalFree(networksid); LocalFree(acl); return SHARE_NONE; } sfree(mutexname); LocalFree(psd); - LocalFree(networksid); LocalFree(acl); WaitForSingleObject(mutex, INFINITE);