Ok, then I guess I'm missing the fundamentals of For loops.
No, you are executing the for loop when there are 0, 1, 2, 3, or 4 bytes of serial data to read. If you ever get 5 characters in the buffer, you'll never read again.
You need to turn the less than in the while statement to a greater than or equal. Don't read anything until there are at least 5 bytes to read.