diff options
author | Leo Ruan <tingquan.ruan@cn.bosch.com> | 2018-08-04 20:07:40 +0200 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2018-08-08 12:28:57 +0200 |
commit | f5392c365447706f772559942ddd6dc9e1d21a07 (patch) | |
tree | 16fe62189e8d67f2ef6dfe504498345a1b5b67d7 | |
parent | 4ea9ec7cf37a0c52f2c39a13887aaad11042ef5c (diff) | |
download | libsocketcan-f5392c365447706f772559942ddd6dc9e1d21a07.tar.gz libsocketcan-f5392c365447706f772559942ddd6dc9e1d21a07.tar.xz |
Fix parse_rtattr() does not completely initialize
Because max is the index of the last element in array tb, max+1
elements need to be initialized.
Signed-off-by: Leo Ruan <tingquan.ruan@cn.bosch.com>
Signed-off-by: Mark Jonas <mark.jonas@de.bosch.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
-rw-r--r-- | src/libsocketcan.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/libsocketcan.c b/src/libsocketcan.c index c97a28c..093b64a 100644 --- a/src/libsocketcan.c +++ b/src/libsocketcan.c @@ -74,10 +74,18 @@ struct req_info { struct can_bittiming *bittiming; }; +/** + * @brief this method parse attributions of link info + * + * @param tb: point array of struct rtattr point + * @param max: index of the last element in array tb + * @param rtattr: point of link info data + * @param len: length of link info data + */ static void parse_rtattr(struct rtattr **tb, int max, struct rtattr *rta, int len) { - memset(tb, 0, sizeof(*tb) * max); + memset(tb, 0, sizeof(*tb) * (max + 1)); while (RTA_OK(rta, len)) { if (rta->rta_type <= max) { tb[rta->rta_type] = rta; |