add a fortified implementation of realpath

Change-Id: Icc59eacd1684f7cddd83d7a2b57dad0c7ada5eb7
This commit is contained in:
Daniel Micay 2015-04-18 13:04:19 -04:00
parent af7538b496
commit 3244d9f07f
1 changed files with 21 additions and 0 deletions

View File

@ -176,6 +176,27 @@ extern size_t __ctype_get_mb_cur_max(void);
#include <android/legacy_stdlib_inlines.h>
#endif
#if defined(__BIONIC_FORTIFY)
extern char* __realpath_real(const char*, char*) __RENAME(realpath);
__errordecl(__realpath_size_error, "realpath output parameter must be NULL or a >= PATH_MAX bytes buffer");
#if !defined(__clang__)
__BIONIC_FORTIFY_INLINE
char* realpath(const char* path, char* resolved) {
size_t bos = __bos(resolved);
/* PATH_MAX is unavailable without polluting the namespace, but it's always 4096 on Linux */
if (bos != __BIONIC_FORTIFY_UNKNOWN_SIZE && bos < 4096) {
__realpath_size_error();
}
return __realpath_real(path, resolved);
}
#endif
#endif /* defined(__BIONIC_FORTIFY) */
__END_DECLS
#endif /* _STDLIB_H */