-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 02/05/12 20:16, Alon Bar-Lev wrote:
> Looks good. If you testing this one, please ensure symbolic links 
> also works properly... :)

Just to confirm, as I forgot to mention that in the 'applied' message
earlier on.  This was tested with symlinks on Linux.  Both with a
symlink pointing to a non-existing file and to a file which does
exist.  It all behaved as expected - wrong symlink gave a "no such
file" error, otherwise the proper script was executed.


kind regards,

David Sommerseth



> On Wed, May 2, 2012 at 8:54 PM, David Sommerseth 
> <dav...@redhat.com> wrote:
>> To avoid confusion between check_file_access() and 
>> check_cmd_access() in the future, remove unneeded arguments from 
>> check_cmd_access()
>> 
>> As a command will always be a file, it should always check for 
>> CHKACC_FILE and nothing else.  And as the commands always will 
>> need X_OK, check only for that.
>> 
>> One change from earlier behaviour is that R_OK is not checked 
>> for.  The reason is that only scripts require R_OK to work. 
>> However, a system might be installed with binaries with only
>> X_OK set.  If a script is missing R_OK, then the execution will
>> fail due to lacking permissions.
>> 
>> Signed-off-by: David Sommerseth <dav...@redhat.com> --- 
>> src/openvpn/options.c |   48 
>> ++++++++++++++++++++++++++---------------------- 1 files
>> changed, 26 insertions(+), 22 deletions(-)
>> 
>> diff --git a/src/openvpn/options.c b/src/openvpn/options.c index 
>> 5da2eb6..7769625 100644 --- a/src/openvpn/options.c +++ 
>> b/src/openvpn/options.c @@ -2690,7 +2690,7 @@ 
>> check_file_access(const int type, const char *file, const int 
>> mode, const char * * check_file_access() arguments. */ static 
>> bool -check_cmd_access(const int type, const char *command,
>> const int mode, const char *opt) +check_cmd_access(const char
>> *command, const char *opt) { struct argv argv; bool return_code;
>> @@ -2705,7 +2705,11 @@ check_cmd_access(const int type, const
>> char *command, const int mode, const char
>> 
>> /* if an executable is specified then check it; otherwise, 
>> complain */ if (argv.argv[0]) -      return_code = 
>> check_file_access(type, argv.argv[0], mode, opt); +    /*
>> Scripts requires R_OK as well, but that might fail on binaries
>> which + * only requires X_OK to function on Unix - a scenario
>> not unlikely to +     * be seen on suid binaries. +     */ + 
>> return_code = check_file_access(CHKACC_FILE, argv.argv[0], X_OK, 
>> opt); else { msg (M_NOPREFIX|M_OPTERR, "%s fails with '%s': No 
>> path to executable.", @@ -2797,26 +2801,26 @@ 
>> options_postprocess_filechecks (struct options *options)
>> 
>> /* ** Script hooks that accept an optionally quoted and/or 
>> escaped executable path, ** */ /* ** optionally followed by 
>> arguments ** */ -  errs |= check_cmd_access (CHKACC_FILE, 
>> options->auth_user_pass_verify_script, - R_OK|X_OK,
>> "--auth-user-pass-verify script"); -  errs |= check_cmd_access
>> (CHKACC_FILE, options->client_connect_script, - R_OK|X_OK,
>> "--client-connect script"); -  errs |= check_cmd_access
>> (CHKACC_FILE, options->client_disconnect_script, - R_OK|X_OK,
>> "--client-disconnect script"); -  errs |= check_cmd_access
>> (CHKACC_FILE, options->tls_verify, - R_OK|X_OK, "--tls-verify
>> script"); -  errs |= check_cmd_access (CHKACC_FILE,
>> options->up_script, - R_OK|X_OK, "--up script"); -  errs |=
>> check_cmd_access (CHKACC_FILE, options->down_script, - R_OK|X_OK,
>> "--down script"); -  errs |= check_cmd_access (CHKACC_FILE,
>> options->ipchange, - R_OK|X_OK, "--ipchange script"); -  errs |=
>> check_cmd_access (CHKACC_FILE, options->route_script, - 
>> R_OK|X_OK, "--route-up script"); -  errs |= check_cmd_access 
>> (CHKACC_FILE, options->route_predown_script, - R_OK|X_OK,
>> "--route-pre-down script"); -  errs |= check_cmd_access
>> (CHKACC_FILE, options->learn_address_script, - R_OK|X_OK,
>> "--learn-address script"); +  errs |= check_cmd_access 
>> (options->auth_user_pass_verify_script, + 
>> "--auth-user-pass-verify script"); +  errs |= check_cmd_access 
>> (options->client_connect_script, + "--client-connect script"); +
>> errs |= check_cmd_access (options->client_disconnect_script, + 
>> "--client-disconnect script"); +  errs |= check_cmd_access 
>> (options->tls_verify, +                            "--tls-verify 
>> script"); +  errs |= check_cmd_access (options->up_script, + 
>> "--up script"); +  errs |= check_cmd_access 
>> (options->down_script, +                            "--down 
>> script"); +  errs |= check_cmd_access (options->ipchange, + 
>> "--ipchange script"); +  errs |= check_cmd_access 
>> (options->route_script, +                            "--route-up 
>> script"); +  errs |= check_cmd_access 
>> (options->route_predown_script, + "--route-pre-down script"); +
>> errs |= check_cmd_access (options->learn_address_script, + 
>> "--learn-address script"); #endif /* P2MP_SERVER */
>> 
>> if (errs) -- 1.7.4.4
>> 
>> 
>> ------------------------------------------------------------------------------
>>
>>
>> 
Live Security Virtual Conference
>> Exclusive live event will cover all the ways today's security and
>> threat landscape has changed and how IT managers can respond. 
>> Discussions will include endpoint security, mobile security and 
>> the latest in malware threats. 
>> http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ 
>> _______________________________________________ Openvpn-devel 
>> mailing list Openvpn-devel@lists.sourceforge.net 
>> https://lists.sourceforge.net/lists/listinfo/openvpn-devel
> 
> ------------------------------------------------------------------------------
>
>
> 
Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and 
> threat landscape has changed and how IT managers can respond. 
> Discussions will include endpoint security, mobile security and
> the latest in malware threats. 
> http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ 
> _______________________________________________ Openvpn-devel 
> mailing list Openvpn-devel@lists.sourceforge.net 
> https://lists.sourceforge.net/lists/listinfo/openvpn-devel
> 

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk+iTTcACgkQDC186MBRfrrHowCePfFeXrX1XrvZ1kgWHyHxeUn/
6n0Ani5Wc4jzQYPq68VswxbeN3LPBBfY
=GQ81
-----END PGP SIGNATURE-----

Reply via email to