LCOV - code coverage report
Current view: top level - lib/util - util_str_hex.c (source / functions) Hit Total Coverage
Test: coverage report for master 70ed9daf Lines: 31 36 86.1 %
Date: 2024-01-11 09:59:51 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   436776674 : static bool hex_uint16(const char *in, uint16_t *out)
       7             : {
       8   436776674 :         uint8_t hi=0, lo=0;
       9   436776674 :         bool ok = hex_byte(in, &hi) && hex_byte(in+2, &lo);
      10   436776674 :         *out = (((uint16_t)hi)<<8) + lo;
      11   436776674 :         return ok;
      12             : }
      13             : 
      14   109408511 : bool hex_uint32(const char *in, uint32_t *out)
      15             : {
      16   109408511 :         uint16_t hi=0, lo=0;
      17   109408511 :         bool ok = hex_uint16(in, &hi) && hex_uint16(in+4, &lo);
      18   109408511 :         *out = (((uint32_t)hi)<<16) + lo;
      19   109408511 :         return ok;
      20             : }
      21             : 
      22   108979843 : bool parse_guid_string(const char *s, struct GUID *guid)
      23             : {
      24     2526723 :         bool ok;
      25     2526723 :         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   108979843 :         ok = hex_uint32(s, &guid->time_low);
      36   108979843 :         if (!ok || (s[8] != '-')) {
      37           0 :                 return false;
      38             :         }
      39   108979833 :         s += 9;
      40             : 
      41   108979833 :         ok = hex_uint16(s, &guid->time_mid);
      42   108979833 :         if (!ok || (s[4] != '-')) {
      43           0 :                 return false;
      44             :         }
      45   108979827 :         s += 5;
      46             : 
      47   108979827 :         ok = hex_uint16(s, &guid->time_hi_and_version);
      48   108979827 :         if (!ok || (s[4] != '-')) {
      49           0 :                 return false;
      50             :         }
      51   108979827 :         s += 5;
      52             : 
      53   217959650 :         ok = hex_byte(s, &guid->clock_seq[0]) &&
      54   108979823 :                 hex_byte(s+2, &guid->clock_seq[1]);
      55   108979827 :         if (!ok || (s[4] != '-')) {
      56           0 :                 return false;
      57             :         }
      58   108979821 :         s += 5;
      59             : 
      60   762858709 :         for (i = 0; i < 6; i++) {
      61   653878896 :                 ok = hex_byte(s, &guid->node[i]);
      62   653878896 :                 if (!ok) {
      63           0 :                         return false;
      64             :                 }
      65   653878888 :                 s += 2;
      66             :         }
      67             : 
      68   106453120 :         return true;
      69             : }

Generated by: LCOV version 1.14