[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