Macros to simplify tentative parsing.
diff --git a/src/dnssec.c b/src/dnssec.c
index 04b80cc..c9f80ee 100644
--- a/src/dnssec.c
+++ b/src/dnssec.c
@@ -3,6 +3,25 @@
#include "dnssec-crypto.h"
#include <assert.h>
+#define CHECKED_GETCHAR(var, ptr, len) do { \
+ if ((len) < 1) return 0; \
+ var = *ptr++; \
+ (len) -= 1; \
+ } while (0)
+
+#define CHECKED_GETSHORT(var, ptr, len) do { \
+ if ((len) < 2) return 0; \
+ GETSHORT(var, ptr); \
+ (len) -= 2; \
+ } while (0)
+
+#define CHECKED_GETLONG(var, ptr, len) do { \
+ if ((len) < 4) return 0; \
+ GETLONG(var, ptr); \
+ (len) -= 4; \
+ } while (0)
+
+
#define SERIAL_UNDEF -100
#define SERIAL_EQ 0
#define SERIAL_LT -1