+2007-01-20 Jim Meyering <jim@meyering.net>
+
+ * lib/userspec.c (parse_with_separator): If a user or group string
+ starts with "+", skip the corresponding name-to-ID look-up, since
+ such a look-up must fail: user and group names may not include "+".
+
2007-01-19 Paul Eggert <eggert@cs.ucla.edu>
* lib/poll.c: Include sys/time.h and time.h unconditionally,
/* userspec.c -- Parse a user and group string.
- Copyright (C) 1989-1992, 1997-1998, 2000, 2002-2006 Free Software
+ Copyright (C) 1989-1992, 1997-1998, 2000, 2002-2007 Free Software
Foundation, Inc.
This program is free software; you can redistribute it and/or modify
if (u != NULL)
{
- pwd = getpwnam (u);
+ /* If it starts with "+", skip the look-up. */
+ pwd = (*u == '+' ? NULL : getpwnam (u));
if (pwd == NULL)
{
bool use_login_group = (separator != NULL && g == NULL);
if (g != NULL && error_msg == NULL)
{
/* Explicit group. */
- grp = getgrnam (g);
+ /* If it starts with "+", skip the look-up. */
+ grp = (*g == '+' ? NULL : getgrnam (g));
if (grp == NULL)
{
unsigned long int tmp;