Use getcwd() instead of get_current_dir_name().
[tinc] / src / conf.c
index 997a05e..1c250d7 100644 (file)
@@ -485,8 +485,9 @@ static void disable_old_keys(const char *filename) {
 
 FILE *ask_and_open(const char *filename, const char *what) {
        FILE *r;
-       char *directory;
+       char directory[PATH_MAX];
        char line[PATH_MAX];
+       char abspath[PATH_MAX];
        const char *fn;
 
        /* Check stdin and stdout */
@@ -520,12 +521,9 @@ FILE *ask_and_open(const char *filename, const char *what) {
        if(fn[0] != '/') {
 #endif
                /* The directory is a relative path or a filename. */
-               char *p;
-
-               directory = get_current_dir_name();
-               xasprintf(&p, "%s/%s", directory, fn);
-               free(directory);
-               fn = p;
+               getcwd(directory, sizeof directory);
+               snprintf(abspath, sizeof abspath, "%s/%s", directory, fn);
+               fn = abspath;
        }
 
        umask(0077);                            /* Disallow everything for group and other */