From: Zbigniew Jędrzejewski-Szmek Date: Sat, 30 Apr 2016 21:52:19 +0000 (-0400) Subject: shared/install: refuse template files for non-templateable units X-Git-Tag: v231~367^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=133e5b362f862ac9c9b1dd7b5de0b004cbb9af54;p=platform%2Fupstream%2Fsystemd.git shared/install: refuse template files for non-templateable units $ systemctl --root=/ enable templated@bar.mount Unit type mount cannot be templated. Failed to enable: Invalid argument. --- diff --git a/src/shared/install.c b/src/shared/install.c index f89e2c6..f02d815 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -1050,6 +1050,8 @@ static int unit_file_load( {} }; + const char *name; + UnitType type; _cleanup_fclose_ FILE *f = NULL; _cleanup_close_ int fd = -1; struct stat st; @@ -1059,6 +1061,12 @@ static int unit_file_load( assert(info); assert(path); + name = basename(path); + type = unit_name_to_type(name); + if (unit_name_is_valid(name, UNIT_NAME_TEMPLATE|UNIT_NAME_INSTANCE) && + !unit_type_may_template(type)) + return log_error_errno(EINVAL, "Unit type %s cannot be templated.", unit_type_to_string(type)); + if (!(flags & SEARCH_LOAD)) { r = lstat(path, &st); if (r < 0)