diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2022-07-24 16:14:09 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-07-24 16:14:09 -0700 |
commit | 645b1184ec996696f24a65c1ad39fc50a1e5cbb2 (patch) | |
tree | 49b7a45ba5a9ec447d97e344a19c0a393bb64cd6 /safepath.h | |
parent | 527c20f525c0f178707dea37589f494c9f45e48f (diff) | |
download | safepath-645b1184ec996696f24a65c1ad39fc50a1e5cbb2.tar.gz safepath-645b1184ec996696f24a65c1ad39fc50a1e5cbb2.tar.bz2 safepath-645b1184ec996696f24a65c1ad39fc50a1e5cbb2.zip |
Correctly handle readlink overflow.
* safepath.h (SAFEPATH_TOOLONG): New enum constant.
* safepath.c (safepatch_check): Don't ignore the truncation
situation from readlink. Use the full buffer length,
and if readlink returns 256, then diagnose overflow using the
new SAFEPATH_TOOLONG error code and bail.
(safepath_strerr): Map SAFEPATH_TOOLONG.
Diffstat (limited to 'safepath.h')
-rw-r--r-- | safepath.h | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -45,6 +45,7 @@ enum { SAFEPATH_INVAL, /* path is invalid */ SAFEPATH_NOMEM, /* out of memory */ SAFEPATH_LOOP, /* more than 8 levels of symlink */ + SAFEPATH_TOOLONG, /* component or symlink target too long */ }; int safepath_check(const char *name); |