mirror of
https://github.com/xcat2/xNBA.git
synced 2024-11-29 04:39:42 +00:00
[base16] Ensure base16_encode() always terminates its result string
base16_encode() will fail to generate a terminating NUL if the length of the raw data is zero, since the loop calling sprintf() will never execute. Fix by explicitly terminating the result with a NUL. Reported-by: Marin Hannache <git@mareo.fr> Debugged-by: Marin Hannache <git@mareo.fr> Tested-by: Marin Hannache <git@mareo.fr> Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
parent
6ad05aa319
commit
49d14f0d8d
@ -51,10 +51,14 @@ void base16_encode ( const uint8_t *raw, size_t len, char *encoded ) {
|
||||
char *encoded_bytes = encoded;
|
||||
size_t remaining = len;
|
||||
|
||||
/* Encode each byte */
|
||||
for ( ; remaining-- ; encoded_bytes += 2 ) {
|
||||
sprintf ( encoded_bytes, "%02x", *(raw_bytes++) );
|
||||
}
|
||||
|
||||
/* Ensure terminating NUL exists even if length was zero */
|
||||
*encoded_bytes = '\0';
|
||||
|
||||
DBG ( "Base16-encoded to \"%s\":\n", encoded );
|
||||
DBG_HDA ( 0, raw, len );
|
||||
assert ( strlen ( encoded ) == base16_encoded_len ( len ) );
|
||||
|
Loading…
Reference in New Issue
Block a user