64-bit stat (or not) in 32-bit Fedora binaries

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



XFS recently defaulted to allowing > 32 bit inode numbers, and btrfs can let inode numbers creep past 2^32 as well.

While most applications don't care one bit about st_ino returned from a stat() call, the sad fact is that you'll get EOVERFLOW from stat32 if the inode number is too big to fit in 32 bits, even if you just wanted to get the file size.

I have a script (http://sandeen.net/misc/summarise_stat.pl) which Greg Banks wrote; it can check a path or list of filenames for binaries which contain non-64bit-safe stat calls.  A quick look over my F18 install finds the situation to be only slightly in favor of executables using 64-bit variants:

# ./summarize-stat.pl /usr
  270229 91.5% are scripts (shell, perl, whatever)
   22633  7.7% don't use any stat() family calls at all
     913  0.3% use 32-bit stat() family interfaces only
    1335  0.5% use 64-bit stat64() family interfaces only
      73  0.0% use both 32-bit and 64-bit stat() family interfaces

and it's not just weird obscure packages:

# ./summarize-stat.pl `rpm -ql sendmail`
     69 78.4% are scripts (shell, perl, whatever)
      2  2.3% don't use any stat() family calls at all
     17 19.3% use 32-bit stat() family interfaces only

Anyway, if you want to check your package(s) and maybe make them 64-bit-stat safe, the perl script above might help.  It's more than just -DFILE_OFFSET_BITS=64, since you'll need to be sure not to overflow any large values you get back from stat64 etc.

Might be nice to get out ahead of this before, say, btrfs comes into wide use.  I don't know if there could be any more of a formal effort in this direction?

Thanks,
-Eric

p.s. here's a list of what was on my system that turned up hits:

advancecomp-1.15-17.fc18.src.rpm
alsa-tools-1.0.26.1-1.fc18.src.rpm
at-3.1.13-10.fc18.src.rpm
bc-1.06.95-7.fc18.src.rpm
bluez-4.101-6.fc18.src.rpm
brltty-4.3-12.fc18.src.rpm
ccache-3.1.9-1.fc18.src.rpm
cdparanoia-10.2-12.fc18.src.rpm
cdrdao-1.2.3-16.fc18.src.rpm
checkpolicy-2.1.11-2.fc18.src.rpm
crash-6.0.8-2.fc18.src.rpm
cronie-1.4.10-1.fc18.src.rpm
cscope-15.8-3.fc18.src.rpm
ctags-5.8-9.fc18.src.rpm
dbus-1.6.8-2.fc18.src.rpm
dbus-glib-0.100-1.fc18.src.rpm
dconf-0.14.1-3.fc18.src.rpm
deltarpm-3.6-0.11.20110223git.fc18.src.rpm
diffstat-1.55-2.fc18.src.rpm
doxygen-1.8.3-3.fc18.src.rpm
dvd+rw-tools-7.1-10.fc18.src.rpm
eclipse-4.2.2-0.1.git20121217.fc18.src.rpm
ed-1.6-2.fc18.src.rpm
elfutils-0.155-1.fc18.src.rpm
enca-1.13-4.fc18.src.rpm
espeak-1.46.02-6.fc18.src.rpm
exempi-2.2.0-5.fc18.src.rpm
expat-2.1.0-4.fc18.src.rpm
fakeroot-1.12.4-5.fc18.src.rpm
file-roller-3.6.3-1.fc18.src.rpm
finger-0.17-47.fc18.src.rpm
fontconfig-2.10.2-1.fc18.src.rpm
fuse-2.9.2-1.fc18.src.rpm
gcalctool-6.6.2-1.fc18.src.rpm
GConf2-3.2.5-3.fc18.src.rpm
glibc-2.16-28.fc18.src.rpm
gnome-bluetooth-3.6.1-2.fc18.src.rpm
gnome-font-viewer-3.6.2-1.fc18.src.rpm
gnome-keyring-3.6.2-3.fc18.src.rpm
gnome-session-3.6.2-3.fc18.src.rpm
gnome-system-monitor-3.6.1-3.fc18.src.rpm
gpm-1.20.6-26.fc18.src.rpm
hostname-3.11-4.fc18.src.rpm
hplip-3.12.11-1.fc18.src.rpm
indent-2.2.11-7.fc18.src.rpm
iok-2.1.3-2.fc18.src.rpm
irda-utils-0.9.18-16.fc18.src.rpm
isdn4k-utils-3.2-88.fc18.src.rpm
js-1.8.5-12.fc18.src.rpm
kbd-1.15.3-6.fc18.src.rpm
krb5-1.10.3-5.fc18.src.rpm
libbluray-0.2.3-1.fc18.src.rpm
libdb-5.3.21-3.fc18.src.rpm
libiptcdata-1.0.4-8.fc18.src.rpm
libplist-1.8-5.fc18.src.rpm
lrzsz-0.12.20-31.fc18.src.rpm
ltrace-0.7.2-1.fc18.src.rpm
mailx-12.5-7.fc18.src.rpm
minicom-2.5-8.fc17.src.rpm
mpage-2.5.6-11.fc18.src.rpm
nautilus-3.6.3-4.fc18.src.rpm
ncftp-3.2.5-4.fc18.src.rpm
net-tools-2.0-0.2.20121106git.fc18.src.rpm
newt-0.52.14-3.fc18.src.rpm
nmap-6.01-9.fc18.src.rpm
obex-data-server-0.4.6-4.fc18.src.rpm
opencv-2.4.3-3.fc18.src.rpm
opensp-1.5.2-15.fc18.src.rpm
openssl-1.0.1c-7.fc18.src.rpm
oprofile-0.9.8-3.fc18.src.rpm
optipng-0.7.4-1.fc18.src.rpm
pam_krb5-2.4.1-1.fc18.src.rpm
pam_pkcs11-0.6.2-9.fc18.src.rpm
php-5.4.11-1.fc18.src.rpm
pinentry-0.8.1-8.fc18.src.rpm
pinfo-0.6.10-6.fc18.src.rpm
policycoreutils-2.1.13-55.fc18.src.rpm
postfix-2.9.6-1.fc18.src.rpm
procps-ng-3.3.3-2.20120807git.fc18.src.rpm
qt-4.8.4-11.fc18.src.rpm
rarian-0.8.1-8.fc18.src.rpm
recordmydesktop-0.3.8.1-8.fc18.src.rpm
sane-backends-1.0.23-4.fc18.src.rpm
sendmail-8.14.6-2.fc18.src.rpm
shared-mime-info-1.0-7.fc18.src.rpm
socat-1.7.2.1-2.fc18.src.rpm
spice-vdagent-0.12.1-1.fc18.src.rpm
strace-4.7-2.fc18.src.rpm
stunnel-4.53-2.fc18.src.rpm
sudo-1.8.6p3-2.fc18.src.rpm
swig-2.0.8-1.fc18.src.rpm
sysprof-1.2.0-1.fc18.src.rpm
systemtap-2.0-6.fc18.src.rpm
sysvinit-2.88-9.dsf.fc18.src.rpm
texlive-2012-16.20130205_r29034.fc18.src.rpm
totem-3.6.3-2.fc18.src.rpm
usermode-1.111-1.fc18.src.rpm
valgrind-3.8.1-4.fc18.src.rpm
virtuoso-opensource-6.1.6-1.fc18.src.rpm
virt-viewer-0.5.4-3.fc18.src.rpm
wavpack-4.60.1-4.fc18.src.rpm
which-2.20-4.fc18.src.rpm
xdg-user-dirs-0.14-3.fc18.src.rpm
xorg-x11-server-1.13.2-2.fc18.src.rpm
xorg-x11-xkb-utils-7.7-4.fc18.src.rpm
-- 
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/devel



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux