Change the format for printing synthetic field strings to limit the length of the string printed even if it's not correctly terminated. Link: https://lore.kernel.org/r/20201002210036.0200371b@oasis.local.home Link: https://lkml.kernel.org/r/b6bdb34e70d970e8026daa3503db6b8e5cdad524.1601848695.git.zanussi@kernel.org
Showing the changes to kernel (1 of 1 file). Show all
Unified · Split
| @@ -234,7 +234,7 @@ static const char *synth_field_fmt(char *type) · 233 unmodified lines | ||
| 234 | 234 | else if (strcmp(type, "gfp_t") == 0) |
| 235 | 235 | fmt = "%x"; |
| 236 | 236 | else if (synth_field_is_string(type)) |
| 237 | − fmt = "%s"; | |
| 237 | + fmt = "%.*s"; | |
| 238 | 238 | |
| 239 | 239 | return fmt; |
| 240 | 240 | } |
| @@ -303,11 +303,13 @@ static enum print_line_t print_synth_event(struct trace_iterator *iter, · 62 unmodified lines | ||
| 303 | 303 | str_field = (char *)entry + data_offset; |
| 304 | 304 | |
| 305 | 305 | trace_seq_printf(s, print_fmt, se->fields[i]->name, |
| 306 | + STR_VAR_LEN_MAX, | |
| 306 | 307 | str_field, |
| 307 | 308 | i == se->n_fields - 1 ? "" : " "); |
| 308 | 309 | n_u64++; |
| 309 | 310 | } else { |
| 310 | 311 | trace_seq_printf(s, print_fmt, se->fields[i]->name, |
| 312 | + STR_VAR_LEN_MAX, | |
| 311 | 313 | (char *)&entry->fields[n_u64], |
| 312 | 314 | i == se->n_fields - 1 ? "" : " "); |
| 313 | 315 | n_u64 += STR_VAR_LEN_MAX / sizeof(u64); |