rem: if (strlcpy(pathBuffer, basePath, bufferSize) > bufferSize)
add: if (bufferSize == 0 || strlcpy(pathBuffer, basePath, bufferSize - 1) > bufferSize - 1)
context: vfs_get_module_path(const char *basePath, const char *moduleName, char *pathBuffer,	size_t bufferSize){	struct vnode *dir, *file;	status_t status;	size_t length;	char *path;	if (strlcpy(pathBuffer, basePath, bufferSize) > bufferSize)		return B_BUFFER_OVERFLOW;	status = path_to_vnode(pathBuffer, true, &dir, true);	if (status < B_OK)		return status;	length = strlen(pathBuffer);	if (pathBuffer[length - 1] != '/') {		// ToDo: bufferSize race condition		pathBuffer[length] = '/';		length++;	}	path = pathBuffer + length;	bufferSize -= length;	while (moduleName) {		int type;		char *nextPath = strchr(moduleName, '/');		if (nextPath == NULL)			length = strlen(moduleName);		else			length = nextPath - moduleName;		if (length + 1>= bufferSize) {			status = B_BUFFER_OVERFLOW;			goto err;		}		memcpy(path, moduleName, length);		path[length] = '\0';		moduleName = nextPath;		status = vnode_path_to_vnode(dir, path, true, 0, &file, &type);		if (status < B_OK)			goto err;		put_vnode(dir);		if (S_ISDIR(type)) {			// goto the next directory			path[length] = '/';			path[length + 1] = '\0';			path += length + 1;			dir = file;		} else if (S_ISREG(type)) {			// it's a file so it should be what we've searched for			put_vnode(file);			return B_OK;		} else {			PRINT(("vfs_get_module_path(): something is strange here...\n"));			status = B_ERROR;			goto err;		}	}	// if we got here, the moduleName just pointed to a directory, not to	// a real module - what should we do in this case?	status = B_ENTRY_NOT_FOUND;err:	put_vnode(dir);	return status;}