Re: [PATCH net-next v3] tipc: replace deprecated strcpy with strscpy in tipc_bearer_get_name()
David Laight <[email protected]>
| Newsgroups | gmane.linux.network,gmane.network.tipc.general,gmane.linux.kernel |
|---|---|
| Message-ID | <20260817152350.573c4eff@pumpkin> |
On Mon, 17 Aug 2026 07:53:53 +0000 Tung Quang Nguyen <[email protected]> wrote: > >Subject: Re: [PATCH net-next v3] tipc: replace deprecated strcpy with strscpy in > >tipc_bearer_get_name() > > > >> net tree: > >> https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git > >> net-next tree: > >> https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git > > > >Thank you. I tried the correct net-next tree. The same patch applied > >successfully here also as shown below. > > > ><path of the linux tree>/net-next$ ls > >arch certs CREDITS Documentation fs init ipc Kconfig lib > >MAINTAINERS mm README samples security tools virt > >block COPYING crypto drivers include io_uring Kbuild kernel LICENSES > >Makefile net rust scripts sound usr > ><path of the linux tree>/net-next$ git remote -v > >origin https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git > >(fetch) > >origin https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git > >(push) > ><path of the linux tree>/net-next$ git am ../../patches/v3-0001-tipc-replace- > >deprecated-strcpy-with-strscpy-in-ti.patch > >Applying: tipc: replace deprecated strcpy with strscpy in > >tipc_bearer_get_name() <path of the linux tree>/net-next$ git branch > >* main > ><path of the linux tree>/net-next$ > > > >Am I missing something? > > I see that your patch was applied again successfully after failure. > There is one feedback from AI review that I see valid: > [...] > > @@ -209,7 +209,7 @@ int tipc_bearer_get_name(struct net *net, char *name, u32 bearer_id) > > if (!b) > > return -EINVAL; > > > > - strcpy(name, b->name); > > + strscpy(name, b->name, TIPC_MAX_BEARER_NAME); > This isn't a bug, but the destination capacity is now hard-coded in the > body while the interface says nothing about it. The declaration in > net/tipc/bearer.h is still: > int tipc_bearer_get_name(struct net *net, char *name, u32 bearer_id); > and the comment directly above the implementation only says: > * @name: a pointer to the buffer where the name will be stored. > Should the TIPC_MAX_BEARER_NAME requirement be spelled out in the comment > or in the prototype, so that the interface and the body agree? > In the current tree there is no behavioural change: the only caller is > __tipc_nl_add_monitor() in net/tipc/monitor.c, which declares > char bearer_name[TIPC_MAX_BEARER_NAME], and the source is > char name[TIPC_MAX_BEARER_NAME] in struct tipc_bearer, so the copy can > neither truncate nor overflow. > The strscpy() return value is also discarded, so a future caller passing a > smaller buffer would get a silently truncated name plus a return of 0. > Would passing a size_t len from the caller (sizeof(bearer_name)) and > forwarding strscpy()'s -E2BIG through the existing int return be preferable > to a hard-coded bound? > [...] > > Please update your patch and send the new version after Aug 31st. (Because net-next is closed now) > One 'solution' to the non-problem is to embed the array in a struct. Although (IIRC) this is a uapi constant so that may not be completely possible. Otherwise I'd ignore the AI review. David