diff options
-rw-r--r-- | safepath.c | 6 | ||||
-rw-r--r-- | safepath.h | 1 |
2 files changed, 7 insertions, 0 deletions
@@ -132,6 +132,8 @@ static int safepath_err(int eno) return SAFEPATH_OK; case ENOENT: return SAFEPATH_NOENT; + case ENOTDIR: + return SAFEPATH_NOTDIR; case EPERM: case EACCES: return SAFEPATH_PERM; @@ -158,6 +160,9 @@ static void set_errno(int spres) case SAFEPATH_NOENT: errno = ENOENT; break; + case SAFEPATH_NOTDIR: + errno = ENOTDIR; + break; case SAFEPATH_INVAL: errno = EINVAL; break; @@ -344,6 +349,7 @@ const char *safepath_strerr(int err) [SAFEPATH_UNSAFE] = "path contains untrusted component", [SAFEPATH_PERM] = "path contains inaccessible component", [SAFEPATH_NOENT] = "path contains nonexistent component", + [SAFEPATH_NOTDIR] = "path contains non-directory component", [SAFEPATH_INVAL] = "path is syntactically invalid", [SAFEPATH_NOMEM] = "out of memory", [SAFEPATH_LOOP] = "too many symlink resolutions" @@ -41,6 +41,7 @@ enum { SAFEPATH_UNSAFE, /* path traversible, unsafe */ SAFEPATH_PERM, /* path not traversible due to perms */ SAFEPATH_NOENT, /* component other than last doesn't exist */ + SAFEPATH_NOTDIR, /* interior path component isn't a directory */ SAFEPATH_INVAL, /* path is invalid */ SAFEPATH_NOMEM, /* out of memory */ SAFEPATH_LOOP, /* more than 8 levels of symlink */ |