/* Do paranoid checks, then fill in the required variables, and pass back the
pointer to the terminating '}'. */
-if (min > 65535 || max > 65535)
+if (min < 0 || min > 65535 || max < -1 || max > 65535)
*errorptr = ERR5;
else
{
}
else class_charcount++;
ptr++;
+ if (*ptr == 0)
+ {
+ *errorptr = ERR6;
+ goto PCRE_ERROR_RETURN;
+ }
}
- while (*ptr != 0 && *ptr != ']');
+ while (*ptr != ']');
/* Repeats for negated single chars are handled by the general code */
runlength++;
- if (ptr > pattern + pattern_length)
+ if ((const char *)ptr > pattern + pattern_length)
{
*errorptr = "internal error";
goto PCRE_ERROR_RETURN;
}
- if (ptr[1] >= tables_length - ctypes_offset)
- {
- *errorptr = ERR6;
- goto PCRE_ERROR_RETURN;
- }
}
/* This "while" is the end of the "do" above. */