This fixes starting openvpn compiled as client only version of systems that have no /tmp (Android). --tmp-dir could only be set if P2MP_SERVER has been enabled too.
Signed-off-by: Arne Schwabe <a...@rfc2549.org> --- src/openvpn/options.c | 12 ++++++++---- src/openvpn/options.h | 2 ++ src/openvpn/syshead.h | 1 + 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/openvpn/options.c b/src/openvpn/options.c index 8e5d3b9..71d43b7 100644 --- a/src/openvpn/options.c +++ b/src/openvpn/options.c @@ -862,6 +862,7 @@ init_options (struct options *o, const bool init_gc) o->pkcs11_pin_cache_period = -1; #endif /* ENABLE_PKCS11 */ +#ifdef ENABLE_TMPDIR /* Set default --tmp-dir */ #ifdef WIN32 /* On Windows, find temp dir via enviroment variables */ @@ -873,6 +874,7 @@ init_options (struct options *o, const bool init_gc) o->tmp_dir = "/tmp"; } #endif /* WIN32 */ +#endif /* ENABLE_TMPDIR */ } void @@ -2759,19 +2761,21 @@ options_postprocess_filechecks (struct options *options) options->management_user_pass, R_OK, "--management user/password file"); #endif /* ENABLE_MANAGEMENT */ -#if P2MP +#if ENABLE_TMPDIR errs |= check_file_access (CHKACC_FILE|CHKACC_ACPTSTDIN, options->auth_user_pass_file, R_OK, "--auth-user-pass"); -#endif /* P2MP */ + + errs |= check_file_access (CHKACC_FILE, options->tmp_dir, + R_OK|W_OK|X_OK, "Temporary directory (--tmp-dir)"); + +#endif /* ENABLE_TMPDIR */ /* ** System related ** */ errs |= check_file_access (CHKACC_FILE, options->chroot_dir, R_OK|X_OK, "--chroot directory"); errs |= check_file_access (CHKACC_DIRPATH|CHKACC_FILEXSTWR, options->writepid, R_OK|W_OK, "--writepid"); - errs |= check_file_access (CHKACC_FILE, options->tmp_dir, - R_OK|W_OK|X_OK, "Temporary directory (--tmp-dir)"); /* ** Log related ** */ errs |= check_file_access (CHKACC_DIRPATH|CHKACC_FILEXSTWR, options->status_file, diff --git a/src/openvpn/options.h b/src/openvpn/options.h index cc3e47a..50d42fb 100644 --- a/src/openvpn/options.h +++ b/src/openvpn/options.h @@ -403,7 +403,9 @@ struct options struct plugin_option_list *plugin_list; #endif +#ifdef ENABLE_TMPDIR const char *tmp_dir; +#endif #if P2MP diff --git a/src/openvpn/syshead.h b/src/openvpn/syshead.h index 3337764..f5c8774 100644 --- a/src/openvpn/syshead.h +++ b/src/openvpn/syshead.h @@ -506,6 +506,7 @@ socket_defined (const socket_descriptor_t sd) #if P2MP && !defined(ENABLE_CLIENT_ONLY) #define P2MP_SERVER 1 +#define ENABLE_TMPDIR 1 #else #define P2MP_SERVER 0 #endif -- 1.7.7.5 (Apple Git-26)