diff --git a/cpu/kinetis_common/periph/rtt.c b/cpu/kinetis_common/periph/rtt.c index 93352c490cecda5542b536b6b547832a7c6959fd..cdcb6059e90833f2ad0d80d3e6a4fa6e6c4e0b05 100644 --- a/cpu/kinetis_common/periph/rtt.c +++ b/cpu/kinetis_common/periph/rtt.c @@ -57,6 +57,8 @@ void rtt_init(void) RTT_UNLOCK(); /* Reset RTC */ rtt->CR = RTC_CR_SWR_MASK; + /* cppcheck-suppress redundantAssignment + * reset routine */ rtt->CR = 0; if (rtt->SR & RTC_SR_TIF_MASK) { diff --git a/cpu/lpc2387/asmfunc.s b/cpu/lpc2387/asmfunc.s index 77b3b72793b2eaec6bae5cc821446749724dc824..83818978d7db5f28298f843e4f00b5ab3f837595 100644 --- a/cpu/lpc2387/asmfunc.s +++ b/cpu/lpc2387/asmfunc.s @@ -6,9 +6,11 @@ * directory for more details. */ +/* @-----------------------------------------------------------@ @ Fast Block Copy (declared in diskio.h) @-----------------------------------------------------------@ +*/ .global copy_un2al .arm diff --git a/cpu/x86/x86_memory.c b/cpu/x86/x86_memory.c index d2a4117d52247f175b7b048980a20c554d52cef2..a1a2b6b190efa8e389ef1a5a3a1f225052a01ae1 100644 --- a/cpu/x86/x86_memory.c +++ b/cpu/x86/x86_memory.c @@ -76,6 +76,8 @@ void x86_init_gdt(void) .limit_16_19_and_flags = 0, .base_24_31 = 0, }, + /* cppcheck-suppress duplicateExpression + * it's for consistent look & feel */ [0x0008 / 8] = { .limit_0_15 = 0xFFFF, .base_0_15 = 0, diff --git a/cpu/x86/x86_pci.c b/cpu/x86/x86_pci.c index 706af0ba93320f67f3f4bbc4dad3a4cb52917c6d..9eabdf7790a6436d81a8dc751190adb0e6bd30f9 100644 --- a/cpu/x86/x86_pci.c +++ b/cpu/x86/x86_pci.c @@ -181,7 +181,7 @@ static void pci_setup_ios(struct x86_known_pci_device *dev) printf(" BAR %u: memory, physical = 0x%08x-0x%08x, virtual = 0x%08x-0x%08x\n", bar_num, physical_start, physical_start + length - 1, - (unsigned) ptr, (uintptr_t) ptr + length - 1); + (unsigned) ptr, (unsigned) ((uintptr_t) ptr + length - 1)); } } } diff --git a/cpu/x86/x86_pit.c b/cpu/x86/x86_pit.c index dfa77b578fbd02cb924d544cd380670135408da6..32984dd47aaec4bceadf9ad09507d9d49c99b2c9 100644 --- a/cpu/x86/x86_pit.c +++ b/cpu/x86/x86_pit.c @@ -55,7 +55,7 @@ void x86_pit_set2(unsigned channel, unsigned mode, uint16_t max) { unsigned old_flags = irq_disable(); outb(PIT_COMMAND_PORT, ((channel - 1) << 6) | mode | PIT_ACCESS_MODE_LO_HI); - outb(PIT_CHANNEL_0_PORT + channel - 1, max && 0xff); + outb(PIT_CHANNEL_0_PORT + channel - 1, max & 0xff); outb(PIT_CHANNEL_0_PORT + channel - 1, max >> 8); irq_restore(old_flags); } diff --git a/dist/tools/ci/build_and_test.sh b/dist/tools/ci/build_and_test.sh index 5f3e6a210af998d9156d85670910bcd4f77459b1..74a265b0622685c00b555b97f277865e3850ede5 100755 --- a/dist/tools/ci/build_and_test.sh +++ b/dist/tools/ci/build_and_test.sh @@ -86,13 +86,7 @@ then run ./dist/tools/licenses/check.sh ${CI_BASE_BRANCH} --diff-filter=AC run ./dist/tools/doccheck/check.sh ${CI_BASE_BRANCH} run ./dist/tools/externc/check.sh ${CI_BASE_BRANCH} - - # TODO: - # Remove all but `${CI_BASE_BRANCH}` parameters to cppcheck (and remove second - # invocation) once all warnings of cppcheck have been taken care of - # in ${CI_BASE_BRANCH}. - run ./dist/tools/cppcheck/check.sh ${CI_BASE_BRANCH} --diff-filter=MR --error-exitcode=0 - run ./dist/tools/cppcheck/check.sh ${CI_BASE_BRANCH} --diff-filter=AC + run ./dist/tools/cppcheck/check.sh ${CI_BASE_BRANCH} run ./dist/tools/pr_check/pr_check.sh ${CI_BASE_BRANCH} exit $RESULT fi diff --git a/dist/tools/cppcheck/check.sh b/dist/tools/cppcheck/check.sh index e33d97d534306d86cc10057eb8f9e4101347a314..0fd0a9b23b522f66bb78593fb5edbc4daaa3be4d 100755 --- a/dist/tools/cppcheck/check.sh +++ b/dist/tools/cppcheck/check.sh @@ -53,7 +53,6 @@ if [ -z "${FILES}" ]; then exit fi -# TODO: switch back to 8 jobs when/if cppcheck issue is resolved -cppcheck --std=c99 --enable=style --force --error-exitcode=2 --quiet -j 1 \ +cppcheck --std=c99 --enable=style --force --error-exitcode=2 --quiet -j 8 \ --template "{file}:{line}: {severity} ({id}): {message}" \ --inline-suppr ${DEFAULT_SUPPRESSIONS} ${@} ${FILES} diff --git a/dist/tools/tunslip/tapslip6.c b/dist/tools/tunslip/tapslip6.c index 497ad710bdda30947fc3de21ece75376a44c1e93..0ae6605e271ea53b6f362029e87eddb93703abe6 100644 --- a/dist/tools/tunslip/tapslip6.c +++ b/dist/tools/tunslip/tapslip6.c @@ -172,7 +172,6 @@ after_fread: if (ret == 0) { clearerr(inslip); - return; fprintf(stderr, "serial_to_tun: EOF\n"); exit(1); } diff --git a/dist/tools/tunslip/tunslip.c b/dist/tools/tunslip/tunslip.c index 9b8f4a4bfb415101932dc6a026f3a3820293b8aa..117bedc97d7486c26f1dd13093dd64c75747b658 100644 --- a/dist/tools/tunslip/tunslip.c +++ b/dist/tools/tunslip/tunslip.c @@ -307,7 +307,7 @@ done: if (op == DHCP_OPTION_END) { *t++ = op; - *p++; + (*p)++; } optlen = t - pkt.m.options; @@ -535,7 +535,6 @@ after_fread: if (ret == 0) { clearerr(inslip); - return; fprintf(stderr, "serial_to_tun: EOF\n"); exit(1); } diff --git a/dist/tools/tunslip/tunslip6.c b/dist/tools/tunslip/tunslip6.c index 286a459fd4beb695e3668a3527fa9e4e8665b2b0..67ad3a0d5cc051040009d31a8a7f4419224690b9 100644 --- a/dist/tools/tunslip/tunslip6.c +++ b/dist/tools/tunslip/tunslip6.c @@ -118,7 +118,6 @@ stamptime(void) long secs, msecs; struct timeval tv; time_t t; - char timec[20]; gettimeofday(&tv, NULL) ; msecs = tv.tv_usec / 1000; @@ -136,6 +135,7 @@ stamptime(void) fprintf(stderr, "%04li.%03li ", secs, msecs); } else { + char timec[20]; startsecs = secs; startmsecs = msecs; t = time(NULL); @@ -190,6 +190,8 @@ serial_to_tun(FILE *inslip, int outfd) unsigned char inbuf[2000]; } uip; static unsigned int inbufptr = 0; + /* cppcheck-suppress variableScope + * rationale: cannot be reduced if built on linux */ int ret; unsigned char c; @@ -209,7 +211,7 @@ serial_to_tun(FILE *inslip, int outfd) stamptime(); } - fprintf(stderr, "*** dropping large %d byte packet\n", inbufptr); + fprintf(stderr, "*** dropping large %u byte packet\n", inbufptr); inbufptr = 0; } @@ -324,7 +326,7 @@ serial_to_tun(FILE *inslip, int outfd) stamptime(); } - printf("Packet from SLIP of length %d - write TUN\n", inbufptr); + printf("Packet from SLIP of length %u - write TUN\n", inbufptr); if (verbose > 4) { #if WIRESHARK_IMPORT_FORMAT @@ -648,6 +650,8 @@ devopen(const char *dev, int flags) { char t[1024]; strcpy(t, "/dev/"); + /* cppcheck-suppress bufferAccessOutOfBounds + * reason: seems to be a cppcheck bug */ strncat(t, dev, sizeof(t) - 5); return open(t, flags); } @@ -868,10 +872,6 @@ ifconf(const char *tundev, const char *ipaddr) if (prefix != NULL) { *prefix = '\0'; - prefix++; - } - else { - prefix = "64"; } if (timestamp) { diff --git a/drivers/adt7310/adt7310.c b/drivers/adt7310/adt7310.c index e7ff2535cc16fe49d1d908e773e27eac53f88522..2a1fdac500f569ce69598b21b8ef483011e36953 100644 --- a/drivers/adt7310/adt7310.c +++ b/drivers/adt7310/adt7310.c @@ -218,6 +218,8 @@ float adt7310_read_float(adt7310_t *dev) { int16_t raw = adt7310_read_raw(dev); if (raw == INT16_MIN) { + /* ignore cppcheck: we want to create a NaN here */ + /* cppcheck-suppress duplicateExpression */ return (0.0f / 0.0f); /* return NaN */ } if (!dev->high_res) { diff --git a/drivers/hdc1000/hdc1000.c b/drivers/hdc1000/hdc1000.c index 791d02f35b4f79ec334e3de25a770c8d63f5c591..c4c2f277c99173875c54cb2061d6c9e941549d1a 100644 --- a/drivers/hdc1000/hdc1000.c +++ b/drivers/hdc1000/hdc1000.c @@ -96,7 +96,6 @@ void hdc1000_get_results(hdc1000_t *dev, int16_t *temp, int16_t *hum) assert(dev); uint8_t buf[4]; - uint16_t traw, hraw; /* first we read the RAW results from the device */ i2c_acquire(dev->p.i2c); @@ -105,11 +104,11 @@ void hdc1000_get_results(hdc1000_t *dev, int16_t *temp, int16_t *hum) /* and finally we convert the values to their physical representation */ if (temp) { - traw = ((uint16_t)buf[0] << 8) | buf[1]; + uint16_t traw = ((uint16_t)buf[0] << 8) | buf[1]; *temp = (int16_t)((((int32_t)traw * 16500) >> 16) - 4000); } if (hum) { - hraw = ((uint16_t)buf[2] << 8) | buf[3]; + uint16_t hraw = ((uint16_t)buf[2] << 8) | buf[3]; *hum = (int16_t)(((int32_t)hraw * 10000) >> 16); } } diff --git a/pkg/nordic_softdevice_ble/src/ble-mac.c b/pkg/nordic_softdevice_ble/src/ble-mac.c index bd8f0942b79c0844d6dabf1eeb98f8e81a4f1d4a..4724dbd29925b4b17f503b27381e682474de8a26 100644 --- a/pkg/nordic_softdevice_ble/src/ble-mac.c +++ b/pkg/nordic_softdevice_ble/src/ble-mac.c @@ -73,6 +73,9 @@ static ble_mac_callback_t _callback; */ static ble_mac_interface_t *ble_mac_interface_lookup(ble_ipsp_handle_t *handle) { + if (handle == NULL) { + return NULL; + } for (int i = 0; i < BLE_MAC_MAX_INTERFACE_NUM; i++) { if (interfaces[i].handle.conn_handle == handle->conn_handle && interfaces[i].handle.cid == handle->cid) { @@ -172,13 +175,12 @@ int ble_mac_send(uint8_t dest[8], void *data, size_t len) od_hex_dump(data, len, OD_WIDTH_DEFAULT); #endif - int i; ble_ipsp_handle_t *handle; int ret = -1; if ((!dest) || _is_broadcast(dest)) { DEBUG("broadcast\n"); - for (i = 0; i < BLE_MAC_MAX_INTERFACE_NUM; i++) { + for (int i = 0; i < BLE_MAC_MAX_INTERFACE_NUM; i++) { if (interfaces[i].handle.cid != 0 && interfaces[i].handle.conn_handle != 0) { ret = _send_to_peer(&interfaces[i].handle, data, len); DEBUG("ret=%i\n", ret); @@ -207,9 +209,7 @@ static uint32_t ble_mac_ipsp_evt_handler_irq(ble_ipsp_handle_t *p_handle, ble_ip { uint32_t retval = NRF_SUCCESS; - ble_mac_interface_t *p_instance = NULL; - - p_instance = ble_mac_interface_lookup(p_handle); + ble_mac_interface_t *p_instance = ble_mac_interface_lookup(p_handle); if (p_handle) { DEBUG("ble-mac: IPSP event [handle:%d CID 0x%04X]\n", p_handle->conn_handle, p_handle->cid); diff --git a/pkg/nordic_softdevice_ble/src/gnrc_nordic_ble_6lowpan.c b/pkg/nordic_softdevice_ble/src/gnrc_nordic_ble_6lowpan.c index b0f71eb24481a6c9461fbcbdf127da28475d979c..62059bb61b21faccebbf72e0c66a684ffc3f575e 100644 --- a/pkg/nordic_softdevice_ble/src/gnrc_nordic_ble_6lowpan.c +++ b/pkg/nordic_softdevice_ble/src/gnrc_nordic_ble_6lowpan.c @@ -80,9 +80,7 @@ static void _ble_mac_callback(ble_mac_event_enum_t event, void* arg) static void _handle_raw_sixlowpan(ble_mac_inbuf_t *inbuf) { - gnrc_pktsnip_t *pkt = NULL; - - pkt = gnrc_pktbuf_add(NULL, inbuf->payload, + gnrc_pktsnip_t *pkt = gnrc_pktbuf_add(NULL, inbuf->payload, inbuf->len, GNRC_NETTYPE_SIXLOWPAN); diff --git a/sys/cpp11-compat/include/riot/chrono.hpp b/sys/cpp11-compat/include/riot/chrono.hpp index 46a89fa51e36c6133bfb341b3b3372ee09f188f8..bc2d902bf61b938b1798a4ba9e01ac039688fe40 100644 --- a/sys/cpp11-compat/include/riot/chrono.hpp +++ b/sys/cpp11-compat/include/riot/chrono.hpp @@ -52,7 +52,7 @@ class time_point { /** * @brief Create time point from timex_t struct. */ - inline time_point(timex_t&& tp) : m_handle(tp) {} + explicit inline time_point(timex_t&& tp) : m_handle(tp) {} /** * @brief Use default copy constructor. */ diff --git a/sys/cpp11-compat/include/riot/thread.hpp b/sys/cpp11-compat/include/riot/thread.hpp index cba69852d27396623337929701ccb0e0ffee1e6a..3f0dca01d5ffecc027a85936fea5e1051bc31e36 100644 --- a/sys/cpp11-compat/include/riot/thread.hpp +++ b/sys/cpp11-compat/include/riot/thread.hpp @@ -27,6 +27,7 @@ #include "time.h" #include "thread.h" +#include <array> #include <tuple> #include <atomic> #include <memory> @@ -65,7 +66,7 @@ struct thread_data { /** @cond INTERNAL */ std::atomic<unsigned> ref_count; kernel_pid_t joining_thread; - char stack[stack_size]; + std::array<char, stack_size> stack; /** @endcond */ }; @@ -106,7 +107,7 @@ public: /** * @brief Create a thread id from a native handle. */ - inline thread_id(kernel_pid_t handle) : m_handle{handle} {} + explicit inline thread_id(kernel_pid_t handle) : m_handle{handle} {} /** * @brief Comparison operator for thread ids. @@ -164,7 +165,7 @@ namespace this_thread { /** * @brief Access the id of the currently running thread. */ -inline thread_id get_id() noexcept { return thread_getpid(); } +inline thread_id get_id() noexcept { return thread_id{thread_getpid()}; } /** * @brief Yield the currently running thread. */ @@ -286,7 +287,7 @@ public: /** * @brief Returns the id of a thread. */ - inline id get_id() const noexcept { return m_handle; } + inline id get_id() const noexcept { return thread_id{m_handle}; } /** * @brief Returns the native handle to a thread. */ @@ -345,7 +346,7 @@ thread::thread(F&& f, Args&&... args) unique_ptr<func_and_args> p( new func_and_args(m_data.get(), forward<F>(f), forward<Args>(args)...)); m_handle = thread_create( - m_data->stack, stack_size, THREAD_PRIORITY_MAIN - 1, 0, + m_data->stack.data(), stack_size, THREAD_PRIORITY_MAIN - 1, 0, &thread_proxy<func_and_args>, p.get(), "riot_cpp_thread"); if (m_handle >= 0) { p.release(); diff --git a/sys/crypto/chacha.c b/sys/crypto/chacha.c index 5697cd64d0c8e5cc437f9025f3e0a2947e95cb6b..b382e74230b424b7d4feb7908ba4a912eeec97d7 100644 --- a/sys/crypto/chacha.c +++ b/sys/crypto/chacha.c @@ -53,6 +53,8 @@ static void _doubleround(void *output_, const uint32_t input[16], uint8_t rounds rounds *= 4; for (unsigned i = 0; i < rounds; ++i) { + /* cppcheck-suppress duplicateExpressionTernary + * (reason: Externally imported code beautification) */ uint32_t *a = &output[((i + ((i & 4) ? 0 : 0)) & 3) + (4 * 0)]; uint32_t *b = &output[((i + ((i & 4) ? 1 : 0)) & 3) + (4 * 1)]; uint32_t *c = &output[((i + ((i & 4) ? 2 : 0)) & 3) + (4 * 2)]; diff --git a/sys/crypto/modes/cbc.c b/sys/crypto/modes/cbc.c index ab36a10f0dd1459d074ffbc52316100c313c860f..b5ffdeb845525aca5d334004bf7a1d9407c347fa 100644 --- a/sys/crypto/modes/cbc.c +++ b/sys/crypto/modes/cbc.c @@ -58,7 +58,7 @@ int cipher_decrypt_cbc(cipher_t* cipher, uint8_t iv[16], uint8_t* input, size_t length, uint8_t* output) { size_t offset = 0; - uint8_t* input_block, *output_block, *input_block_last, block_size; + uint8_t* input_block, *input_block_last, block_size; block_size = cipher_get_block_size(cipher); @@ -69,7 +69,7 @@ int cipher_decrypt_cbc(cipher_t* cipher, uint8_t iv[16], input_block_last = iv; do { input_block = input + offset; - output_block = output + offset; + uint8_t *output_block = output + offset; if (cipher_decrypt(cipher, input_block, output_block) != 1) { return CIPHER_ERR_DEC_FAILED; diff --git a/sys/include/xtimer/implementation.h b/sys/include/xtimer/implementation.h index 4190260efcaab5a486414da6084d140d3b92c39f..107ac99e91c81da45fc39e93320c081c91bdd10b 100644 --- a/sys/include/xtimer/implementation.h +++ b/sys/include/xtimer/implementation.h @@ -51,6 +51,8 @@ static inline uint32_t _xtimer_lltimer_now(void) */ static inline uint32_t _xtimer_lltimer_mask(uint32_t val) { + /* cppcheck-suppress shiftTooManyBits + * (reason: cppcheck bug. `XTIMER_MASK` is zero when `XTIMER_WIDTH` is 32) */ return val & ~XTIMER_MASK; } diff --git a/sys/net/gnrc/conn/udp/gnrc_conn_udp.c b/sys/net/gnrc/conn/udp/gnrc_conn_udp.c index 89ee02443bbae144bb353e4b660dd7e772ea8e16..7d9b01058237e8c46dfb06dbb13f77cbc2caf8a2 100644 --- a/sys/net/gnrc/conn/udp/gnrc_conn_udp.c +++ b/sys/net/gnrc/conn/udp/gnrc_conn_udp.c @@ -93,7 +93,7 @@ int conn_udp_sendto(const void *data, size_t len, const void *src, size_t src_le const void *dst, size_t dst_len, int family, uint16_t sport, uint16_t dport) { - gnrc_pktsnip_t *pkt, *hdr = NULL; + gnrc_pktsnip_t *pkt, *hdr; pkt = gnrc_pktbuf_add(NULL, (void *)data, len, GNRC_NETTYPE_UNDEF); /* data will only be copied */ hdr = gnrc_udp_hdr_build(pkt, sport, dport); diff --git a/sys/net/gnrc/network_layer/ipv6/netif/gnrc_ipv6_netif.c b/sys/net/gnrc/network_layer/ipv6/netif/gnrc_ipv6_netif.c index d971294533c71bb35e07044660d7f0acd3ed919e..b9bf3934d451b7abbc3c0eda6fe550be930fbbef 100644 --- a/sys/net/gnrc/network_layer/ipv6/netif/gnrc_ipv6_netif.c +++ b/sys/net/gnrc/network_layer/ipv6/netif/gnrc_ipv6_netif.c @@ -792,6 +792,8 @@ void gnrc_ipv6_netif_init_by_dev(void) kernel_pid_t ifs[GNRC_NETIF_NUMOF]; size_t ifnum = gnrc_netif_get(ifs); #ifdef MODULE_GNRC_SIXLOWPAN_ND_BORDER_ROUTER + /* cppcheck-suppress unreadVariable + * (reason: cppcheck bug. abr_init is read in if below) */ bool abr_init = false; #endif diff --git a/sys/net/gnrc/network_layer/ndp/gnrc_ndp.c b/sys/net/gnrc/network_layer/ndp/gnrc_ndp.c index 49a0dc7472d622e43e9ac1a50b75a954e6ea92c3..dd1845375e6777af4318eb65cf7d4da8494a92c9 100644 --- a/sys/net/gnrc/network_layer/ndp/gnrc_ndp.c +++ b/sys/net/gnrc/network_layer/ndp/gnrc_ndp.c @@ -672,6 +672,8 @@ void gnrc_ndp_retrans_nbr_sol(gnrc_ipv6_nc_t *nc_entry) mutex_unlock(&ipv6_iface->mutex); } } + /* cppcheck-suppress knownConditionTrueFalse + * cppcheck bug: probes_remaining is initialized to a value > 1 */ else if (nc_entry->probes_remaining <= 1) { /* For a 6LoWPAN router entries may be set to UNREACHABLE instead diff --git a/sys/net/gnrc/network_layer/ndp/node/gnrc_ndp_node.c b/sys/net/gnrc/network_layer/ndp/node/gnrc_ndp_node.c index bb9ed06b4478b07b97bb2a0391b8a5ef15f35da6..402d344d209231df370218cbba6be2ac663e4d92 100644 --- a/sys/net/gnrc/network_layer/ndp/node/gnrc_ndp_node.c +++ b/sys/net/gnrc/network_layer/ndp/node/gnrc_ndp_node.c @@ -80,6 +80,8 @@ kernel_pid_t gnrc_ndp_node_next_hop_l2addr(uint8_t *l2addr, uint8_t *l2addr_len, } #endif + /* cppcheck-suppress knownConditionTrueFalse + * cppcheck bug: next_hop_ip might be initialized if a FIB is available */ if (next_hop_ip == NULL) { /* no route to host */ if (!dst_link_local) { if (iface == KERNEL_PID_UNDEF) { diff --git a/sys/net/gnrc/network_layer/sixlowpan/nd/gnrc_sixlowpan_nd.c b/sys/net/gnrc/network_layer/sixlowpan/nd/gnrc_sixlowpan_nd.c index 6c77c4213e3ae6eb806c01645dd3424501e1acb7..f248962bdf7c0679489a9cc0ea71fe11fee4b789 100644 --- a/sys/net/gnrc/network_layer/sixlowpan/nd/gnrc_sixlowpan_nd.c +++ b/sys/net/gnrc/network_layer/sixlowpan/nd/gnrc_sixlowpan_nd.c @@ -128,7 +128,7 @@ kernel_pid_t gnrc_sixlowpan_nd_next_hop_l2addr(uint8_t *l2addr, uint8_t *l2addr_ kernel_pid_t fib_iface; ipv6_addr_t next_hop_actual; /* FIB copies address into this variable */ /* don't look-up link local addresses in FIB */ - if ((next_hop == NULL) && !ipv6_addr_is_link_local(dst)) { + if (!ipv6_addr_is_link_local(dst)) { size_t next_hop_size = sizeof(ipv6_addr_t); uint32_t next_hop_flags = 0; if ((next_hop == NULL) && @@ -142,6 +142,8 @@ kernel_pid_t gnrc_sixlowpan_nd_next_hop_l2addr(uint8_t *l2addr, uint8_t *l2addr_ #endif #ifdef MODULE_GNRC_SIXLOWPAN_ND_ROUTER /* next hop determination: https://tools.ietf.org/html/rfc6775#section-6.5.4 */ + /* cppcheck-suppress redundantAssignment + * This path is only present for a certain configuration */ nc_entry = gnrc_ipv6_nc_get(iface, dst); #ifdef MODULE_FIB if ((next_hop != NULL) && (nc_entry == NULL)) { @@ -161,6 +163,8 @@ kernel_pid_t gnrc_sixlowpan_nd_next_hop_l2addr(uint8_t *l2addr, uint8_t *l2addr_ } #endif /* next hop determination according to: https://tools.ietf.org/html/rfc6775#section-5.6 */ + /* cppcheck-suppress knownConditionTrueFalse + * cppcheck bug: next_hop might be set before */ if ((next_hop == NULL) && ipv6_addr_is_link_local(dst)) { /* prefix is "on-link" */ /* multicast is not handled here anyway so we don't need to check that */ next_hop = dst; @@ -175,6 +179,8 @@ kernel_pid_t gnrc_sixlowpan_nd_next_hop_l2addr(uint8_t *l2addr, uint8_t *l2addr_ } /* address resolution of next_hop: https://tools.ietf.org/html/rfc6775#section-5.7 */ + /* cppcheck-suppress knownConditionTrueFalse + * cppcheck bug: nc_entry might be set before */ if ((nc_entry == NULL) || (next_hop != dst)) { /* get if not gotten from previous check */ nc_entry = gnrc_ipv6_nc_get(iface, next_hop); diff --git a/sys/net/gnrc/routing/rpl/p2p/gnrc_rpl_p2p.c b/sys/net/gnrc/routing/rpl/p2p/gnrc_rpl_p2p.c index 897bec736e5a85de8c1621b0ad866c6770cc77a7..943aa779b8461e801d51e33627d8dff66c2bfbe8 100644 --- a/sys/net/gnrc/routing/rpl/p2p/gnrc_rpl_p2p.c +++ b/sys/net/gnrc/routing/rpl/p2p/gnrc_rpl_p2p.c @@ -48,9 +48,8 @@ const uint8_t gnrc_rpl_p2p_lifetime_lookup[4] = { 1, 4, 16, 64 }; void gnrc_rpl_p2p_update(void) { - gnrc_rpl_p2p_ext_t *p2p_ext; for (uint8_t i = 0; i < GNRC_RPL_P2P_EXTS_NUMOF; ++i) { - p2p_ext = &gnrc_rpl_p2p_exts[i]; + gnrc_rpl_p2p_ext_t *p2p_ext = &gnrc_rpl_p2p_exts[i]; if ((p2p_ext->state) && (p2p_ext->lifetime_sec > 0)) { p2p_ext->lifetime_sec -= GNRC_RPL_LIFETIME_UPDATE_STEP; if (p2p_ext->lifetime_sec <= 0) { diff --git a/sys/net/gnrc/sock/udp/gnrc_sock_udp.c b/sys/net/gnrc/sock/udp/gnrc_sock_udp.c index 0ac4026b0fcb3d73fb0df000573149c1d2731b83..b5000b5063e38dee8b7d7780f342a6a3495045b4 100644 --- a/sys/net/gnrc/sock/udp/gnrc_sock_udp.c +++ b/sys/net/gnrc/sock/udp/gnrc_sock_udp.c @@ -69,10 +69,9 @@ static bool _dyn_port_used(uint16_t port) */ static uint16_t _get_dyn_port(sock_udp_t *sock) { - uint16_t port; unsigned count = GNRC_SOCK_DYN_PORTRANGE_NUM; do { - port = GNRC_SOCK_DYN_PORTRANGE_MIN + + uint16_t port = GNRC_SOCK_DYN_PORTRANGE_MIN + (_dyn_port_next * GNRC_SOCK_DYN_PORTRANGE_OFF) % GNRC_SOCK_DYN_PORTRANGE_NUM; _dyn_port_next++; if ((sock == NULL) || (sock->flags & SOCK_FLAGS_REUSE_EP) || diff --git a/sys/quad_math/muldi3.c b/sys/quad_math/muldi3.c index 61b781ca52a5d0ad9ba1a6c3294347f0ca0d731d..4e703238c89e141c5847e55a840c63adc317e3ab 100644 --- a/sys/quad_math/muldi3.c +++ b/sys/quad_math/muldi3.c @@ -97,7 +97,7 @@ quad_t __muldi3(quad_t a, quad_t b) { union uu u, v, low, prod; u_int high, mid, udiff, vdiff; - int negall, negmid; + int negall; #define u1 u.ul[H] #define u0 u.ul[L] #define v1 v.ul[H] @@ -131,6 +131,7 @@ quad_t __muldi3(quad_t a, quad_t b) prod.q = __lmulq(u0, v0); } else { + int negmid; /* * Compute the three intermediate products, remembering * whether the middle term is negative. We can discard diff --git a/sys/quad_math/qdivrem.c b/sys/quad_math/qdivrem.c index 9ef434b9912ff15cd8278f291bfa968956ef53f4..8ff7ecb15b241757f53c1c2940b7c808928a2068 100644 --- a/sys/quad_math/qdivrem.c +++ b/sys/quad_math/qdivrem.c @@ -78,6 +78,8 @@ __qdivrem(u_quad_t uq, u_quad_t vq, u_quad_t *arq) /* divide by zero. */ static volatile const unsigned int zero = 0; + /* cppcheck-suppress zerodiv + * Divission by zero is on purpose here */ tmp.ul[H] = tmp.ul[L] = 1 / zero; if (arq) { diff --git a/sys/shell/commands/sc_gnrc_rpl.c b/sys/shell/commands/sc_gnrc_rpl.c index 95ff507a3b838de0128b2738e6a93bf3aac774f5..67062f2f8ff7dc2d4f2336f407296d041ea8d2b3 100644 --- a/sys/shell/commands/sc_gnrc_rpl.c +++ b/sys/shell/commands/sc_gnrc_rpl.c @@ -31,9 +31,8 @@ int _gnrc_rpl_init(char *arg) { - gnrc_ipv6_netif_t *entry = NULL; kernel_pid_t iface_pid = (kernel_pid_t) atoi(arg); - entry = gnrc_ipv6_netif_get(iface_pid); + gnrc_ipv6_netif_t *entry = gnrc_ipv6_netif_get(iface_pid); if (entry == NULL) { puts("unknown interface specified"); @@ -55,8 +54,7 @@ int _gnrc_rpl_dodag_root(char *arg1, char *arg2) return 1; } - gnrc_rpl_instance_t *inst = NULL; - inst = gnrc_rpl_root_init(instance_id, &dodag_id, false, false); + gnrc_rpl_instance_t *inst = gnrc_rpl_root_init(instance_id, &dodag_id, false, false); if (inst == NULL) { char addr_str[IPV6_ADDR_MAX_STR_LEN]; printf("error: could not add DODAG (%s) to instance (%d)\n", diff --git a/sys/universal_address/universal_address.c b/sys/universal_address/universal_address.c index db9db126aacd7fe1bda56d02148f31965a8bccfa..b581c9d302fc2dec7697bf2f741b4f832e57bdb7 100644 --- a/sys/universal_address/universal_address.c +++ b/sys/universal_address/universal_address.c @@ -72,6 +72,9 @@ static mutex_t mtx_access = MUTEX_INIT; */ static universal_address_container_t *universal_address_find_entry(uint8_t *addr, size_t addr_size) { + /* cppcheck-suppress unsignedLessThanZero + * (reason: UNIVERSAL_ADDRESS_MAX_ENTRIES may be zero in which case this + * code is optimized out) */ for (size_t i = 0; i < UNIVERSAL_ADDRESS_MAX_ENTRIES; ++i) { if (universal_address_table[i].address_size == addr_size) { if (memcmp((universal_address_table[i].address), addr, addr_size) == 0) { @@ -91,7 +94,11 @@ static universal_address_container_t *universal_address_find_entry(uint8_t *addr */ static universal_address_container_t *universal_address_get_next_unused_entry(void) { + /* cppcheck-suppress unsignedLessThanZero + * (reason: UNIVERSAL_ADDRESS_MAX_ENTRIES may be zero in which case this + * code is optimized out) */ if (universal_address_table_filled < UNIVERSAL_ADDRESS_MAX_ENTRIES) { + /* cppcheck-suppress unsignedLessThanZero */ for (size_t i = 0; i < UNIVERSAL_ADDRESS_MAX_ENTRIES; ++i) { if (universal_address_table[i].use_count == 0) { return &(universal_address_table[i]); @@ -294,6 +301,9 @@ void universal_address_init(void) { mutex_lock(&mtx_access); + /* cppcheck-suppress unsignedLessThanZero + * (reason: UNIVERSAL_ADDRESS_MAX_ENTRIES may be zero in which case this + * code is optimized out) */ for (size_t i = 0; i < UNIVERSAL_ADDRESS_MAX_ENTRIES; ++i) { universal_address_table[i].use_count = 0; universal_address_table[i].address_size = 0; @@ -307,6 +317,9 @@ void universal_address_reset(void) { mutex_lock(&mtx_access); + /* cppcheck-suppress unsignedLessThanZero + * (reason: UNIVERSAL_ADDRESS_MAX_ENTRIES may be zero in which case this + * code is optimized out) */ for (size_t i = 0; i < UNIVERSAL_ADDRESS_MAX_ENTRIES; ++i) { universal_address_table[i].use_count = 0; } @@ -348,6 +361,9 @@ void universal_address_print_table(void) printf("[universal_address_print_table] universal_address_table_filled: %d\n", \ (int)universal_address_table_filled); + /* cppcheck-suppress unsignedLessThanZero + * (reason: UNIVERSAL_ADDRESS_MAX_ENTRIES may be zero in which case this + * code is optimized out) */ for (size_t i = 0; i < UNIVERSAL_ADDRESS_MAX_ENTRIES; ++i) { universal_address_print_entry(&universal_address_table[i]); } diff --git a/tests/driver_hdc1000/main.c b/tests/driver_hdc1000/main.c index b84a5e2c80c3b9e4d4b1e70102fade151c021d7c..864024c4845dd40877ef444434cd7f8b15782823 100644 --- a/tests/driver_hdc1000/main.c +++ b/tests/driver_hdc1000/main.c @@ -33,7 +33,6 @@ int main(void) { hdc1000_t dev; int16_t temp, hum; - size_t len; char tstr[8]; char hstr[8]; @@ -49,6 +48,7 @@ int main(void) } while (1) { + size_t len; hdc1000_read(&dev, &temp, &hum); len = fmt_s16_dfp(tstr, temp, 2); diff --git a/tests/driver_pn532/main.c b/tests/driver_pn532/main.c index 3b501dd815cd01dcb15d49225c1522dcb79f53cc..b74b84f2b346d6bd3da5e81c450f7607d5a5b87f 100644 --- a/tests/driver_pn532/main.c +++ b/tests/driver_pn532/main.c @@ -50,6 +50,8 @@ int main(void) ret = pn532_init_i2c(&pn532, &pn532_conf[0]); #elif defined(PN532_SUPPORT_SPI) ret = pn532_init_spi(&pn532, &pn532_conf[0]); +#else +#error None of PN532_SUPPORT_I2C and PN532_SUPPORT_SPI set! #endif if (ret != 0) { diff --git a/tests/leds/main.c b/tests/leds/main.c index 1405e12b10ef5e8893378c28ef4997435dc1eee0..fc329a8146bfc55a45d939fd506ce5514e55b011 100644 --- a/tests/leds/main.c +++ b/tests/leds/main.c @@ -77,6 +77,8 @@ int main(void) #endif puts("On-board LED test\n"); + /* cppcheck-suppress knownConditionTrueFalse + * rationale: board-dependent ifdefs */ if (numof == 0) { puts("NO LEDs AVAILABLE"); } diff --git a/tests/periph_hwrng/main.c b/tests/periph_hwrng/main.c index c81b60be50932671c2aaf0fb6afc9cd3d8a60e34..3b67b4e148da4a2fcfc23f998e363b9db03daaee 100644 --- a/tests/periph_hwrng/main.c +++ b/tests/periph_hwrng/main.c @@ -31,7 +31,7 @@ int main(void) uint8_t buf[LIMIT]; puts("\nHWRNG peripheral driver test\n"); - printf("This test will print from 1 to %i random bytes about every " + printf("This test will print from 1 to %u random bytes about every " "second\n\n", LIMIT); puts("Initializing the HWRNG driver.\n"); diff --git a/tests/pthread_cleanup/main.c b/tests/pthread_cleanup/main.c index fc1e92c6209d627586d6618f8380c941ba936e03..a6ec1938967ea4ce538f59b76bf8f6592ba5e3ef 100644 --- a/tests/pthread_cleanup/main.c +++ b/tests/pthread_cleanup/main.c @@ -68,7 +68,7 @@ int main(void) { void *res; pthread_join(th_id, (void **) &res); - printf("Result: %u\n", (int) (intptr_t) res); + printf("Result: %i\n", (int) (intptr_t) res); puts("Done."); return 0; } diff --git a/tests/unittests/tests-crypto/tests-crypto.h b/tests/unittests/tests-crypto/tests-crypto.h index 30d557e7023aed4dc24ad918fd00b2a96c6af874..95a85fadc0347445c9524fd07d731efa3fae55f0 100644 --- a/tests/unittests/tests-crypto/tests-crypto.h +++ b/tests/unittests/tests-crypto/tests-crypto.h @@ -40,7 +40,7 @@ void tests_crypto(void); */ Test *tests_crypto_chacha_tests(void); -static inline int compare(uint8_t a[16], uint8_t b[16], uint8_t len) +static inline int compare(uint8_t *a, uint8_t *b, uint8_t len) { int result = 1;