X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fscript.c;h=55473b1f95e6ea595fe1664740aceefee8684e6e;hb=cda5a477c8138226d184a176256d559971b4f7ed;hp=9a43d53188a6b0149d492aa35e37043edc375771;hpb=57991e264202ad83e2c1b663777b358bf5573652;p=tinc diff --git a/src/script.c b/src/script.c index 9a43d531..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 */ @@ -49,7 +49,7 @@ bool execute_script(const char *name, char **envp) { if(q) { memcpy(ext, p, q - p); ext[q - p] = 0; - *q++; + q++; } else { strcpy(ext, p); } @@ -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 */