Hi,
On Feb 27 2018 15:12, Jaejoong Kim wrote:
We can see below explanation in 'Documentation/filesystems
/sysfs.txt'[1]:
```
- show() methods should return the number of bytes printed into the
buffer. This is the return value of scnprintf().
- show() must not use snprintf() when formatting the value to be
returned to user space. If you can guarantee that an overflow
will never happen you can use sprintf() otherwise you must use
scnprintf().
```
Actually, 'snprintf()' returns written bytes excluding trailing _null_
byte for end output to strings and we need to use 'scnprintf()'.
Strictly speaking, that is half the truth.
snprintf() does not return the length actually written to the buffer,
but rather to
return the length that it was intended to be written to. So, in case
of the formated
buffer size is much bigger, 'snprintf()' will return formated buffer
size not written bytes.
Please refer to the LWN about snprintf
https://lwn.net/Articles/69419/
I do NOT think the original codes will happen if snprintf() return a
number larger than PAGE_SIZE.
Nevertheless, it is better to use scnprintf () for the show method
because of the snprintf () behavior.
Ah... Exactly. I failed to get your intention, sorry... (I should have
read your commit comment carefully...)
Thanks
Takashi Sakamoto
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel