diff -urNad asterisk-1.0.9.dfsg.1/config.c /tmp/dpep.oKwZhH/asterisk-1.0.9.dfsg.1/config.c --- asterisk-1.0.9.dfsg.1/config.c 2005-07-04 21:58:39.000000000 +0300 +++ /tmp/dpep.oKwZhH/asterisk-1.0.9.dfsg.1/config.c 2005-07-04 22:02:01.000000000 +0300 @@ -568,8 +568,10 @@ ast_log(LOG_DEBUG, "Parsing %s\n", fn); else if (option_verbose > 1) ast_verbose("Found\n"); - while(!feof(f)) { + while(!feof(f) && ((ferror(f)) != 0) ) { + /* in the above, when read(2) sets errno to EISDIR, ferror returns 1 */ lineno++; + clearer(f); /* to notice fgets errors. really necessary? */ if (fgets(buf, sizeof(buf), f)) { new_buf = buf; if (comment)