diff options
author | james <james@e7ae566f-a301-0410-adde-c780ea21d3b5> | 2009-12-10 23:50:03 +0000 |
---|---|---|
committer | james <james@e7ae566f-a301-0410-adde-c780ea21d3b5> | 2009-12-10 23:50:03 +0000 |
commit | 5bb8bfea4399117c6ec42a58991e48e9e748a62b (patch) | |
tree | 15d51c1440e476d629801cb36ff1c43d40b660e1 /plugin/down-root | |
parent | Version 2.1_rc22 (diff) | |
download | openvpn-5bb8bfea4399117c6ec42a58991e48e9e748a62b.tar.xz |
Fixed a couple issues in sample plugins auth-pam.c and down-root.c:
1. Fail gracefully rather than segfault if calloc returns NULL.
2. The openvpn_plugin_abort_v1 function can potentially be called
with handle == NULL. Add code to detect this case, and if
so, avoid dereferencing pointers derived from handle.
(Thanks to David Sommerseth for finding this bug).
git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@5261 e7ae566f-a301-0410-adde-c780ea21d3b5
Diffstat (limited to 'plugin/down-root')
-rw-r--r-- | plugin/down-root/down-root.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/plugin/down-root/down-root.c b/plugin/down-root/down-root.c index 5e0c002..7cf8f18 100644 --- a/plugin/down-root/down-root.c +++ b/plugin/down-root/down-root.c @@ -274,6 +274,8 @@ openvpn_plugin_open_v1 (unsigned int *type_mask, const char *argv[], const char * Allocate our context */ context = (struct down_root_context *) calloc (1, sizeof (struct down_root_context)); + if (!context) + goto error; context->foreground_fd = -1; /* @@ -434,7 +436,7 @@ openvpn_plugin_abort_v1 (openvpn_plugin_handle_t handle) { struct down_root_context *context = (struct down_root_context *) handle; - if (context->foreground_fd >= 0) + if (context && context->foreground_fd >= 0) { /* tell background process to exit */ send_control (context->foreground_fd, COMMAND_EXIT); |