ar71xx: add sanity checks to decode_rle

Also use -EINVAL instead of -1.

SVN-Revision: 31353
master
Gabor Juhos 13 years ago
parent 8f921175ba
commit 5c9ca38e47
  1. 9
      target/linux/ar71xx/files/arch/mips/ath79/mach-rb750.c

@ -299,24 +299,29 @@ static int decode_rle(char *output, int len, char *in)
{
char *ptr = output;
char *end = output + len;
if (!output || !in)
return -EINVAL;
while (*in) {
if (*in < 0) {
int i = -*in++;
while (i-- > 0) {
if (ptr >= end)
return -1;
return -EINVAL;
*ptr++ = *in++;
}
} else if (*in > 0) {
int i = *in++;
while (i-- > 0) {
if (ptr >= end)
return -1;
return -EINVAL;
*ptr++ = *in;
}
in++;
}
}
return ptr - output;
}

Loading…
Cancel
Save