linux-man.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* wcstok(3) code sample
@ 2021-07-12  9:07 Stefan Kanthak
  2021-07-12 16:36 ` Jakub Wilk
  2021-07-25 20:25 ` Alejandro Colomar (man-pages)
  0 siblings, 2 replies; 4+ messages in thread
From: Stefan Kanthak @ 2021-07-12  9:07 UTC (permalink / raw)
  To: mtk.manpages, alx.manpages; +Cc: linux-man

Hi,

the examples section of wcstok(3) shows the following code
which exhibits undefined behaviour and typically segfaults:

<https://man7.org/linux/man-pages/man3/wcstok.3.html#EXAMPLES>

|  wchar_t *wcs = ...;
|  wchar_t *token;
|  wchar_t *state;
|  for (token = wcstok(wcs, " \t\n", &state);
|       token != NULL;
|       token = wcstok(NULL, " \t\n", &state)) {
|       ...
|  }

The string literal pointed to by wcs is read-only, and an
attempt to modify a string literal results in undefined
behaviour; wcstok() but writes NULs into its input string.

FIX: replace the first line with either

|  wchar_t *wcs = strdup(...);

     or

|  wchar_t wcs[] = ...;

regards
Stefan

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-07-26 13:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-12  9:07 wcstok(3) code sample Stefan Kanthak
2021-07-12 16:36 ` Jakub Wilk
2021-07-25 20:25 ` Alejandro Colomar (man-pages)
2021-07-26 13:13   ` Stefan Kanthak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).