if (length > sizeof(int))
{
- (*buffer) += length;
+ if (length > (unsigned)(bufend - *buffer))
+ *buffer = bufend;
+ else
+ (*buffer) += length;
+
return (0);
}
if ((count = length & 127) > sizeof(unsigned))
{
- (*buffer) += count;
+ if (count > (bufend - *buffer))
+ *buffer = bufend;
+ else
+ (*buffer) += count;
+
return (0);
}
if (*buffer >= bufend)
+ {
return (0);
+ }
+ else if (length > (unsigned)(bufend - *buffer))
+ {
+ *buffer = bufend;
+ return (0);
+ }
valend = *buffer + length;
oidptr = oid;