[Cryptech-Commits] [sw/libhal] branch master updated: Change scanf/printf %hhx format strings to %x, because not every libc supports it.
git at cryptech.is
git at cryptech.is
Wed Nov 14 16:29:30 UTC 2018
This is an automated email from the git hooks/post-receive script.
paul at psgd.org pushed a commit to branch master
in repository sw/libhal.
The following commit(s) were added to refs/heads/master by this push:
new 6de40f1 Change scanf/printf %hhx format strings to %x, because not every libc supports it.
6de40f1 is described below
commit 6de40f118b11fb0229d3899967cc075b5580cf83
Author: Paul Selkirk <paul at psgd.org>
AuthorDate: Wed Nov 14 11:23:27 2018 -0500
Change scanf/printf %hhx format strings to %x, because not every libc supports it.
In particular, the version of newlib distributed by Ubuntu is not
configured with --enable-newlib-io-c99-formats, and now includes guard
code that treats %hhx as an error, rather than silently interpreting it as
%hx. The net effect was to break hal_uuid_parse.
(Ironically, vfprintf.c does not (yet) include this guard code, but it's
probably only a matter of time, and it seemed expedient to change
hal_uuid_format at the same time.)
---
uuid.c | 28 ++++++++++++++++++----------
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/uuid.c b/uuid.c
index 0a4d2d1..dacd031 100644
--- a/uuid.c
+++ b/uuid.c
@@ -71,14 +71,18 @@ hal_error_t hal_uuid_gen(hal_uuid_t *uuid)
hal_error_t hal_uuid_parse(hal_uuid_t *uuid, const char * const string)
{
static const char fmt[]
- = "%2hhx%2hhx%2hhx%2hhx-%2hhx%2hhx-%2hhx%2hhx-%2hhx%2hhx-%2hhx%2hhx%2hhx%2hhx%2hhx%2hhx";
+ = "%2x%2x%2x%2x-%2x%2x-%2x%2x-%2x%2x-%2x%2x%2x%2x%2x%2x";
if (uuid == NULL || string == NULL ||
sscanf(string, fmt,
- uuid->uuid + 0, uuid->uuid + 1, uuid->uuid + 2, uuid->uuid + 3,
- uuid->uuid + 4, uuid->uuid + 5, uuid->uuid + 6, uuid->uuid + 7,
- uuid->uuid + 8, uuid->uuid + 9, uuid->uuid + 10, uuid->uuid + 11,
- uuid->uuid + 12, uuid->uuid + 13, uuid->uuid + 14, uuid->uuid + 15) != 16)
+ (unsigned *)(uuid->uuid + 0), (unsigned *)(uuid->uuid + 1),
+ (unsigned *)(uuid->uuid + 2), (unsigned *)(uuid->uuid + 3),
+ (unsigned *)(uuid->uuid + 4), (unsigned *)(uuid->uuid + 5),
+ (unsigned *)(uuid->uuid + 6), (unsigned *)(uuid->uuid + 7),
+ (unsigned *)(uuid->uuid + 8), (unsigned *)(uuid->uuid + 9),
+ (unsigned *)(uuid->uuid + 10), (unsigned *)(uuid->uuid + 11),
+ (unsigned *)(uuid->uuid + 12), (unsigned *)(uuid->uuid + 13),
+ (unsigned *)(uuid->uuid + 14), (unsigned *)(uuid->uuid + 15)) != 16)
return HAL_ERROR_BAD_ARGUMENTS;
return HAL_OK;
@@ -87,16 +91,20 @@ hal_error_t hal_uuid_parse(hal_uuid_t *uuid, const char * const string)
hal_error_t hal_uuid_format(const hal_uuid_t * const uuid, char *buffer, const size_t buffer_len)
{
static const char fmt[]
- = "%02hhx%02hhx%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx-%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx";
+ = "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x";
if (uuid == NULL || buffer == NULL || buffer_len < HAL_UUID_TEXT_SIZE)
return HAL_ERROR_BAD_ARGUMENTS;
if (snprintf(buffer, buffer_len, fmt,
- uuid->uuid[ 0], uuid->uuid[ 1], uuid->uuid[ 2], uuid->uuid[ 3],
- uuid->uuid[ 4], uuid->uuid[ 5], uuid->uuid[ 6], uuid->uuid[ 7],
- uuid->uuid[ 8], uuid->uuid[ 9], uuid->uuid[10], uuid->uuid[11],
- uuid->uuid[12], uuid->uuid[13], uuid->uuid[14], uuid->uuid[15]) != HAL_UUID_TEXT_SIZE - 1)
+ (unsigned)uuid->uuid[ 0], (unsigned)uuid->uuid[ 1],
+ (unsigned)uuid->uuid[ 2], (unsigned)uuid->uuid[ 3],
+ (unsigned)uuid->uuid[ 4], (unsigned)uuid->uuid[ 5],
+ (unsigned)uuid->uuid[ 6], (unsigned)uuid->uuid[ 7],
+ (unsigned)uuid->uuid[ 8], (unsigned)uuid->uuid[ 9],
+ (unsigned)uuid->uuid[10], (unsigned)uuid->uuid[11],
+ (unsigned)uuid->uuid[12], (unsigned)uuid->uuid[13],
+ (unsigned)uuid->uuid[14], (unsigned)uuid->uuid[15]) != HAL_UUID_TEXT_SIZE - 1)
return HAL_ERROR_RESULT_TOO_LONG;
return HAL_OK;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Commits
mailing list