[systemd-devel] [PATCH] Refuse mount on symlink
Lennart Poettering
lennart at poettering.net
Mon Jul 21 07:11:02 PDT 2014
On Sat, 19.07.14 16:15, Timofey Titovets (nefelim4ag at gmail.com) wrote:
Heya,
> +int fail_if_symlink(const char *unit, const char* where) {
> + assert(where);
> +
> + if (!is_symlink(where))
> + return 0;
> +
> + log_warning_unit(unit,
> + "%s Refuse mount on symlink: %s",
> + unit, strerror(1));
strerror(1)? Where does the "1" come from?
> +
> + return -1;
We strictly follow the logic to return "errno"-style negative error
numbers, we never make up numeric ones, like "-1".
In this case "return -ELOOP" sounds appropriate, I'd say..."
> +
> +bool is_symlink(const char *path) {
> + struct stat info;
> +
> + lstat(path, &info);
You need to handle the case whether the path doesn't exist at all, or
the lstat() fails for other reasons. I think it would be a good idea to
change is_symlink() to return an "int", and then simply return the
negative errno on failure, and 0 or 1 otherwise:
if (lstat(path, &info) < 0)
return -errno;
That would follow our usual coding style very closely...
Thanks,
Lennart
--
Lennart Poettering, Red Hat
More information about the systemd-devel
mailing list