diff options
-rw-r--r-- | net/ax25/ax25_addr.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/ax25/ax25_addr.c b/net/ax25/ax25_addr.c index 9162409559cf..e7c9b0ea17a1 100644 --- a/net/ax25/ax25_addr.c +++ b/net/ax25/ax25_addr.c | |||
@@ -189,8 +189,10 @@ const unsigned char *ax25_addr_parse(const unsigned char *buf, int len, | |||
189 | digi->ndigi = 0; | 189 | digi->ndigi = 0; |
190 | 190 | ||
191 | while (!(buf[-1] & AX25_EBIT)) { | 191 | while (!(buf[-1] & AX25_EBIT)) { |
192 | if (d >= AX25_MAX_DIGIS) return NULL; /* Max of 6 digis */ | 192 | if (d >= AX25_MAX_DIGIS) |
193 | if (len < 7) return NULL; /* Short packet */ | 193 | return NULL; |
194 | if (len < AX25_ADDR_LEN) | ||
195 | return NULL; | ||
194 | 196 | ||
195 | memcpy(&digi->calls[d], buf, AX25_ADDR_LEN); | 197 | memcpy(&digi->calls[d], buf, AX25_ADDR_LEN); |
196 | digi->ndigi = d + 1; | 198 | digi->ndigi = d + 1; |