aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/ax25/ax25_addr.c6
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;