tm_mon goes from 0-11 written dates from 1-12. It is too late to consider security here. The worst that can happen is that tm_mon == 0 gets negative but I assume glibc to do range checking. Index: libmrss-0.17.1/src/mrss_parser.c =================================================================== --- libmrss-0.17.1.orig/src/mrss_parser.c 2007-04-08 02:42:23.000000000 +0200 +++ libmrss-0.17.1/src/mrss_parser.c 2007-04-08 02:43:37.000000000 +0200 @@ -150,6 +150,7 @@ { char datebuf[256]; stm.tm_year -= 1900; + stm.tm_mon -= 1; if (!data->c_locale && !(data->c_locale = newlocale (LC_ALL_MASK, "C", NULL)))