agetty: fix /etc/os-release parsing

For example /etc/os-release:

	VERSION="26 (Twenty Six)"
	VERSION_ID=26

agetty for \S{VERSION} returns

	_ID=26

because the parser does nor check for '=' after variable name.

Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1498462
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2017-10-05 11:07:41 +02:00
parent a1aba7794e
commit 949e839979
1 changed files with 6 additions and 0 deletions

View File

@ -1438,6 +1438,7 @@ static char *xgetdomainname(void)
#endif
}
static char *read_os_release(struct options *op, const char *varname)
{
int fd = -1;
@ -1490,6 +1491,11 @@ static char *read_os_release(struct options *op, const char *varname)
continue;
}
p += varsz;
p += strspn(p, " \t\n\r");
if (*p != '=')
continue;
p += strspn(p, " \t\n\r=\"");
eol = p + strcspn(p, "\n\r");
*eol = '\0';