logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git

0002-Fix-pointer-type-of-sscanf-arguments.patch (3087B)


  1. From 1419e1101d2420db610a98a83bd41f0535ed70cb Mon Sep 17 00:00:00 2001
  2. From: Michael Forney <mforney@mforney.org>
  3. Date: Sun, 16 Aug 2020 16:23:10 -0700
  4. Subject: [PATCH] Fix pointer type of sscanf arguments
  5. ---
  6. lib/dump.c | 10 +++++-----
  7. lib/sysfs.c | 4 ++--
  8. ls-kernel.c | 2 +-
  9. 3 files changed, 8 insertions(+), 8 deletions(-)
  10. diff --git a/lib/dump.c b/lib/dump.c
  11. index 00ebc9e..59af0a1 100644
  12. --- a/lib/dump.c
  13. +++ b/lib/dump.c
  14. @@ -62,7 +62,7 @@ dump_init(struct pci_access *a)
  15. FILE *f;
  16. char buf[256];
  17. struct pci_dev *dev = NULL;
  18. - int len, mn, bn, dn, fn, i, j;
  19. + unsigned int len, mn, bn, dn, fn, i, j;
  20. if (!name)
  21. a->error("dump: File name not given.");
  22. @@ -81,10 +81,10 @@ dump_init(struct pci_access *a)
  23. *z-- = 0;
  24. len = z - buf + 1;
  25. mn = 0;
  26. - if (dump_validate(buf, "##:##.# ") && sscanf(buf, "%x:%x.%d", &bn, &dn, &fn) == 3 ||
  27. - dump_validate(buf, "####:##:##.# ") && sscanf(buf, "%x:%x:%x.%d", &mn, &bn, &dn, &fn) == 4 ||
  28. - dump_validate(buf, "#####:##:##.# ") && sscanf(buf, "%x:%x:%x.%d", &mn, &bn, &dn, &fn) == 4 ||
  29. - dump_validate(buf, "######:##:##.# ") && sscanf(buf, "%x:%x:%x.%d", &mn, &bn, &dn, &fn) == 4)
  30. + if (dump_validate(buf, "##:##.# ") && sscanf(buf, "%x:%x.%u", &bn, &dn, &fn) == 3 ||
  31. + dump_validate(buf, "####:##:##.# ") && sscanf(buf, "%x:%x:%x.%u", &mn, &bn, &dn, &fn) == 4 ||
  32. + dump_validate(buf, "#####:##:##.# ") && sscanf(buf, "%x:%x:%x.%u", &mn, &bn, &dn, &fn) == 4 ||
  33. + dump_validate(buf, "######:##:##.# ") && sscanf(buf, "%x:%x:%x.%u", &mn, &bn, &dn, &fn) == 4)
  34. {
  35. dev = pci_get_dev(a, mn, bn, dn, fn);
  36. dump_alloc_data(dev, 256);
  37. diff --git a/lib/sysfs.c b/lib/sysfs.c
  38. index 7dedc0b..4f5c003 100644
  39. --- a/lib/sysfs.c
  40. +++ b/lib/sysfs.c
  41. @@ -257,7 +257,7 @@ static void sysfs_scan(struct pci_access *a)
  42. continue;
  43. d = pci_alloc_dev(a);
  44. - if (sscanf(entry->d_name, "%x:%x:%x.%d", &dom, &bus, &dev, &func) < 4)
  45. + if (sscanf(entry->d_name, "%x:%x:%x.%u", &dom, &bus, &dev, &func) < 4)
  46. a->error("sysfs_scan: Couldn't parse entry name %s", entry->d_name);
  47. /* Ensure kernel provided domain that fits in a signed integer */
  48. @@ -398,7 +398,7 @@ sysfs_fill_info(struct pci_dev *d, unsigned int flags)
  49. name = name ? name+1 : name;
  50. parent = NULL;
  51. - if (name && sscanf(name, "%x:%x:%x.%d", &domain, &bus, &dev, &func) == 4 && domain <= 0x7fffffff)
  52. + if (name && sscanf(name, "%x:%x:%x.%u", &domain, &bus, &dev, &func) == 4 && domain <= 0x7fffffff)
  53. for (parent = d->access->devices; parent; parent = parent->next)
  54. if (parent->domain == (int)domain && parent->bus == bus && parent->dev == dev && parent->func == func)
  55. break;
  56. diff --git a/ls-kernel.c b/ls-kernel.c
  57. index c939c52..13b29f7 100644
  58. --- a/ls-kernel.c
  59. +++ b/ls-kernel.c
  60. @@ -157,7 +157,7 @@ show_kernel_init(void)
  61. *c++ = 0;
  62. e = xmalloc(sizeof(*e) + strlen(line));
  63. - if (sscanf(c, "%i%i%i%i%i%i",
  64. + if (sscanf(c, "%u%u%u%u%u%u",
  65. &e->vendor, &e->device,
  66. &e->subvendor, &e->subdevice,
  67. &e->class, &e->class_mask) != 6)
  68. --
  69. 2.49.0