LCOV - code coverage report
Current view: top level - lib/util - util_str_hex.c (source / functions) Hit Total Coverage
Test: coverage report for master 2f515e9b Lines: 31 36 86.1 %
Date: 2024-04-21 15:09:00 Functions: 3 3 100.0 %

          Line data    Source code
       1             : #include "replace.h"
       2             : #include "util_str_hex.h"
       3             : #include "lib/util/data_blob.h"
       4             : #include "librpc/gen_ndr/misc.h"
       5             : 
       6   443816462 : static bool hex_uint16(const char *in, uint16_t *out)
       7             : {
       8   443816462 :         uint8_t hi=0, lo=0;
       9   443816462 :         bool ok = hex_byte(in, &hi) && hex_byte(in+2, &lo);
      10   443816462 :         *out = (((uint16_t)hi)<<8) + lo;
      11   443816462 :         return ok;
      12             : }
      13             : 
      14   111168570 : bool hex_uint32(const char *in, uint32_t *out)
      15             : {
      16   111168570 :         uint16_t hi=0, lo=0;
      17   111168570 :         bool ok = hex_uint16(in, &hi) && hex_uint16(in+4, &lo);
      18   111168570 :         *out = (((uint32_t)hi)<<16) + lo;
      19   111168570 :         return ok;
      20             : }
      21             : 
      22   110739678 : bool parse_guid_string(const char *s, struct GUID *guid)
      23             : {
      24     2512583 :         bool ok;
      25     2512583 :         int i;
      26             :         /* "e12b56b6-0a95-11d1-adbb-00c04fd8d5cd"
      27             :                 |     |    |    |    |
      28             :                 |     |    |    |    \ node[6]
      29             :                 |     |    |    \_____ clock_seq[2]
      30             :                 |     |    \__________ time_hi_and_version
      31             :                 |     \_______________ time_mid
      32             :                 \_____________________ time_low
      33             :         */
      34             : 
      35   110739678 :         ok = hex_uint32(s, &guid->time_low);
      36   110739678 :         if (!ok || (s[8] != '-')) {
      37           0 :                 return false;
      38             :         }
      39   110739668 :         s += 9;
      40             : 
      41   110739668 :         ok = hex_uint16(s, &guid->time_mid);
      42   110739668 :         if (!ok || (s[4] != '-')) {
      43           0 :                 return false;
      44             :         }
      45   110739662 :         s += 5;
      46             : 
      47   110739662 :         ok = hex_uint16(s, &guid->time_hi_and_version);
      48   110739662 :         if (!ok || (s[4] != '-')) {
      49           0 :                 return false;
      50             :         }
      51   110739662 :         s += 5;
      52             : 
      53   221479320 :         ok = hex_byte(s, &guid->clock_seq[0]) &&
      54   110739658 :                 hex_byte(s+2, &guid->clock_seq[1]);
      55   110739662 :         if (!ok || (s[4] != '-')) {
      56           0 :                 return false;
      57             :         }
      58   110739656 :         s += 5;
      59             : 
      60   775177554 :         for (i = 0; i < 6; i++) {
      61   664437906 :                 ok = hex_byte(s, &guid->node[i]);
      62   664437906 :                 if (!ok) {
      63           0 :                         return false;
      64             :                 }
      65   664437898 :                 s += 2;
      66             :         }
      67             : 
      68   108227095 :         return true;
      69             : }

Generated by: LCOV version 1.14