1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#include <string.h> #include <stdlib.h> #include "_safety.h" char *strdup(const char *s) { ASSERT_NONNULL(s); DANGEROUS_READ(s, -1); size_t len = strlen(s) + 1; DANGER_OVER(); char *dup = malloc(len); memcpy(dup, s, len); return dup; }