mirror of
https://github.com/OpenVPN/openvpn.git
synced 2024-09-20 03:52:28 +02:00
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
This commit is contained in:
parent
1852709cd5
commit
5bb8bfea43
@ -305,6 +305,8 @@ openvpn_plugin_open_v1 (unsigned int *type_mask, const char *argv[], const char
|
||||
* Allocate our context
|
||||
*/
|
||||
context = (struct auth_pam_context *) calloc (1, sizeof (struct auth_pam_context));
|
||||
if (!context)
|
||||
goto error;
|
||||
context->foreground_fd = -1;
|
||||
|
||||
/*
|
||||
@ -492,7 +494,7 @@ openvpn_plugin_abort_v1 (openvpn_plugin_handle_t handle)
|
||||
struct auth_pam_context *context = (struct auth_pam_context *) handle;
|
||||
|
||||
/* tell background process to exit */
|
||||
if (context->foreground_fd >= 0)
|
||||
if (context && context->foreground_fd >= 0)
|
||||
{
|
||||
send_control (context->foreground_fd, COMMAND_EXIT);
|
||||
close (context->foreground_fd);
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user