aboutsummaryrefslogtreecommitdiff
path: root/include/banned.h
diff options
context:
space:
mode:
authordacctal <donotcontactmevia@email.invalid>2026-06-29 23:58:00 +0000
committerdacctal <donotcontactmevia@email.invalid>2026-06-29 23:58:00 +0000
commite54a7dbdbb7c65d50f713f5f816dcb884259adea (patch)
treebb8345c737bacfae1415cf06a22110b54b6c0c59 /include/banned.h
parentb8a96b5fa7ccb6b170b1fb40c5ea4efe4519e568 (diff)
string concatenation (probably)
Diffstat (limited to 'include/banned.h')
-rw-r--r--include/banned.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/include/banned.h b/include/banned.h
new file mode 100644
index 0000000..3ea7dd4
--- /dev/null
+++ b/include/banned.h
@@ -0,0 +1,67 @@
+/*
+
+ pkgit - package it!
+
+ Copyright (C) 2026 dacctal
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+*/
+
+#ifndef PKGIT_BANNED_H
+#define PKGIT_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 */