summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeo Ruan <tingquan.ruan@cn.bosch.com>2018-08-04 20:07:40 +0200
committerMarc Kleine-Budde <mkl@pengutronix.de>2018-08-08 12:28:57 +0200
commitf5392c365447706f772559942ddd6dc9e1d21a07 (patch)
tree16fe62189e8d67f2ef6dfe504498345a1b5b67d7
parent4ea9ec7cf37a0c52f2c39a13887aaad11042ef5c (diff)
downloadlibsocketcan-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.c10
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;