X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fscript.c;h=55473b1f95e6ea595fe1664740aceefee8684e6e;hb=ae89a25695411149a7499189c9771762ad1f1726;hp=6389cb4b19ca0559a9c74373e0c83f7d30b598e8;hpb=19e42b76f546dc3baee4a5d6a4f161155d279c74;p=tinc diff --git a/src/script.c b/src/script.c index 6389cb4b..55473b1f 100644 --- a/src/script.c +++ b/src/script.c @@ -1,7 +1,7 @@ /* script.c -- call an external script Copyright (C) 1999-2005 Ivo Timmermans, - 2000-2013 Guus Sliepen + 2000-2015 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,10 +28,10 @@ bool execute_script(const char *name, char **envp) { #ifdef HAVE_SYSTEM - char *scriptname; + char scriptname[PATH_MAX]; char *command; - xasprintf(&scriptname, "%s" SLASH "%s%s", confbase, name, scriptextension); + snprintf(scriptname, sizeof scriptname, "%s" SLASH "%s%s", confbase, name, scriptextension); /* First check if there is a script */ @@ -57,17 +57,13 @@ bool execute_script(const char *name, char **envp) { break; p = q; } - if(!found) { - free(scriptname); + if(!found) return true; - } } else #endif - if(access(scriptname, F_OK)) { - free(scriptname); + if(access(scriptname, F_OK)) return true; - } logger(DEBUG_STATUS, LOG_INFO, "Executing script %s", name); @@ -86,7 +82,6 @@ bool execute_script(const char *name, char **envp) { int status = system(command); free(command); - free(scriptname); /* Unset environment */