X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Faix-device.c;h=e02c98dc4cd647597d0dfe20c760b4ea1c40e385;hb=dc01dd60affb4688453f8b7204af66246f0850db;hp=55b2f306dd80ae0a0d492d0bed2fb37449b856c1;hpb=6dd65238a1b203b76dee8cbe09d208b450b0f68c;p=pciutils.git diff --git a/lib/aix-device.c b/lib/aix-device.c index 55b2f30..e02c98d 100644 --- a/lib/aix-device.c +++ b/lib/aix-device.c @@ -207,7 +207,7 @@ aix_scan(struct pci_access *a) int bus_number; byte busmap[256]; - bzero(busmap, sizeof(busmap)); + memset(busmap, 0, sizeof(busmap)); for (i = 0; i < pci_bus_count; i++) { bus_number = pci_buses[i].bus_number; @@ -222,8 +222,12 @@ static int aix_read(struct pci_dev *d, int pos, byte *buf, int len) { struct mdio mdio; - int fd = aix_bus_open(d->access, d->bus); + int fd; + if (pos + len > 256) + return 0; + + fd = aix_bus_open(d->access, d->bus); mdio.md_addr = (ulong) pos; mdio.md_size = len; mdio.md_incr = MV_BYTE; @@ -232,7 +236,7 @@ aix_read(struct pci_dev *d, int pos, byte *buf, int len) if (ioctl(fd, MIOPCFGET, &mdio) < 0) d->access->error("aix_read: ioctl(MIOPCFGET) failed"); - + return 1; } @@ -240,8 +244,12 @@ static int aix_write(struct pci_dev *d, int pos, byte *buf, int len) { struct mdio mdio; - int fd = aix_bus_open(d->access, d->bus); + int fd; + + if (pos + len > 256) + return 0; + fd = aix_bus_open(d->access, d->bus); mdio.md_addr = (ulong) pos; mdio.md_size = len; mdio.md_incr = MV_BYTE;