1 #ifndef BANNED_H 2 #define BANNED_H 3 4 /* 5 * Inspired by 6 * - http://github.com/git/git/blob/master/banned.h 7 * - http://github.com/leafsr/gcc-poison/blob/master/poison.h 8 * 9 * Force compile-time error on use of functions which are considered banned 10 * because they are easy to misuse and complicate audits. 11 */ 12 13 #define BANNED(func) sorry_##func##_is_a_banned_function 14 15 #undef strcpy 16 #define strcpy(...) BANNED(strcpy) 17 18 #undef strcat 19 #define strcat(...) BANNED(strcat) 20 21 #undef strncpy 22 #define strncpy(...) BANNED(strncpy) 23 24 #undef strncat 25 #define strncat(...) BANNED(strncat) 26 27 #undef sprintf 28 #define sprintf(...) BANNED(sprintf) 29 30 #undef vsprintf 31 #define vsprintf(...) BANNED(vsprintf) 32 33 #undef wcscpy 34 #define wcscpy(...) BANNED(wcscpy) 35 36 #undef stpcpy 37 #define stpcpy(...) BANNED(stpcpy) 38 39 #undef wcpcpy 40 #define wcpcpy(...) BANNED(wcpcpy) 41 42 #undef scanf 43 #define scanf(...) BANNED(scanf) 44 45 #undef sscanf 46 #define sscanf(...) BANNED(sscanf) 47 48 #undef vscanf 49 #define vscanf(...) BANNED(vscanf) 50 51 #undef fwscanf 52 #define fwscanf(...) BANNED(fwscanf) 53 54 #undef swscanf 55 #define swscanf(...) BANNED(swscanf) 56 57 #undef wscanf 58 #define wscanf(...) BANNED(wscanf) 59 60 #undef gets 61 #define gets(...) BANNED(gets) 62 63 #undef puts 64 #define puts(...) BANNED(puts) 65 66 #undef wcscat 67 #define wcscat(...) BANNED(wcscat) 68 69 #undef wcrtomb 70 #define wcrtomb(...) BANNED(wcrtomb) 71 72 #undef wctob 73 #define wctob(...) BANNED(wctob) 74 75 #undef asprintf 76 #define asprintf(...) BANNED(asprintf) 77 78 #undef vasprintf 79 #define vasprintf(...) BANNED(vasprintf) 80 81 #undef wcsncpy 82 #define wcsncpy(...) BANNED(wcsncpy) 83 84 #undef strtok 85 #define strtok(...) BANNED(strtok) 86 87 #undef wcstok 88 #define wcstok(...) BANNED(wcstok) 89 90 #undef strdupa 91 #define strdupa(...) BANNED(strdupa) 92 93 #undef strndupa 94 #define strndupa(...) BANNED(strndupa) 95 96 #undef longjmp 97 #define longjmp(...) BANNED(longjmp) 98 99 #undef siglongjmp 100 #define siglongjmp(...) BANNED(siglongjmp) 101 102 #undef setjmp 103 #define setjmp(...) BANNED(setjmp) 104 105 #undef sigsetjmp 106 #define sigsetjmp(...) BANNED(sigsetjmp) 107 108 #undef mallopt 109 #define mallopt(...) BANNED(mallopt) 110 111 #undef remove 112 #define remove(...) BANNED(remove) 113 114 #undef mktemp 115 #define mktemp(...) BANNED(mktemp) 116 117 #undef tmpnam 118 #define tmpnam(...) BANNED(tmpnam) 119 120 #undef tempnam 121 #define tempnam(...) BANNED(tempnam) 122 123 #undef cuserid 124 #define cuserid(...) BANNED(cuserid) 125 126 #undef rexec 127 #define rexec(...) BANNED(rexec) 128 129 #undef rexec_af 130 #define rexec_af(...) BANNED(rexec_af) 131 132 #endif /* BANNED_H */ 133