* ch-valprint.c (chill_val_print): To avoid segfaults, don't print

a string whose dynamic length is longer than its static length.
This commit is contained in:
Jim Blandy
1997-12-10 22:58:21 +00:00
parent b2839a5602
commit bf6a4419d6

View File

@@ -422,11 +422,15 @@ chill_val_print (type, valaddr, address, stream, format, deref_ref, recurse,
switch (TYPE_CODE (inner)) switch (TYPE_CODE (inner))
{ {
case TYPE_CODE_STRING: 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); LA_PRINT_STRING (stream, data_addr, length, 0);
return length; return length;