The serial library already buffers up to 32 characters in a library buffer on a interrupt basis.
// Define constants and variables for buffering incoming serial data. We're
// using a ring buffer (I think), in which rx_buffer_head is the index of the
// location to which to write the next incoming character and rx_buffer_tail
// is the index of the location from which to read.
#if (RAMEND < 1000)
#define RX_BUFFER_SIZE 32
#define RX_BUFFER_SIZE 128
Or 128 characters, depending on how much memory is available.