diff -ru bird-1.3.6/sysdep/unix/main.c bird-1.3.6_fix//sysdep/unix/main.c --- bird-1.3.6/sysdep/unix/main.c 2011-10-10 04:57:59.000000000 -0300 +++ bird-1.3.6_fix//sysdep/unix/main.c 2012-03-18 10:50:31.397381192 -0300 @@ -167,12 +167,15 @@ { char full_name[BIRD_FNAME_MAX]; char *cur = filename; + char *dir; int ret; if (*filename != '/') { - snprintf(full_name, sizeof(full_name), "%s/%s", dirname(config_name), filename); + dir = strdup(config_name); + snprintf(full_name, sizeof(full_name), "%s/%s", dirname(dir), filename); full_name[sizeof(full_name)-1] = 0; cur = full_name; + free(dir); } if ((ret = open(cur, O_RDONLY)) == -1)