diff options
author | Jo-Philipp Wich <jo@mein.io> | 2022-01-23 20:33:05 +0100 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2022-01-23 20:58:04 +0100 |
commit | 3f44c42055003797505c579881b1f8e01cc628d4 (patch) | |
tree | 3ccf97f0eaa5d2e73746e500f4fcaabe36b5619e /tests/fuzz | |
parent | 01132db357544327e4934c2b1a5255cd8b2a7c1e (diff) |
lib: rework format string handling
Instead of extracting and forwarding recognized conversion directives
from the user supplied format string, properly parse the format string
into its components and reassemble a canonical representation of the
conversion directive internally before handing it to the libc's sprintf()
implementation.
Also take care of selecting the proper conversion specifiers for signed
and unsigned 64bit integer values to fix broken `%d`, `%i`, `%u`, `%o`,
`%x` and `%X` formats on 32bit systems.
While reworking the format logic, also slightly improve `%s` argument
handling by not duplicate the given value if it already is a string,
which reduces the amount of required heap memory.
Ref: https://bugs.openwrt.org/index.php?do=details&task_id=4234
Ref: https://git.openwrt.org/3d3d03479d5b4a976cf1320d29f4bd4937d5a4ba
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'tests/fuzz')
0 files changed, 0 insertions, 0 deletions