In glibc 2.26 and earlier there is confusion in the usage of getcwd() by realpath() which can be used to write before the destination buffer leading to a buffer underflow and potential code execution.
https://www.halfdog.net/Security/2017/LibcRealpathBufferUnderflow/
https://www.exploit-db.com/exploits/44889/
https://www.exploit-db.com/exploits/43775/
https://usn.ubuntu.com/3536-1/
https://usn.ubuntu.com/3534-1/
https://security.netapp.com/advisory/ntap-20190404-0003/
https://access.redhat.com/errata/RHSA-2018:0805
http://www.securitytracker.com/id/1040162