Hi Alon

On Tuesday 26 June 2012 20:05:02 Alon Bar-Lev wrote:
> Currently openvpn requires/endorses specifying full path in plugin
> parameter. 

Specifying a custom full path is probably something we need to ban in the 
(near) future, as it imposes an attack vector for privilege escalation by code 
injection when openvpn is not running as another user or has access to 
privilege escalation by other means (like the yet to be submitted Windows 
interactive service).

This patch is a step towards this so I think it's absolutely worth a feature 
ACK.

>  AM_CFLAGS = \
> +     -DOPENVPN_PLUGINDIR="\"$(plugindir)\"" \

Couldn't OPENVPN_PLUGINDIR be an AC_DEFINE in config.h instead? Would keep the 
command line shorter and more readable.

> +         if (ExpandEnvironmentStringsW(plugindir, _plugindir_expanded, 
SIZE(_plugindir_expanded)) != 0) 

There's _countof defined in the Windows headers that could replace the non-std 
SIZE here. I had to look SIZE() up. It does the right thing, though.

> +      _snwprintf(_abs_so_pathname, SIZE(_abs_so_pathname), L"%s%C%s",
> plugindir, OS_SPECIFIC_DIRSEP, wide_string(p->so_pathname, &gc)); 

You need to make sure _abs_so_pathname is zero terminated here. However, I 
found that _snwprintf does not return a negative value when the buffer is too 
small. Contrary to http://msdn.microsoft.com/en-us/library/2ts7cx93.aspx
So, this could need more research to get right.

Heiko

Reply via email to