commit ce031e9edbda06714eec1e83db6d05ea9230c1d2 from: Stefan Sperling date: Tue Oct 20 21:09:01 2020 UTC use got_path_dirname() in is_bad_symlink_target() ok naddy commit - ed6b5030fc87f1d187b18f724e18beb2212f6104 commit + ce031e9edbda06714eec1e83db6d05ea9230c1d2 blob - 6a24cf54d2c45cf985a0dd535b1ffcc55d464de5 blob + cd71af884a039a30fc8dc6aa6f915db2fe7a1069 --- lib/worktree.c +++ lib/worktree.c @@ -1292,12 +1292,15 @@ is_bad_symlink_target(int *is_bad_symlink, const char * in which the blob object is being installed. */ if (!got_path_is_absolute(target_path)) { - char *abspath; - char *parent = dirname(ondisk_path); - if (parent == NULL) - return got_error_from_errno2("dirname", ondisk_path); - if (asprintf(&abspath, "%s/%s", parent, target_path) == -1) + char *abspath, *parent; + err = got_path_dirname(&parent, ondisk_path); + if (err) + return err; + if (asprintf(&abspath, "%s/%s", parent, target_path) == -1) { + free(parent); return got_error_from_errno("asprintf"); + } + free(parent); if (strlen(abspath) >= sizeof(canonpath)) { err = got_error_path(abspath, GOT_ERR_BAD_PATH); free(abspath);