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,
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,