X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fconf.c;h=f9af6851f9c3f39968d435f3591a6f59aa818825;hp=11a9ca08633c09414dc4b46752d76ce03d1a0227;hb=bf4e969899bb6cdeb05570d96a567c2833ac83bd;hpb=8ccb1ede92fbd55481fa2317c2450bb9dd94a180 diff --git a/src/conf.c b/src/conf.c index 11a9ca08..f9af6851 100644 --- a/src/conf.c +++ b/src/conf.c @@ -19,7 +19,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: conf.c,v 1.9.4.27 2000/11/30 00:24:13 zarq Exp $ + $Id: conf.c,v 1.9.4.29 2000/11/30 22:32:14 zarq Exp $ */ #include "config.h" @@ -158,6 +158,7 @@ char *readline(FILE *fp) maxlen = size; line = xmalloc(size); idx = line; + *idx = 0; for(;;) { errno = 0; @@ -216,7 +217,13 @@ cp err = -1; break; } - + + if(feof(fp)) + { + err = 0; + break; + } + lineno++; if((p = strtok(line, "\t =")) == NULL) @@ -231,23 +238,23 @@ cp if(!hazahaza[i].name) { - syslog(LOG_ERR, _("Invalid variable name on line %d while reading config file %s"), - lineno, fname); + syslog(LOG_ERR, _("Invalid variable name `%s' on line %d while reading config file %s"), + p, lineno, fname); break; } if(((q = strtok(NULL, "\t\n\r =")) == NULL) || q[0] == '#') { - fprintf(stderr, _("No value for variable on line %d while reading config file %s"), - lineno, fname); + fprintf(stderr, _("No value for variable `%s' on line %d while reading config file %s"), + hazahaza[i].name, lineno, fname); break; } cfg = add_config_val(base, hazahaza[i].argtype, q); if(cfg == NULL) { - fprintf(stderr, _("Invalid value for variable on line %d while reading config file %s"), - lineno, fname); + fprintf(stderr, _("Invalid value for variable `%s' on line %d while reading config file %s"), + hazahaza[i].name, lineno, fname); break; } @@ -356,12 +363,14 @@ int is_safe_path(const char *file) } *p = '/'; - if(stat(file, &s) < 0) + if(stat(file, &s) < 0 && errno != ENOENT) { fprintf(stderr, _("Couldn't stat `%s': %m\n"), file); return 0; } + if(errno == ENOENT) + return 1; if(s.st_uid != geteuid()) { fprintf(stderr, _("`%s' is owned by UID %d instead of %d.\n"),