From af17d63992a1e30e56b1c31a0c2ec40c50de4fd5 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Thu, 21 Nov 2013 23:48:19 +0000 Subject: Revert r195381, "Implement a bunch of custom glibc wrappers & corresponding tests." It broke a buildbot. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@195392 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/dfsan/dfsan_custom.cc | 353 +--------------------------------------------- 1 file changed, 2 insertions(+), 351 deletions(-) (limited to 'lib/dfsan/dfsan_custom.cc') diff --git a/lib/dfsan/dfsan_custom.cc b/lib/dfsan/dfsan_custom.cc index b654d2f15..6a132db06 100644 --- a/lib/dfsan/dfsan_custom.cc +++ b/lib/dfsan/dfsan_custom.cc @@ -11,35 +11,26 @@ // // This file defines the custom functions listed in done_abilist.txt. //===----------------------------------------------------------------------===// - #include "sanitizer_common/sanitizer_internal_defs.h" #include "sanitizer_common/sanitizer_linux.h" #include "dfsan/dfsan.h" -#include #include #include #include -#include #include -#include -#include -#include -#include #include #include -#include -#include -#include -#include #include +#include #include #include using namespace __dfsan; extern "C" { + SANITIZER_INTERFACE_ATTRIBUTE int __dfsw_stat(const char *path, struct stat *buf, dfsan_label path_label, dfsan_label buf_label, dfsan_label *ret_label) { @@ -347,344 +338,4 @@ SANITIZER_INTERFACE_ATTRIBUTE int __dfsw_dl_iterate_phdr( return dl_iterate_phdr(dl_iterate_phdr_cb, &dipi); } -SANITIZER_INTERFACE_ATTRIBUTE -char *__dfsw_ctime_r(const time_t *timep, char *buf, dfsan_label timep_label, - dfsan_label buf_label, dfsan_label *ret_label) { - char *ret = ctime_r(timep, buf); - if (ret) { - dfsan_set_label(dfsan_read_label(timep, sizeof(time_t)), buf, - strlen(buf) + 1); - *ret_label = buf_label; - } else { - *ret_label = 0; - } - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -char *__dfsw_fgets(char *s, int size, FILE *stream, dfsan_label s_label, - dfsan_label size_label, dfsan_label stream_label, - dfsan_label *ret_label) { - char *ret = fgets(s, size, stream); - if (ret) { - dfsan_set_label(0, ret, strlen(ret) + 1); - *ret_label = s_label; - } else { - *ret_label = 0; - } - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -char *__dfsw_getcwd(char *buf, size_t size, dfsan_label buf_label, - dfsan_label size_label, dfsan_label *ret_label) { - char *ret = getcwd(buf, size); - if (ret) { - dfsan_set_label(0, ret, strlen(ret) + 1); - *ret_label = buf_label; - } else { - *ret_label = 0; - } - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -char *__dfsw_get_current_dir_name(dfsan_label *ret_label) { - char *ret = get_current_dir_name(); - if (ret) { - dfsan_set_label(0, ret, strlen(ret) + 1); - } - *ret_label = 0; - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -int __dfsw_gethostname(char *name, size_t len, dfsan_label name_label, - dfsan_label len_label, dfsan_label *ret_label) { - int ret = gethostname(name, len); - if (ret == 0) { - dfsan_set_label(0, name, strlen(name) + 1); - } - *ret_label = 0; - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -int __dfsw_getrlimit(int resource, struct rlimit *rlim, - dfsan_label resource_label, dfsan_label rlim_label, - dfsan_label *ret_label) { - int ret = getrlimit(resource, rlim); - if (ret == 0) { - dfsan_set_label(0, rlim, sizeof(struct rlimit)); - } - *ret_label = 0; - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -int __dfsw_getrusage(int who, struct rusage *usage, dfsan_label who_label, - dfsan_label usage_label, dfsan_label *ret_label) { - int ret = getrusage(who, usage); - if (ret == 0) { - dfsan_set_label(0, usage, sizeof(struct rusage)); - } - *ret_label = 0; - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -char *__dfsw_strcpy(char *dest, const char *src, dfsan_label dst_label, - dfsan_label src_label, dfsan_label *ret_label) { - char *ret = strcpy(dest, src); - if (ret) { - internal_memcpy(shadow_for(dest), shadow_for(src), - sizeof(dfsan_label) * (strlen(src) + 1)); - } - *ret_label = dst_label; - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -long int __dfsw_strtol(const char *nptr, char **endptr, int base, - dfsan_label nptr_label, dfsan_label endptr_label, - dfsan_label base_label, dfsan_label *ret_label) { - char *tmp_endptr; - long int ret = strtol(nptr, &tmp_endptr, base); - if (endptr) { - *endptr = tmp_endptr; - } - if (tmp_endptr > nptr) { - // If *tmp_endptr is '\0' include its label as well. - *ret_label = dfsan_union( - base_label, - dfsan_read_label(nptr, tmp_endptr - nptr + (*tmp_endptr ? 0 : 1))); - } else { - *ret_label = 0; - } - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -double __dfsw_strtod(const char *nptr, char **endptr, - dfsan_label nptr_label, dfsan_label endptr_label, - dfsan_label *ret_label) { - char *tmp_endptr; - double ret = strtod(nptr, &tmp_endptr); - if (endptr) { - *endptr = tmp_endptr; - } - if (tmp_endptr > nptr) { - // If *tmp_endptr is '\0' include its label as well. - *ret_label = dfsan_read_label( - nptr, - tmp_endptr - nptr + (*tmp_endptr ? 0 : 1)); - } else { - *ret_label = 0; - } - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -long long int __dfsw_strtoll(const char *nptr, char **endptr, int base, - dfsan_label nptr_label, dfsan_label endptr_label, - dfsan_label base_label, dfsan_label *ret_label) { - char *tmp_endptr; - long long int ret = strtoll(nptr, &tmp_endptr, base); - if (endptr) { - *endptr = tmp_endptr; - } - if (tmp_endptr > nptr) { - // If *tmp_endptr is '\0' include its label as well. - *ret_label = dfsan_union( - base_label, - dfsan_read_label(nptr, tmp_endptr - nptr + (*tmp_endptr ? 0 : 1))); - } else { - *ret_label = 0; - } - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -unsigned long int __dfsw_strtoul(const char *nptr, char **endptr, int base, - dfsan_label nptr_label, dfsan_label endptr_label, - dfsan_label base_label, dfsan_label *ret_label) { - char *tmp_endptr; - unsigned long int ret = strtoul(nptr, &tmp_endptr, base); - if (endptr) { - *endptr = tmp_endptr; - } - if (tmp_endptr > nptr) { - // If *tmp_endptr is '\0' include its label as well. - *ret_label = dfsan_union( - base_label, - dfsan_read_label(nptr, tmp_endptr - nptr + (*tmp_endptr ? 0 : 1))); - } else { - *ret_label = 0; - } - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -long long unsigned int __dfsw_strtoull(const char *nptr, char **endptr, - dfsan_label nptr_label, - int base, dfsan_label endptr_label, - dfsan_label base_label, - dfsan_label *ret_label) { - char *tmp_endptr; - long long unsigned int ret = strtoull(nptr, &tmp_endptr, base); - if (endptr) { - *endptr = tmp_endptr; - } - if (tmp_endptr > nptr) { - // If *tmp_endptr is '\0' include its label as well. - *ret_label = dfsan_union( - base_label, - dfsan_read_label(nptr, tmp_endptr - nptr + (*tmp_endptr ? 0 : 1))); - } else { - *ret_label = 0; - } - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -time_t __dfsw_time(time_t *t, dfsan_label t_label, dfsan_label *ret_label) { - time_t ret = time(t); - if (ret != (time_t) -1 && t) { - dfsan_set_label(0, t, sizeof(time_t)); - } - *ret_label = 0; - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -int __dfsw_inet_pton(int af, const char *src, void *dst, dfsan_label af_label, - dfsan_label src_label, dfsan_label dst_label, - dfsan_label *ret_label) { - int ret = inet_pton(af, src, dst); - if (ret == 1) { - dfsan_set_label(dfsan_read_label(src, strlen(src) + 1), dst, - af == AF_INET ? sizeof(struct in_addr) : sizeof(in6_addr)); - } - *ret_label = 0; - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -struct tm *__dfsw_localtime_r(const time_t *timep, struct tm *result, - dfsan_label timep_label, dfsan_label result_label, - dfsan_label *ret_label) { - struct tm *ret = localtime_r(timep, result); - if (ret) { - dfsan_set_label(dfsan_read_label(timep, sizeof(time_t)), result, - sizeof(struct tm)); - *ret_label = result_label; - } else { - *ret_label = 0; - } - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -int __dfsw_getpwuid_r(id_t uid, struct passwd *pwd, - char *buf, size_t buflen, struct passwd **result, - dfsan_label uid_label, dfsan_label pwd_label, - dfsan_label buf_label, dfsan_label buflen_label, - dfsan_label result_label, dfsan_label *ret_label) { - // Store the data in pwd, the strings referenced from pwd in buf, and the - // address of pwd in *result. On failure, NULL is stored in *result. - int ret = getpwuid_r(uid, pwd, buf, buflen, result); - if (ret == 0) { - dfsan_set_label(0, pwd, sizeof(struct passwd)); - dfsan_set_label(0, buf, strlen(buf) + 1); - } - *ret_label = 0; - dfsan_set_label(0, result, sizeof(struct passwd*)); - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -int __dfsw_poll(struct pollfd *fds, nfds_t nfds, int timeout, - dfsan_label dfs_label, dfsan_label nfds_label, - dfsan_label timeout_label, dfsan_label *ret_label) { - int ret = poll(fds, nfds, timeout); - if (ret >= 0) { - for (; nfds > 0; --nfds) { - dfsan_set_label(0, &fds[nfds - 1].revents, sizeof(fds[nfds - 1].revents)); - } - } - *ret_label = 0; - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -int __dfsw_select(int nfds, fd_set *readfds, fd_set *writefds, - fd_set *exceptfds, struct timeval *timeout, - dfsan_label nfds_label, dfsan_label readfds_label, - dfsan_label writefds_label, dfsan_label exceptfds_label, - dfsan_label timeout_label, dfsan_label *ret_label) { - int ret = select(nfds, readfds, writefds, exceptfds, timeout); - // Clear everything (also on error) since their content is either set or - // undefined. - if (readfds) { - dfsan_set_label(0, readfds, sizeof(fd_set)); - } - if (writefds) { - dfsan_set_label(0, writefds, sizeof(fd_set)); - } - if (exceptfds) { - dfsan_set_label(0, exceptfds, sizeof(fd_set)); - } - dfsan_set_label(0, timeout, sizeof(struct timeval)); - *ret_label = 0; - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -int __dfsw_sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *mask, - dfsan_label pid_label, - dfsan_label cpusetsize_label, - dfsan_label mask_label, dfsan_label *ret_label) { - int ret = sched_getaffinity(pid, cpusetsize, mask); - if (ret == 0) { - dfsan_set_label(0, mask, cpusetsize); - } - *ret_label = 0; - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -int __dfsw_sigemptyset(sigset_t *set, dfsan_label set_label, - dfsan_label *ret_label) { - int ret = sigemptyset(set); - dfsan_set_label(0, set, sizeof(sigset_t)); - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -int __dfsw_sigaction(int signum, const struct sigaction *act, - struct sigaction *oldact, dfsan_label signum_label, - dfsan_label act_label, dfsan_label oldact_label, - dfsan_label *ret_label) { - int ret = sigaction(signum, act, oldact); - if (oldact) { - dfsan_set_label(0, oldact, sizeof(struct sigaction)); - } - *ret_label = 0; - return ret; -} - -SANITIZER_INTERFACE_ATTRIBUTE -int __dfsw_gettimeofday(struct timeval *tv, struct timezone *tz, - dfsan_label tv_label, dfsan_label tz_label, - dfsan_label *ret_label) { - int ret = gettimeofday(tv, tz); - if (tv) { - dfsan_set_label(0, tv, sizeof(struct timeval)); - } - if (tz) { - dfsan_set_label(0, tz, sizeof(struct timezone)); - } - *ret_label = 0; - return ret; -} } -- cgit v1.2.3