Bug 34085

Summary: clamscan не видит файлов и каталогов, имеющих inode >2^32
Product: Sisyphus Reporter: Vitaly Lipatov <lav>
Component: clamavAssignee: Sergey Y. Afonin <asy>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: asy, evg, omarandemad
Version: unstable   
Hardware: all   
OS: Linux   

Description Vitaly Lipatov 2017-10-28 18:41:23 MSK
На система ALT p8 32 бит имеется задача сканировать рекурсивно каталог /var/ftp/pvt/Windows на наличие вирусов с помощью clamscan:

# clamscan --include "exe" -r -i /var/ftp/pvt/Windows

Проблема в том, что clamscan выдает:

----------- SCAN SUMMARY -----------
Known viruses: 2903579
Engine version: 0.98-exp
Scanned directories: 1
Scanned files: 0
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 30.321 sec (0 m 30 s)

Но на самом деле каталог отнюдь не пуст и содержит много вложенных каталогов с файлами, требующих проверки.
Comment 1 Vitaly Lipatov 2017-10-28 21:06:21 MSK
Ошибка, выявленная strace:
openat(AT_FDCWD, "/var/ftp/pvt/Windows", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 4
getdents(4, 0x8fcce68, 32768)           = -1 EOVERFLOW (Value too large for defined data type)

Нужно попросить clamscan использовать getdents64 путём сборки с  -D_FILE_OFFSET_BITS=64

точнее, добавить AC_SYS_LARGEFILE в configure.ac
https://bugzilla.altlinux.org/show_bug.cgi?id=28214#c4
Comment 2 Sergey Y. Afonin 2017-10-29 18:58:17 MSK
(In reply to comment #1)

> Нужно попросить clamscan использовать getdents64 путём сборки с 
> -D_FILE_OFFSET_BITS=64
> 
> точнее, добавить AC_SYS_LARGEFILE в configure.ac
> https://bugzilla.altlinux.org/show_bug.cgi?id=28214#c4

В http://git.altlinux.org/tasks/192637/build/100/i586/log сейчас есть такое:

checking for _FILE_OFFSET_BITS value needed for large files... 64

Но проверить мне негде. В p8 из этого задания, вроде как, ставится.
Comment 3 Vitaly Lipatov 2017-10-29 19:39:17 MSK
(В ответ на комментарий №2)
> (In reply to comment #1)
> 
> > Нужно попросить clamscan использовать getdents64 путём сборки с 
> > -D_FILE_OFFSET_BITS=64
> > 
> > точнее, добавить AC_SYS_LARGEFILE в configure.ac
> > https://bugzilla.altlinux.org/show_bug.cgi?id=28214#c4
> 
> В http://git.altlinux.org/tasks/192637/build/100/i586/log сейчас есть такое:
> 
> checking for _FILE_OFFSET_BITS value needed for large files... 64
> 
> Но проверить мне негде. В p8 из этого задания, вроде как, ставится.
Это не проблема. 
Я проверил, заработало. Спасибо! Жду в Сизифе и сможете в p8?

...
----------- SCAN SUMMARY -----------
Known viruses: 6326557
Engine version: 0.99.2
Scanned directories: 1
Scanned files: 6
Comment 4 Repository Robot 2017-10-29 19:48:48 MSK
clamav-0.99.2-alt4 -> sisyphus:

Sun Oct 29 2017 Sergey Y. Afonin <asy@altlinux.ru> 0.99.2-alt4
- used AC_SYS_LARGEFILE (ALT #34085)
- removed "Packager" field
- corrected "License" field