Patch dla mfs.spec
Jakub Bogusz
qboosh at pld-linux.org
Thu Mar 7 06:31:40 CET 2013
On Wed, Mar 06, 2013 at 10:38:06PM +0100, Bartlomiej Zimon wrote:
> Dnia 5 marca 2013 10:01 Paweł Kośka <pawel w viop.pl> napisał(a):
>
> > W dniu 5 marca 2013 07:02 użytkownik Jakub Bogusz
> > <qboosh w pld-linux.org> napisał:
> > > On Mon, Mar 04, 2013 at 02:14:45PM +0100, Paweł Kośka wrote:
> >
> > >> wiesza się na:
> > >>
> > >> [root w pavetta pld]# LANG=C poldek -v --noask -s packages/RPMS/
> > >> --mkidxz
> > >> Creating pndir index of /home/services/PLD/pld/packages/RPMS/ (type=dir)...
> > >> Loading [dir]/home/services/PLD/pld/packages/RPMS/...
> > >> Writing /home/services/PLD/pld/packages/RPMS/packages.ndir.gz...
> > >
> > > Jak to wiesza?
> > > Co pokazuje strace?
> > > Przy EPERM/EACCESS poldek nie powinien się wieszać, tylko zakończyć działanie.
> > > Jeśli jest inaczej, to błąd.
> >
>
> Mozna to jakos zreprodukowac bez zabawy w mfs ?
W strace wygląda to tak:
[...]
935. write(1, "Writing /home/services/PLD/RPMS/"..., 52) = 52
936. stat("/home/services/PLD/RPMS/packages.ndir.gz", 0x7fff804cb1a0) = -1 ENOENT (No such file or directory)
937. open("/home/services/PLD/RPMS/packages.ndir.gz.tmpTaxCCA", O_RDWR|O_CREAT|O_EXCL, 0600) = 3
938. fchmod(3, 0600) = 0
939. rmdir("/home/services/PLD/RPMS/packages.ndir.gz.tmpTaxCCA") = -1 ENOTDIR (Not a directory)
^^^^^ po co to BTW??? później też powtarza się kilka razy
940. unlink("/home/services/PLD/RPMS/packages.ndir.gz.tmpTaxCCA") = 0
[...]
1198. dup(3) = 6
[...]
1208. open("/home/services/PLD/RPMS/packages.ndir.gz", O_RDWR|O_CREAT|O_TRUNC, 0666) = 3
[...]
1213. dup(3) = 7
[...]
1219. lseek(6, 0, SEEK_SET) = 0
1220. lseek(7, 0, SEEK_END) = 68
1221. read(6, 0x7fff804c70c0, 16384) = -1 EPERM (Operation not permitted)
1222. write(7, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4294967295) = -1 EFAULT (Bad address)
1223. read(6, 0x7fff804c70c0, 16384) = -1 EPERM (Operation not permitted)
1224. write(7, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4294967295) = -1 EFAULT (Bad address)
[...i tak do ...]
Czyli dwa błędy, albo nawet trzy błędy:
- brak sprawdzenia statusu read()
- użycie informacji o błędzie (-1) jako liczby bajtów do zapisu
- brak sprawdzenia statusu write()
--
Jakub Bogusz http://qboosh.pl/
More information about the pld-devel-pl
mailing list