mirror of
https://github.com/moparisthebest/pacman
synced 2024-08-13 17:03:46 -04:00
Check return value of chdir and getcwd
Prevents compiler warnings when building with -D_FORTIFY_SOURCE=2 Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
41724cbcde
commit
5a3aae02fe
@ -556,6 +556,7 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
|
||||
struct archive *archive;
|
||||
struct archive_entry *entry;
|
||||
char cwd[PATH_MAX] = "";
|
||||
int restore_cwd = 0;
|
||||
|
||||
_alpm_log(PM_LOG_DEBUG, "extracting files\n");
|
||||
|
||||
@ -579,11 +580,16 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
|
||||
/* save the cwd so we can restore it later */
|
||||
if(getcwd(cwd, PATH_MAX) == NULL) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not get current working directory\n"));
|
||||
cwd[0] = 0;
|
||||
} else {
|
||||
restore_cwd = 1;
|
||||
}
|
||||
|
||||
/* libarchive requires this for extracting hard links */
|
||||
chdir(handle->root);
|
||||
if(chdir(handle->root) != 0) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not change directory to %s (%s)\n"), handle->root, strerror(errno));
|
||||
ret = -1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* call PROGRESS once with 0 percent, as we sort-of skip that here */
|
||||
if(is_upgrade) {
|
||||
@ -629,9 +635,9 @@ static int commit_single_pkg(pmpkg_t *newpkg, int pkg_current, int pkg_count,
|
||||
}
|
||||
archive_read_finish(archive);
|
||||
|
||||
/* restore the old cwd is we have it */
|
||||
if(strlen(cwd)) {
|
||||
chdir(cwd);
|
||||
/* restore the old cwd if we have it */
|
||||
if(restore_cwd && chdir(cwd) != 0) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not change directory to %s (%s)\n"), cwd, strerror(errno));
|
||||
}
|
||||
|
||||
if(errors) {
|
||||
|
@ -372,8 +372,8 @@ int _alpm_unpack(const char *archive, const char *prefix, alpm_list_t *list, int
|
||||
cleanup:
|
||||
umask(oldmask);
|
||||
archive_read_finish(_archive);
|
||||
if(restore_cwd) {
|
||||
chdir(cwd);
|
||||
if(restore_cwd && chdir(cwd) != 0) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not change directory to %s (%s)\n"), cwd, strerror(errno));
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
@ -542,8 +542,8 @@ int _alpm_run_chroot(const char *root, const char *cmd)
|
||||
}
|
||||
|
||||
cleanup:
|
||||
if(restore_cwd) {
|
||||
chdir(cwd);
|
||||
if(restore_cwd && chdir(cwd) != 0) {
|
||||
_alpm_log(PM_LOG_ERROR, _("could not change directory to %s (%s)\n"), cwd, strerror(errno));
|
||||
}
|
||||
|
||||
return(retval);
|
||||
|
@ -676,6 +676,7 @@ int download_with_xfercommand(const char *url, const char *localpath,
|
||||
struct stat st;
|
||||
char *parsedcmd,*tempcmd;
|
||||
char cwd[PATH_MAX];
|
||||
int restore_cwd = 0;
|
||||
char *destfile, *tempfile, *filename;
|
||||
|
||||
if(!config->xfercommand) {
|
||||
@ -708,8 +709,14 @@ int download_with_xfercommand(const char *url, const char *localpath,
|
||||
parsedcmd = strreplace(tempcmd, "%u", url);
|
||||
free(tempcmd);
|
||||
|
||||
/* save the cwd so we can restore it later */
|
||||
if(getcwd(cwd, PATH_MAX) == NULL) {
|
||||
pm_printf(PM_LOG_ERROR, _("could not get current working directory\n"));
|
||||
} else {
|
||||
restore_cwd = 1;
|
||||
}
|
||||
|
||||
/* cwd to the download directory */
|
||||
getcwd(cwd, PATH_MAX);
|
||||
if(chdir(localpath)) {
|
||||
pm_printf(PM_LOG_WARNING, _("could not chdir to download directory %s\n"), localpath);
|
||||
ret = -1;
|
||||
@ -736,7 +743,11 @@ int download_with_xfercommand(const char *url, const char *localpath,
|
||||
}
|
||||
|
||||
cleanup:
|
||||
chdir(cwd);
|
||||
/* restore the old cwd if we have it */
|
||||
if(restore_cwd && chdir(cwd) != 0) {
|
||||
pm_printf(PM_LOG_ERROR, _("could not change directory to %s (%s)\n"), cwd, strerror(errno));
|
||||
}
|
||||
|
||||
if(ret == -1) {
|
||||
/* hack to let an user the time to cancel a download */
|
||||
sleep(2);
|
||||
|
Loading…
Reference in New Issue
Block a user