first, use code tags around your code.
Second, give this a try:
while( digitalRead(buttonPin)==HIGH );
buttonState=pulseIn(buttonPin,HIGH);
What may be happening is that you may be starting a pulseIn while the signal is already HIGH, so you're not getting the full pulse. The extra line I posted will block until the signal is LOW, and then run pulseIn, letting you get the full pulse time.