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