aboutsummaryrefslogtreecommitdiff
path: root/include/apos/canary.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/apos/canary.h')
-rw-r--r--include/apos/canary.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/include/apos/canary.h b/include/apos/canary.h
new file mode 100644
index 0000000..30a3dd2
--- /dev/null
+++ b/include/apos/canary.h
@@ -0,0 +1,27 @@
+#ifndef APOS_CANARY_H
+#define APOS_CANARY_H
+
+/**
+ * @file canary.h
+ * Kernel stack canary handling.
+ */
+
+#include <apos/tcb.h>
+#include <apos/types.h>
+
+/**
+ * Place canary at end of kernel stack.
+ *
+ * @param t \ref tcb whose kernel stack to place canary in.
+ */
+void set_canary(struct tcb *t);
+
+/**
+ * Check that canary hasn't been accidentally overwritten.
+ *
+ * @param t \ref tcb whose kernel stack canary to check.
+ * @return \ref true if overwritten, \ref false otherwise.
+ */
+bool check_canary(struct tcb *t);
+
+#endif /* APOS_CANARY_H */