brcmfmac: fix wrong strnchr usage
authorRasmus Villemoes <linux@rasmusvillemoes.dk>
Wed, 22 Aug 2018 13:22:15 +0000 (15:22 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 31 Aug 2018 15:48:02 +0000 (18:48 +0300)
strnchr takes arguments in the order of its name: string, max bytes to
read, character to search for. Here we're passing '\n' aka 10 as the
buffer size, and searching for sizeof(buf) aka BRCMF_DCMD_SMLEN aka
256 (aka '\0', since it's implicitly converted to char) within those 10
bytes.

Just interchanging the last two arguments would still leave a bug,
because if we've been successful once, there are not sizeof(buf)
characters left after the new value of p.

Since clmver is immediately afterwards passed as a %s argument, I assume
that it is actually a properly nul-terminated string. For that case, we
have strreplace().

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c

index cd3651069d0c4e5bbe1810b0a91a9e433f27217d..94044a7a602164f830cfb82eebfd5530826d65c2 100644 (file)
@@ -296,9 +296,7 @@ int brcmf_c_preinit_dcmds(struct brcmf_if *ifp)
                /* Replace all newline/linefeed characters with space
                 * character
                 */
-               ptr = clmver;
-               while ((ptr = strnchr(ptr, '\n', sizeof(buf))) != NULL)
-                       *ptr = ' ';
+               strreplace(clmver, '\n', ' ');
 
                brcmf_dbg(INFO, "CLM version = %s\n", clmver);
        }