aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authordacctal <donotcontactmevia@email.invalid>2026-06-29 03:19:33 +0000
committerdacctal <donotcontactmevia@email.invalid>2026-06-29 03:19:33 +0000
commitd85350854dca4c6495cb78c89ff4934c7a908509 (patch)
tree2b8cbd9db60f81b0ab538be447d318017e064ff1 /include
parent5f153abb7345aa4ddc574621d6842e07f80a559c (diff)
FCC: banned.h
Diffstat (limited to 'include')
-rw-r--r--include/banned.h47
-rw-r--r--include/vars.h3
2 files changed, 49 insertions, 1 deletions
diff --git a/include/banned.h b/include/banned.h
new file mode 100644
index 0000000..2b934c8
--- /dev/null
+++ b/include/banned.h
@@ -0,0 +1,47 @@
+#ifndef BANNED_H
+#define BANNED_H
+
+/*
+ * This header lists functions that have been banned from our code base,
+ * because they're too easy to misuse (and even if used correctly,
+ * complicate audits). Including this header turns them into compile-time
+ * errors.
+ */
+
+#define BANNED(func) sorry_##func##_is_a_banned_function
+
+#undef strcpy
+#define strcpy(x,y) BANNED(strcpy)
+#undef strcat
+#define strcat(x,y) BANNED(strcat)
+#undef strncpy
+#define strncpy(x,y,n) BANNED(strncpy)
+#undef strncat
+#define strncat(x,y,n) BANNED(strncat)
+#undef strtok
+#define strtok(x,y) BANNED(strtok)
+#undef strtok_r
+#define strtok_r(x,y,z) BANNED(strtok_r)
+
+#undef sprintf
+#undef vsprintf
+#define sprintf(...) BANNED(sprintf)
+#define vsprintf(...) BANNED(vsprintf)
+
+#undef gmtime
+#define gmtime(t) BANNED(gmtime)
+#undef localtime
+#define localtime(t) BANNED(localtime)
+#undef ctime
+#define ctime(t) BANNED(ctime)
+#undef ctime_r
+#define ctime_r(t, buf) BANNED(ctime_r)
+#undef asctime
+#define asctime(t) BANNED(asctime)
+#undef asctime_r
+#define asctime_r(t, buf) BANNED(asctime_r)
+
+#undef mktemp
+#define mktemp(x) BANNED(mktemp)
+
+#endif /* BANNED_H */
diff --git a/include/vars.h b/include/vars.h
index f9e5b37..c76b742 100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -23,6 +23,7 @@
#include <stdbool.h>
#include <stddef.h>
+#include "banned.h"
#define MAX_REPOS 1000
#define MAX_DIRS 100
@@ -142,4 +143,4 @@ void map_init(Map *map);
void map_put(Map *map, char *key, char *value);
char* map_get(Map *map, const char *key);
-#endif \ No newline at end of file
+#endif