
--- ./include/ccuredcheck.old.h	2004-05-03 00:59:18.000000000 -0700
+++ ./include/ccuredcheck.h	2004-05-05 23:00:30.000000000 -0700
@@ -596,6 +596,26 @@
   }
 }
 
+/* ************** ADD BLAST CHECK *************** */
+
+#ifdef CCURED_POST
+#define BLAST_CHECK_SEQ2FSEQ(b,e,p) CCURED_CHECK(__BLAST__CHECK_SEQ2FSEQ(b, e, p  FILE_AND_LINE))
+/* __inline CHECK_STATIC */
+void __BLAST__CHECK_SEQ2FSEQ(void *b, void *e, void *p CCURED_FAIL_EXTRA_PARAMS)
+{
+// Check the lower bound
+//   base - pointer to the first byte the user is allowed to read/write
+//   p    - pointer the user is using to read/write
+  if (p < b) {
+    BLAST_FAIL(FAIL_LBOUND  CCURED_FAIL_EXTRA_ARGS);
+  } else {
+    // ok
+  }
+}
+#endif
+
+/* ************** END BLAST CHECK *************** */
+
 // verify that 'x' is nonnegative
 #define CHECK_POSITIVE(x) CCURED_CHECK(__CHECK_POSITIVE(x  FILE_AND_LINE))
 __inline CHECK_STATIC
@@ -669,6 +689,25 @@
   }
 #endif
 
+/* **************** ADD BLAST CHECK ************** */
+
+#ifdef CCURED_POST
+#define BLASTCHECK_NULL(p) CCURED_CHECK(__BLAST__CHECK_NULL(p  FILE_AND_LINE))
+#ifdef OMIT_NULL_CHECK
+  #define __BLAST_CHECK_NULL(p)
+#else
+  /* __inline CHECK_STATIC */
+  void __BLAST__CHECK_NULL(void *p  CCURED_FAIL_EXTRA_PARAMS)
+  {
+    if (!p) {
+      BLAST_FAIL(FAIL_NULL  CCURED_FAIL_EXTRA_ARGS);
+    }
+  }
+#endif
+#endif
+
+/* **************** END BLAST CHECK ************** */
+
 #define LOG_SCALAR(p,id) __LOG_SCALAR(p, id)
 __inline CHECK_STATIC
 void __LOG_SCALAR(unsigned long p, int id)
--- ./include/ccuredannot.old.h	2004-05-03 01:24:30.000000000 -0700
+++ ./include/ccuredannot.h	2004-05-05 22:36:08.000000000 -0700
@@ -66,6 +66,7 @@
   #define FILE_AND_LINE
   #define CCURED_FAIL_STR   ccured_fail_str_terse
   #define CCURED_FAIL       ccured_fail_terse
+  #define BLAST_FAIL        blast_fail_terse
 #else
   // Use this in the prototype of checkers
   #define CCURED_FAIL_EXTRA_PARAMS , char *file, int line, char *function
@@ -77,6 +78,7 @@
   #define CCURED_FAIL_STR   ccured_fail_str
   // Use this to fail with a code (see the FAIL_ macros above)
   #define CCURED_FAIL       ccured_fail
+  #define BLAST_FAIL        blast_fail
 #endif
 
 
@@ -136,6 +138,18 @@
 */
 
 
+#ifdef CCURED_POST
+void blast_fail(int msgId, char* file, int line, char *func) {
+ERROR: goto ERROR;
+}
+void blast_fail_terse(int msgId) {
+ERROR1: goto ERROR1;
+}
+#else
+void blast_fail(int msgId, char* file, int line, char *func);
+void blast_fail_terse(int msgId);
+#endif
+
 MAYBE_NORETURN void ccured_fail(int msgId, char* file, int line, char *func);
 MAYBE_NORETURN void ccured_fail_terse(int msgId);
 /* fail with a given code, which maps to a message in the library */
