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;