diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c index 08cc03e..2d59b59 100644 --- a/source3/lib/substitute.c +++ b/source3/lib/substitute.c @@ -606,7 +606,8 @@ char *talloc_sub_specified(TALLOC_CTX *mem_ctx, const char *username, const char *domain, uid_t uid, - gid_t gid) + gid_t gid; + const char *grpname) { char *a_string; char *ret_string = NULL; @@ -639,9 +640,14 @@ char *talloc_sub_specified(TALLOC_CTX *mem_ctx, break; case 'G' : if (gid != -1) { - a_string = talloc_string_sub( - tmp_ctx, a_string, "%G", - gidtoname(gid)); + if (grpname == NULL) + a_string = talloc_string_sub( + tmp_ctx, a_string, "%G", + gidtoname(gid)); + else + a_string = talloc_string_sub( + tmp_ctx, a_string, "%G", + grpname); } else { a_string = talloc_string_sub( tmp_ctx, a_string, @@ -650,9 +656,14 @@ char *talloc_sub_specified(TALLOC_CTX *mem_ctx, break; case 'g' : if (gid != -1) { - a_string = talloc_string_sub( - tmp_ctx, a_string, "%g", - gidtoname(gid)); + if (grpname == NULL) + a_string = talloc_string_sub( + tmp_ctx, a_string, "%g", + gidtoname(gid)); + else + a_string = talloc_string_sub( + tmp_ctx, a_string, "%g", + grpname); } else { a_string = talloc_string_sub( tmp_ctx, a_string, "%g", "NO_GROUP");