302-v4.20-0001-brcmfmac-fix-wrong-strnchr-usage.patch 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. From cb18e2e9ec71d42409a51b83546686c609780dde Mon Sep 17 00:00:00 2001
  2. From: Rasmus Villemoes <[email protected]>
  3. Date: Wed, 22 Aug 2018 15:22:15 +0200
  4. Subject: [PATCH] brcmfmac: fix wrong strnchr usage
  5. strnchr takes arguments in the order of its name: string, max bytes to
  6. read, character to search for. Here we're passing '\n' aka 10 as the
  7. buffer size, and searching for sizeof(buf) aka BRCMF_DCMD_SMLEN aka
  8. 256 (aka '\0', since it's implicitly converted to char) within those 10
  9. bytes.
  10. Just interchanging the last two arguments would still leave a bug,
  11. because if we've been successful once, there are not sizeof(buf)
  12. characters left after the new value of p.
  13. Since clmver is immediately afterwards passed as a %s argument, I assume
  14. that it is actually a properly nul-terminated string. For that case, we
  15. have strreplace().
  16. Signed-off-by: Rasmus Villemoes <[email protected]>
  17. Signed-off-by: Kalle Valo <[email protected]>
  18. ---
  19. drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 4 +---
  20. 1 file changed, 1 insertion(+), 3 deletions(-)
  21. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
  22. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
  23. @@ -296,9 +296,7 @@ int brcmf_c_preinit_dcmds(struct brcmf_i
  24. /* Replace all newline/linefeed characters with space
  25. * character
  26. */
  27. - ptr = clmver;
  28. - while ((ptr = strnchr(ptr, '\n', sizeof(buf))) != NULL)
  29. - *ptr = ' ';
  30. + strreplace(clmver, '\n', ' ');
  31. brcmf_dbg(INFO, "CLM version = %s\n", clmver);
  32. }