--- a/dcdp/atm_tc.c +++ b/dcdp/atm_tc.c @@ -746,7 +746,8 @@ static void atm_aca_init(struct atm_priv ACA_TXOUT_EN | ACA_RXIN_EN | ACA_RXOUT_EN, 1); } -static int print_datetime(char *buffer, const struct timespec64 *datetime) +static int print_datetime(char *buffer, int buffer_size, + const struct timespec64 *datetime) { struct tm nowtm; char tmbuf[64]; @@ -765,7 +766,8 @@ static int print_datetime(char *buffer, nowtm.tm_hour, nowtm.tm_min, nowtm.tm_sec); - snprintf(buffer, sizeof(buffer), "%s.%06d", tmbuf, (int)datetime->tv_nsec / 1000); + snprintf(buffer, sizeof(tmbuf)+buffer_size, "%s.%06d", + tmbuf, (int)datetime->tv_nsec / 1000); return 0; } @@ -967,7 +969,7 @@ void show_atm_pvc(struct seq_file *seq, char buf[64]; seq_printf(seq, "\tNet device: %s\n", pvc->dev->name); - print_datetime(buf, &(pvc->access_time)); + print_datetime(buf, sizeof(buf), &(pvc->access_time)); seq_printf(seq, "\tLast user cell: %s\n", buf); seq_printf(seq, "\tPort: %d\n", pvc->port); seq_printf(seq, "\tSoftware TX Queue: %u\n", pvc->sw_txq_tbl);