a string whose dynamic length is longer than its static length.
switch (TYPE_CODE (inner))
{
case TYPE_CODE_STRING:
switch (TYPE_CODE (inner))
{
case TYPE_CODE_STRING:
- if (length > TYPE_LENGTH (type))
+ if (length > TYPE_LENGTH (type) - 2)
{
fprintf_filtered (stream,
{
fprintf_filtered (stream,
- "<dynamic length %ld > static length %d>",
+ "<dynamic length %ld > static length %d> *invalid*",
length, TYPE_LENGTH (type));
length, TYPE_LENGTH (type));
+
+ /* Don't print the string; doing so might produce a
+ segfault. */
+ return length;
}
LA_PRINT_STRING (stream, data_addr, length, 0);
return length;
}
LA_PRINT_STRING (stream, data_addr, length, 0);
return length;