From 2929619a2533b0d9970651391649f6e5651148a4 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Sat, 20 Apr 2013 12:06:19 +0200 Subject: meta: accept uid/gid in numerical You can use the user/group name or alternatively the uid/gid. Signed-off-by: Pablo Neira Ayuso --- src/meta.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/meta.c') diff --git a/src/meta.c b/src/meta.c index d1fb791c..54d4d64e 100644 --- a/src/meta.c +++ b/src/meta.c @@ -219,8 +219,12 @@ static struct error_record *uid_type_parse(const struct expr *sym, struct passwd *pw; pw = getpwnam(sym->identifier); - if (pw == NULL) - return error(&sym->location, "User does not exist"); + if (pw == NULL) { + /* Try harder, lookup based on UID */ + pw = getpwuid(atol(sym->identifier)); + if (pw == NULL) + return error(&sym->location, "User does not exist"); + } *res = constant_expr_alloc(&sym->location, sym->dtype, BYTEORDER_HOST_ENDIAN, @@ -260,8 +264,12 @@ static struct error_record *gid_type_parse(const struct expr *sym, struct group *gr; gr = getgrnam(sym->identifier); - if (gr == NULL) - return error(&sym->location, "Group does not exist"); + if (gr == NULL) { + /* Try harder, lookup based on GID */ + gr = getgrgid(atol(sym->identifier)); + if (gr == NULL) + return error(&sym->location, "Group does not exist"); + } *res = constant_expr_alloc(&sym->location, sym->dtype, BYTEORDER_HOST_ENDIAN, -- cgit v1.2.3