--- OLD/setup.c Thu Jan 1 00:00:00 1970 +++ NEW/setup.c Thu Jan 1 00:00:00 1970 @@ -150,29 +150,32 @@ */ static int is_git_directory(const char *suspect) { - char path[PATH_MAX]; - size_t len = strlen(suspect); + char *path; - strcpy(path, suspect); - if (getenv(DB_ENVIRONMENT)) { - if (access(getenv(DB_ENVIRONMENT), X_OK)) - return 0; - } - else { - strcpy(path + len, "/objects"); - if (access(path, X_OK)) - return 0; - } - - strcpy(path + len, "/refs"); - if (access(path, X_OK)) - return 0; - - strcpy(path + len, "/HEAD"); - if (validate_headref(path)) - return 0; - - return 1; + if (getenv(DB_ENVIRONMENT)) + { if (access(getenv(DB_ENVIRONMENT),X_OK)) return(0); + } + else + { asprintf(&path,"%s/objects",suspect); + if (access(path,X_OK)) + { free(path); + return(0); + } + free(path); + } + asprintf(&path,"%s/refs",suspect); + if (access(path,X_OK)) + { free(path); + return(0); + } + free(path); + asprintf(&path,"%s/HEAD",suspect); + if (validate_headref(path)) + { free(path); + return(0); + } + free(path); + return(1); } int is_inside_git_dir(void)