Skip to content

Commit f73cf2f

Browse files
committed
Fixed code portability issues (cppcheck)
1 parent e394164 commit f73cf2f

File tree

8 files changed

+49
-32
lines changed

8 files changed

+49
-32
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ CMakeTmp
1212
build/*
1313
test/unit/unit
1414
tags
15+
cppcheck_results.xml

Makefile

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,19 @@ CFLAGS:=-Wall -Werror -Wextra -I. -D_GNU_SOURCE
33
CFLAGS+=-g -ggdb
44
LDFLAGS+=-pthread
55

6+
CPPCHECK=cppcheck
7+
CPPCHECK_FLAGS=--enable=all --suppress=missingIncludeSystem \
8+
--suppress=unusedFunction --suppress=unusedVariable \
9+
--suppress=missingInclude --suppress=variableScope \
10+
--suppress=constVariable --suppress=constVariablePointer \
11+
--suppress=constParameterPointer \
12+
--suppress=constParameterCallback \
13+
--suppress=toomanyconfigs \
14+
--suppress=unmatchedSuppression --inconclusive \
15+
--std=c99 --language=c \
16+
--platform=unix64 \
17+
--error-exitcode=1 --xml --xml-version=2
18+
619
OBJ=build/wolfip.o \
720
build/port/posix/linux_tap.o
821

@@ -129,4 +142,7 @@ install:
129142
install libwolfip.so $(PREFIX)/lib
130143
ldconfig
131144

132-
.PHONY: clean all static
145+
.PHONY: clean all static cppcheck
146+
147+
cppcheck:
148+
$(CPPCHECK) $(CPPCHECK_FLAGS) src/ 2>cppcheck_results.xml

src/http/httpd.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ void http_send_response_headers(struct http_client *hc, int status_code, const c
9999
} else {
100100
snprintf(txt_response, sizeof(txt_response), "HTTP/1.1 %d %s\r\n"
101101
"Content-Type: %s\r\n"
102-
"Content-Length: %lu\r\n"
102+
"Content-Length: %zu\r\n"
103103
"\r\n",
104104
status_code, status_text, content_type, content_length);
105105
}
@@ -123,7 +123,7 @@ void http_send_response_chunk(struct http_client *hc, const void *chunk, size_t
123123
char txt_chunk[8];
124124
memset(txt_chunk, 0, sizeof(txt_chunk));
125125
if (!hc) return;
126-
snprintf(txt_chunk, sizeof(txt_chunk), "%lx\r\n", len);
126+
snprintf(txt_chunk, sizeof(txt_chunk), "%zx\r\n", len);
127127
if (hc->ssl) {
128128
wolfSSL_write(hc->ssl, txt_chunk, strlen(txt_chunk));
129129
wolfSSL_write(hc->ssl, chunk, len);

src/test/test_linux_dhcp_dns.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ static void client_cb(int fd, uint16_t event, void *arg)
9292
for (i = 0; i < sizeof(buf); i += sizeof(test_pattern)) {
9393
if (memcmp(buf + i, test_pattern, sizeof(test_pattern))) {
9494
printf("test client: pattern mismatch\n");
95-
printf("at position %d\n", i);
95+
printf("at position %u\n", i);
9696
buf[i + 16] = 0;
9797
printf("%s\n", &buf[i]);
9898
return;

src/test/test_linux_eventloop.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ static void client_cb(int fd, uint16_t event, void *arg)
158158
for (i = 0; i < sizeof(buf); i += sizeof(test_pattern)) {
159159
if (memcmp(buf + i, test_pattern, sizeof(test_pattern))) {
160160
printf("test client: pattern mismatch\n");
161-
printf("at position %d\n", i);
161+
printf("at position %u\n", i);
162162
buf[i + 16] = 0;
163163
printf("%s\n", &buf[i]);
164164
return;
@@ -252,7 +252,7 @@ void *pt_echoclient(void *arg)
252252
for (i = 0; i < sizeof(buf); i += sizeof(test_pattern)) {
253253
if (memcmp(buf + i, test_pattern, sizeof(test_pattern))) {
254254
printf("test client: pattern mismatch\n");
255-
printf("at position %d\n", i);
255+
printf("at position %u\n", i);
256256
buf[i + 16] = 0;
257257
printf("%s\n", &buf[i]);
258258
return (void *)-1;

src/test/test_native_wolfssl.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ void *pt_echoclient(void *arg)
240240
for (i = 0; i < sizeof(buf); i += sizeof(test_pattern)) {
241241
if (memcmp(buf + i, test_pattern, sizeof(test_pattern))) {
242242
printf("test client: pattern mismatch\n");
243-
printf("at position %d\n", i);
243+
printf("at position %u\n", i);
244244
buf[i + 16] = 0;
245245
printf("%s\n", &buf[i]);
246246
return (void *)-1;

src/test/unit/unit.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ START_TEST(test_fifo_push_and_pop) {
9696
desc = fifo_peek(&f);
9797
ck_assert_ptr_nonnull(desc);
9898
ck_assert_int_eq(desc->len, sizeof(data));
99-
ck_assert_mem_eq(f.data + desc->pos + sizeof(struct pkt_desc), data, sizeof(data));
99+
ck_assert_mem_eq((const uint8_t *)f.data + desc->pos + sizeof(struct pkt_desc), data, sizeof(data));
100100
desc2 = fifo_peek(&f);
101101
ck_assert_ptr_nonnull(desc2);
102102
ck_assert_ptr_eq(desc, desc2);
@@ -108,7 +108,7 @@ START_TEST(test_fifo_push_and_pop) {
108108
ck_assert_int_eq(fifo_space(&f), memsz);
109109
ck_assert_ptr_nonnull(desc);
110110
ck_assert_int_eq(desc->len, sizeof(data));
111-
ck_assert_mem_eq(f.data + desc->pos + sizeof(struct pkt_desc), data, sizeof(data));
111+
ck_assert_mem_eq((const uint8_t *)f.data + desc->pos + sizeof(struct pkt_desc), data, sizeof(data));
112112
ck_assert_int_eq(fifo_len(&f), 0);
113113
}
114114
END_TEST
@@ -131,12 +131,12 @@ START_TEST(test_fifo_push_and_pop_multiple) {
131131
struct pkt_desc *desc = fifo_pop(&f);
132132
ck_assert_ptr_nonnull(desc);
133133
ck_assert_int_eq(desc->len, sizeof(data));
134-
ck_assert_mem_eq(f.data + desc->pos + sizeof(struct pkt_desc), data, sizeof(data));
134+
ck_assert_mem_eq((const uint8_t *)f.data + desc->pos + sizeof(struct pkt_desc), data, sizeof(data));
135135

136136
desc = fifo_pop(&f);
137137
ck_assert_ptr_nonnull(desc);
138138
ck_assert_int_eq(desc->len, sizeof(data2));
139-
ck_assert_mem_eq(f.data + desc->pos + sizeof(struct pkt_desc), data2, sizeof(data2));
139+
ck_assert_mem_eq((const uint8_t *)f.data + desc->pos + sizeof(struct pkt_desc), data2, sizeof(data2));
140140
}
141141
END_TEST
142142

@@ -149,7 +149,7 @@ START_TEST(test_fifo_pop_success) {
149149
struct pkt_desc *desc = fifo_pop(&f);
150150
ck_assert_ptr_nonnull(desc); // Ensure we got a valid descriptor
151151
ck_assert_int_eq(desc->len, sizeof(data)); // Check length
152-
ck_assert_mem_eq(f.data + desc->pos + sizeof(struct pkt_desc), data, sizeof(data)); // Check data
152+
ck_assert_mem_eq((const uint8_t *)f.data + desc->pos + sizeof(struct pkt_desc), data, sizeof(data)); // Check data
153153
}
154154

155155
START_TEST(test_fifo_pop_empty) {
@@ -188,7 +188,7 @@ START_TEST(test_fifo_push_wrap) {
188188
ret = fifo_push(&f, data, sizeof(data));
189189
ck_assert_int_eq(ret, 0);
190190
ck_assert_int_eq(desc->len, sizeof(data));
191-
ck_assert_mem_eq(f.data + desc->pos + sizeof(struct pkt_desc), data, sizeof(data));
191+
ck_assert_mem_eq((const uint8_t *)f.data + desc->pos + sizeof(struct pkt_desc), data, sizeof(data));
192192
}
193193
END_TEST
194194

@@ -208,7 +208,7 @@ START_TEST(test_fifo_push_wrap_multiple) {
208208
ret = fifo_push(&f, data, sizeof(data));
209209
ck_assert_int_eq(ret, 0);
210210
ck_assert_int_eq(desc->len, sizeof(data));
211-
ck_assert_mem_eq(f.data + desc->pos + sizeof(struct pkt_desc), data, sizeof(data));
211+
ck_assert_mem_eq((const uint8_t *)f.data + desc->pos + sizeof(struct pkt_desc), data, sizeof(data));
212212

213213
// Push more data to wrap around the buffer
214214
ret = fifo_push(&f, data2, sizeof(data2));
@@ -321,7 +321,7 @@ START_TEST(test_queue_insert_empty) {
321321
ck_assert_int_eq(res, 0);
322322
ck_assert_int_eq(queue_len(&q), sizeof(data));
323323
ck_assert_int_eq(q.head, sizeof(data));
324-
ck_assert_mem_eq(q.data, data, sizeof(data));
324+
ck_assert_mem_eq((const uint8_t *)q.data, data, sizeof(data));
325325
}
326326
END_TEST
327327

@@ -336,8 +336,8 @@ START_TEST(test_queue_insert_sequential) {
336336
ck_assert_int_eq(res1, 0);
337337
ck_assert_int_eq(res2, 0);
338338
ck_assert_int_eq(queue_len(&q), sizeof(data1) + sizeof(data2));
339-
ck_assert_mem_eq(q.data, data1, sizeof(data1));
340-
ck_assert_mem_eq(q.data + 2, data2, sizeof(data2));
339+
ck_assert_mem_eq((const uint8_t *)q.data, data1, sizeof(data1));
340+
ck_assert_mem_eq((uint8_t *)q.data + 2, data2, sizeof(data2));
341341
}
342342
END_TEST
343343

src/wolfip.c

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ static struct pkt_desc *fifo_peek(struct fifo *f)
157157
f->tail++;
158158
if ((f->head < f->tail) && ((f->tail + sizeof(struct pkt_desc) + LINK_MTU > f->size)))
159159
f->tail = 0;
160-
return (struct pkt_desc *)(f->data + f->tail);
160+
return (struct pkt_desc *)((uint8_t *)f->data + f->tail);
161161
}
162162

163163
/* Continue reading starting from a descriptor returned by fifo_peek */
@@ -172,11 +172,11 @@ static struct pkt_desc *fifo_next(struct fifo *f, struct pkt_desc *desc)
172172
while ((desc->pos + len) % 4)
173173
len++;
174174
if ((desc->pos + len + sizeof(struct pkt_desc) + LINK_MTU ) >= f->size)
175-
desc = (struct pkt_desc *)(f->data);
175+
desc = (struct pkt_desc *)((uint8_t *)f->data);
176176
else
177-
desc = (struct pkt_desc *)((f->data + desc->pos + len));
177+
desc = (struct pkt_desc *)((uint8_t *)f->data + desc->pos + len);
178178
if ((desc->pos + len) == f->h_wrap) {
179-
desc = (struct pkt_desc *)(f->data);
179+
desc = (struct pkt_desc *)((uint8_t *)f->data);
180180
}
181181
return desc;
182182
}
@@ -211,9 +211,9 @@ static int fifo_push(struct fifo *f, void *data, uint32_t len)
211211
return -1;
212212
desc.pos = f->head;
213213
desc.len = len;
214-
memcpy(f->data + f->head, &desc, sizeof(struct pkt_desc));
214+
memcpy((uint8_t *)f->data + f->head, &desc, sizeof(struct pkt_desc));
215215
f->head += sizeof(struct pkt_desc);
216-
memcpy(f->data + f->head, data, len);
216+
memcpy((uint8_t *)f->data + f->head, data, len);
217217
f->head += len;
218218
return 0;
219219
}
@@ -231,7 +231,7 @@ static struct pkt_desc *fifo_pop(struct fifo *f)
231231
return NULL;
232232
if ((f->head < f->tail) && ((f->tail + sizeof(struct pkt_desc) + LINK_MTU > f->size)))
233233
f->tail = 0;
234-
desc = (struct pkt_desc *)(f->data + f->tail);
234+
desc = (struct pkt_desc *)((uint8_t *)f->data + f->tail);
235235
f->tail += sizeof(struct pkt_desc) + desc->len;
236236
f->tail %= f->size;
237237
return desc;
@@ -297,10 +297,10 @@ static int queue_insert(struct queue *q, void *data, uint32_t seq, uint32_t len)
297297
return 0;
298298
/* Write in two steps: consider wrapping */
299299
if (pos + len > q->size) {
300-
memcpy(q->data + pos, data, q->size - pos);
301-
memcpy(q->data, data + q->size - pos, len - (q->size - pos));
300+
memcpy((uint8_t *)q->data + pos, data, q->size - pos);
301+
memcpy((uint8_t *)q->data, (const uint8_t *)data + q->size - pos, len - (q->size - pos));
302302
} else {
303-
memcpy(q->data + pos, data, len);
303+
memcpy((uint8_t *)q->data + pos, data, len);
304304
}
305305
if (pos + len > q->head)
306306
q->head = (pos + len) % q->size;
@@ -316,7 +316,7 @@ static int queue_pop(struct queue *q, void *data, uint32_t len)
316316
return -11;
317317
if (len > q_len)
318318
len = q_len;
319-
memcpy(data, q->data + q->tail, len);
319+
memcpy(data, (const uint8_t *)q->data + q->tail, len);
320320
q->tail += len;
321321
q->tail %= q->size;
322322
q->seq_base += len;
@@ -778,7 +778,7 @@ static void tcp_send_syn(struct tsocket *t, uint8_t flags)
778778
ts->ecr = t->sock.tcp.last_ts;
779779
ts->pad = 0x01;
780780
ts->eoo = 0x01;
781-
mss = (struct tcp_opt_mss *)(tcp->data + sizeof(struct tcp_opt_ts));
781+
mss = (struct tcp_opt_mss *)((uint8_t *)tcp->data + sizeof(struct tcp_opt_ts));
782782
mss->opt = TCP_OPTION_MSS;
783783
mss->len = TCP_OPTION_MSS_LEN;
784784
mss->mss = ee16(TCP_MSS);
@@ -801,7 +801,7 @@ static void tcp_recv(struct tsocket *t, struct wolfIP_tcp_seg *seg)
801801
}
802802
if (t->sock.tcp.ack == seq) {
803803
/* push into queue */
804-
if (queue_insert(&t->sock.tcp.rxbuf, seg->ip.data + (seg->hlen >> 2),
804+
if (queue_insert(&t->sock.tcp.rxbuf, (uint8_t *)seg->ip.data + (seg->hlen >> 2),
805805
seq, seg_len) < 0) {
806806
/* Buffer full, dropped. This will send a duplicate ack. */
807807
} else {
@@ -927,7 +927,7 @@ static int tcp_process_ts(struct tsocket *t, const struct wolfIP_tcp_seg *tcp)
927927
{
928928
const struct tcp_opt_ts *ts;
929929
const uint8_t *opt = tcp->data;
930-
while (opt < (tcp->data + (tcp->hlen >> 2))) {
930+
while (opt < ((const uint8_t *)tcp->data + (tcp->hlen >> 2))) {
931931
if (*opt == TCP_OPTION_NOP)
932932
opt++;
933933
else if (*opt == TCP_OPTION_EOO)
@@ -1358,7 +1358,7 @@ int wolfIP_sock_sendto(struct wolfIP *s, int sockfd, const void *buf, size_t len
13581358
tsopt->ecr = ts->sock.tcp.last_ts;
13591359
tsopt->pad = 0x01;
13601360
tsopt->eoo = 0x00;
1361-
memcpy(tcp->data + TCP_OPTIONS_LEN, buf + sent, payload_len);
1361+
memcpy((uint8_t *)tcp->data + TCP_OPTIONS_LEN, (const uint8_t *)buf + sent, payload_len);
13621362
fifo_push(&ts->sock.tcp.txbuf, tcp, sizeof(struct wolfIP_tcp_seg) + TCP_OPTIONS_LEN + payload_len);
13631363
sent += payload_len;
13641364
ts->sock.tcp.seq += payload_len;

0 commit comments

Comments
 (0)