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 (2146B)


  1. From b7a6ea17d3ba3a271b475da6f8a419e55ffb7310 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 | 6 +++---
  7. lib/sysfs.c | 2 +-
  8. ls-kernel.c | 2 +-
  9. 3 files changed, 5 insertions(+), 5 deletions(-)
  10. diff --git a/lib/dump.c b/lib/dump.c
  11. index 59cf7ed..778d2ec 100644
  12. --- a/lib/dump.c
  13. +++ b/lib/dump.c
  14. @@ -60,7 +60,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. @@ -79,8 +79,8 @@ 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. + if (dump_validate(buf, "##:##.# ") && sscanf(buf, "%x:%x.%u", &bn, &dn, &fn) == 3 ||
  29. + dump_validate(buf, "####:##:##.# ") && sscanf(buf, "%x:%x:%x.%u", &mn, &bn, &dn, &fn) == 4)
  30. {
  31. dev = pci_get_dev(a, mn, bn, dn, fn);
  32. dump_alloc_data(dev, 256);
  33. diff --git a/lib/sysfs.c b/lib/sysfs.c
  34. index fb64241..df39b36 100644
  35. --- a/lib/sysfs.c
  36. +++ b/lib/sysfs.c
  37. @@ -212,7 +212,7 @@ static void sysfs_scan(struct pci_access *a)
  38. continue;
  39. d = pci_alloc_dev(a);
  40. - if (sscanf(entry->d_name, "%x:%x:%x.%d", &dom, &bus, &dev, &func) < 4)
  41. + if (sscanf(entry->d_name, "%x:%x:%x.%u", &dom, &bus, &dev, &func) < 4)
  42. a->error("sysfs_scan: Couldn't parse entry name %s", entry->d_name);
  43. /* Ensure kernel provided domain that fits in a signed integer */
  44. diff --git a/ls-kernel.c b/ls-kernel.c
  45. index ecacd0e..4199402 100644
  46. --- a/ls-kernel.c
  47. +++ b/ls-kernel.c
  48. @@ -156,7 +156,7 @@ show_kernel_init(void)
  49. *c++ = 0;
  50. e = xmalloc(sizeof(*e) + strlen(line));
  51. - if (sscanf(c, "%i%i%i%i%i%i",
  52. + if (sscanf(c, "%u%u%u%u%u%u",
  53. &e->vendor, &e->device,
  54. &e->subvendor, &e->subdevice,
  55. &e->class, &e->class_mask) != 6)
  56. --
  57. 2.28.0