diff --git a/src/utils/date.c b/src/utils/date.c index a5971b2..123006f 100644 --- a/src/utils/date.c +++ b/src/utils/date.c @@ -17,6 +17,7 @@ * along with libg1m; if not, see . * ************************************************************************** */ #include +#include /** * g1m_decode_date: @@ -29,7 +30,15 @@ int g1m_decode_date(const char *c, time_t *t) { - /* TODO: make checks on structure */ + /* checks */ + if (memchr(c, 0, 14)) return (g1m_error_op); + if (!isdigit(c[0]) || !isdigit(c[1]) || !isdigit(c[2]) + || !isdigit(c[3]) || c[4] != '.' + || !isdigit(c[5]) || !isdigit(c[6]) || !isdigit(c[7]) + || !isdigit(c[8]) || c[9] != '.' + || !isdigit(c[10]) || !isdigit(c[11]) || !isdigit(c[12]) + || !isdigit(c[13])) + return (g1m_error_op); /* helper values */ const int two = '0' + '0' * 10; diff --git a/src/utils/version.c b/src/utils/version.c index ed5ea1b..adc617d 100644 --- a/src/utils/version.c +++ b/src/utils/version.c @@ -17,6 +17,7 @@ * along with libg1m; if not, see . * ************************************************************************** */ #include +#include /** * g1m_decode_version: @@ -29,7 +30,13 @@ int g1m_decode_version(const char *raw, g1m_version_t *version) { - /* TODO: make checks on format */ + /* checks */ + if (memchr(raw, 0, 10)) return (g1m_error_op); + if (!isdigit(raw[0]) || !isdigit(raw[1]) || raw[2] != '.' + || !isdigit(raw[3]) || !isdigit(raw[4]) || raw[5] != '.' + || !isdigit(raw[6]) || !isdigit(raw[7]) + || !isdigit(raw[8]) || !isdigit(raw[9])) + return (g1m_error_op); /* helper values */ const int two = '0' + '0' * 10;