aboutsummaryrefslogtreecommitdiffstats
path: root/src/gpgcedev.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2010-12-20 16:22:06 +0000
committerWerner Koch <[email protected]>2010-12-20 16:22:06 +0000
commit20b033a630a35d1980ecef3f06f68b7edae1ac1f (patch)
tree5726eb9f69912292c64126330d47663210cecb8f /src/gpgcedev.c
parentTypo fixes. (diff)
downloadlibassuan-20b033a630a35d1980ecef3f06f68b7edae1ac1f.tar.gz
libassuan-20b033a630a35d1980ecef3f06f68b7edae1ac1f.zip
Check malloc and CreateEvent return codes.
Diffstat (limited to 'src/gpgcedev.c')
-rw-r--r--src/gpgcedev.c21
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;