Coverage Report

Created: 2026-05-30 06:55

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wpantund/src/util/string-utils.h
Line
Count
Source
1
/*
2
 *
3
 * Copyright (c) 2016 Nest Labs, Inc.
4
 * All rights reserved.
5
 *
6
 * Licensed under the Apache License, Version 2.0 (the "License");
7
 * you may not use this file except in compliance with the License.
8
 * You may obtain a copy of the License at
9
 *
10
 *     http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing, software
13
 * distributed under the License is distributed on an "AS IS" BASIS,
14
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
 * See the License for the specific language governing permissions and
16
 * limitations under the License.
17
 *
18
 *    Description:
19
 *      This file declares utility functions for manipulating and comparing
20
 *      C-strings or other buffers.
21
 *
22
 */
23
24
#ifndef wpantund_string_utils_h
25
#define wpantund_string_utils_h
26
27
#include <stddef.h>
28
#include <stdint.h>
29
#include <string.h>
30
#include <stdbool.h>
31
#include <sys/cdefs.h>
32
33
565k
#define strcaseequal(x, y)   (strcasecmp(x, y) == 0)
34
232k
#define strncaseequal(x, y, n)   (strncasecmp(x, y, n) == 0)
35
1.24k
#define strequal(x, y)   (strcmp(x, y) == 0)
36
43.0k
#define strnequal(x, y, n)   (strncmp(x, y, n) == 0)
37
38
#if defined(__cplusplus)
39
extern "C" {
40
#endif
41
extern void memcpyrev(void* dest, const void *src, size_t len);
42
extern int memcmprev(const void* dest, const void *src, size_t len);
43
extern void reverse_bytes(uint8_t *bytes, size_t count);
44
extern int parse_string_into_data(uint8_t* buffer, size_t len, const char* c_str);
45
extern int encode_data_into_string(const uint8_t*  buffer, size_t len, char* c_str, size_t c_str_max_len, int pad_to);
46
extern int strtologmask(const char* value, int prev_mask);
47
extern bool buffer_is_nonzero(const uint8_t* buffer, size_t len);
48
extern bool is_hex(const uint8_t* buff, size_t len);
49
extern bool is_uppercase_or_digit(const uint8_t* buff, size_t len);
50
51
static inline char
52
int_to_hex_digit(uint8_t x)
53
9.96k
{
54
9.96k
  return "0123456789ABCDEF"[x & 0xF];
55
9.96k
}
Unexecuted instantiation: wpantund-fuzz.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: NCPControlInterface.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: NCPInstance.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: NCPInstanceBase.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: StatCollector.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: NCPInstanceBase-NetInterface.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: NCPInstanceBase-Addresses.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: NCPInstanceBase-AsyncIO.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: NCPTypes.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: tunnel.c:int_to_hex_digit
Unexecuted instantiation: config-file.c:int_to_hex_digit
Unexecuted instantiation: socket-utils.c:int_to_hex_digit
Unexecuted instantiation: any-to.cpp:int_to_hex_digit(unsigned char)
string-utils.c:int_to_hex_digit
Line
Count
Source
53
9.96k
{
54
9.96k
  return "0123456789ABCDEF"[x & 0xF];
55
9.96k
}
Unexecuted instantiation: SpinelNCPInstance.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPInstance-DataPump.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPInstance-Protothreads.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPTask.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPTaskDeepSleep.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPTaskGetNetworkTopology.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPTaskGetMsgBufferCounters.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPTaskJoin.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPTaskSendCommand.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPTaskWake.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPThreadDataset.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPVendorCustom.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPControlInterface.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPTaskHostDidWake.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPTaskForm.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPTaskJoinerCommissioning.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPTaskLeave.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPTaskPeek.cpp:int_to_hex_digit(unsigned char)
Unexecuted instantiation: SpinelNCPTaskScan.cpp:int_to_hex_digit(unsigned char)
56
57
static inline bool
58
30.2k
strhasprefix(const char* str, const char* prefix) {
59
30.2k
  return strnequal(str, prefix, strlen(prefix));
60
30.2k
}
Unexecuted instantiation: wpantund-fuzz.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: NCPControlInterface.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: NCPInstance.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: NCPInstanceBase.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: StatCollector.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: NCPInstanceBase-NetInterface.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: NCPInstanceBase-Addresses.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: NCPInstanceBase-AsyncIO.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: NCPTypes.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: tunnel.c:strhasprefix
Unexecuted instantiation: config-file.c:strhasprefix
socket-utils.c:strhasprefix
Line
Count
Source
58
30.2k
strhasprefix(const char* str, const char* prefix) {
59
30.2k
  return strnequal(str, prefix, strlen(prefix));
60
30.2k
}
Unexecuted instantiation: any-to.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: string-utils.c:strhasprefix
Unexecuted instantiation: SpinelNCPInstance.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPInstance-DataPump.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPInstance-Protothreads.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTask.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskDeepSleep.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskGetNetworkTopology.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskGetMsgBufferCounters.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskJoin.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskSendCommand.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskWake.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPThreadDataset.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPVendorCustom.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPControlInterface.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskHostDidWake.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskForm.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskJoinerCommissioning.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskLeave.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskPeek.cpp:strhasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskScan.cpp:strhasprefix(char const*, char const*)
61
62
static inline bool
63
223k
strcasehasprefix(const char* str, const char* prefix) {
64
223k
  return strncaseequal(str, prefix, strlen(prefix));
65
223k
}
Unexecuted instantiation: wpantund-fuzz.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: NCPControlInterface.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: NCPInstance.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: NCPInstanceBase.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: StatCollector.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: NCPInstanceBase-NetInterface.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: NCPInstanceBase-Addresses.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: NCPInstanceBase-AsyncIO.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: NCPTypes.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: tunnel.c:strcasehasprefix
Unexecuted instantiation: config-file.c:strcasehasprefix
socket-utils.c:strcasehasprefix
Line
Count
Source
63
223k
strcasehasprefix(const char* str, const char* prefix) {
64
223k
  return strncaseequal(str, prefix, strlen(prefix));
65
223k
}
Unexecuted instantiation: any-to.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: string-utils.c:strcasehasprefix
Unexecuted instantiation: SpinelNCPInstance.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPInstance-DataPump.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPInstance-Protothreads.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTask.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskDeepSleep.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskGetNetworkTopology.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskGetMsgBufferCounters.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskJoin.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskSendCommand.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskWake.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPThreadDataset.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPVendorCustom.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPControlInterface.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskHostDidWake.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskForm.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskJoinerCommissioning.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskLeave.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskPeek.cpp:strcasehasprefix(char const*, char const*)
Unexecuted instantiation: SpinelNCPTaskScan.cpp:strcasehasprefix(char const*, char const*)
66
67
uint32_t strtomask_uint32(const char* in_string);
68
69
extern bool strtobool(const char* string);
70
71
#if defined(__cplusplus)
72
}
73
#endif
74
75
#endif