Adjust datetime parsing to be more robust. We now pass the length of the

Neil Conway <neilc@samurai.com>

Commit: 63e0d612f5a53d76218d4e59a35287391e284561
Author: Neil Conway <neilc@samurai.com>
Date: 2005-05-26T02:04:14Z
Releases: 8.1.0
Adjust datetime parsing to be more robust. We now pass the length of the
working buffer into ParseDateTime() and reject too-long input there,
rather than checking the length of the input string before calling
ParseDateTime(). The old method was bogus because ParseDateTime() can use
a variable amount of working space, depending on the content of the
input string (e.g. how many fields need to be NUL terminated). This fixes
a minor stack overrun -- I don't _think_ it's exploitable, although I
won't claim to be an expert.

Along the way, fix a bug reported by Mark Dilger: the working buffer
allocated by interval_in() was too short, which resulted in rejecting
some perfectly valid interval input values. I added a regression test for
this fix.

Files