diff options
author | Werner Koch <[email protected]> | 2010-12-20 16:22:06 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2010-12-20 16:22:06 +0000 |
commit | 20b033a630a35d1980ecef3f06f68b7edae1ac1f (patch) | |
tree | 5726eb9f69912292c64126330d47663210cecb8f /src/gpgcedev.c | |
parent | Typo fixes. (diff) | |
download | libassuan-20b033a630a35d1980ecef3f06f68b7edae1ac1f.tar.gz libassuan-20b033a630a35d1980ecef3f06f68b7edae1ac1f.zip |
Check malloc and CreateEvent return codes.
Diffstat (limited to 'src/gpgcedev.c')
-rw-r--r-- | src/gpgcedev.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/gpgcedev.c b/src/gpgcedev.c index 69dcd6f..a097c88 100644 --- a/src/gpgcedev.c +++ b/src/gpgcedev.c @@ -251,11 +251,32 @@ pipeimpl_new (void) pimpl->refcnt = 1; pimpl->buffer_size = 512; pimpl->buffer = malloc (pimpl->buffer_size); + if (!pimpl->buffer) + { + DeleteCriticalSection (&pimpl->critsect); + free (pimpl); + return NULL; + } pimpl->buffer_len = 0; pimpl->buffer_pos = 0; pimpl->flags = 0; pimpl->space_available = CreateEvent (NULL, FALSE, FALSE, NULL); + if (!pimpl->space_available) + { + free (pimpl->buffer); + DeleteCriticalSection (&pimpl->critsect); + free (pimpl); + return NULL; + } pimpl->data_available = CreateEvent (NULL, FALSE, FALSE, NULL); + if (!pimpl->data_available) + { + CloseHandle (pimpl->space_available); + free (pimpl->buffer); + DeleteCriticalSection (&pimpl->critsect); + free (pimpl); + return NULL; + } pimpl->monitor_proc = INVALID_HANDLE_VALUE; pimpl->monitor_access = 0; pimpl->monitor_rvid = 0; |