check_pkg_fast: check file type
Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
This commit is contained in:
parent
c3835c157a
commit
71da296d01
2 changed files with 13 additions and 4 deletions
|
@ -210,14 +210,25 @@ int check_pkg_fast(alpm_pkg_t *pkg)
|
|||
const alpm_file_t *file = filelist->files + i;
|
||||
struct stat st;
|
||||
const char *path = file->name;
|
||||
size_t plen = strlen(path);
|
||||
|
||||
if(rootlen + 1 + strlen(path) > PATH_MAX) {
|
||||
if(rootlen + 1 + plen > PATH_MAX) {
|
||||
pm_printf(ALPM_LOG_WARNING, _("path too long: %s%s\n"), root, path);
|
||||
continue;
|
||||
}
|
||||
strcpy(filepath + rootlen, path);
|
||||
|
||||
errors += check_file_exists(pkgname, filepath, &st);
|
||||
if(check_file_exists(pkgname, filepath, &st) == 0) {
|
||||
int expect_dir = path[plen - 1] == '/' ? 1 : 0;
|
||||
int is_dir = S_ISDIR(st.st_mode) ? 1 : 0;
|
||||
if(expect_dir != is_dir) {
|
||||
pm_printf(ALPM_LOG_WARNING, _("%s: %s (File type mismatch)\n"),
|
||||
pkgname, filepath);
|
||||
++errors;
|
||||
}
|
||||
} else {
|
||||
++errors;
|
||||
}
|
||||
}
|
||||
|
||||
if(!config->quiet) {
|
||||
|
|
|
@ -10,5 +10,3 @@ self.args = "-Qk"
|
|||
|
||||
self.addrule("PACMAN_RETCODE=1")
|
||||
self.addrule("PACMAN_OUTPUT=warning.*(File type mismatch)")
|
||||
|
||||
self.expectfailure = True
|
||||
|
|
Loading…
Add table
Reference in a new issue