    private static PathAndQuery parse(@Nullable String rawPath) {
        final PathAndQuery res = PathAndQuery.parse(rawPath);
        if (res != null) {
            logger.info("parse({}) => path: {}, query: {}", rawPath, res.path(), res.query());
        } else {
            logger.info("parse({}) => null", rawPath);
        }
        return res;
    }
The software uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the software does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.