提交 b8c3511d 编写于 作者: M Markus Armbruster

qemu-bridge-helper: Fix misuse of isspace()

parse_acl_file() passes char values to isspace().  Undefined behavior
when the value is negative.  Not a security issue, because the
characters come from trusted $prefix/etc/qemu/bridge.conf and the
files it includes.

Furthermore, isspace()'s locale-dependence means qemu-bridge-helper
uses the user's locale for parsing $prefix/etc/bridge.conf.  Feels
wrong.

Use g_ascii_isspace() instead.  This fixes the undefined behavior, and
makes parsing of $prefix/etc/bridge.conf locale-independent.
Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
Message-Id: <20190514180311.16028-2-armbru@redhat.com>
上级 a4f667b6
......@@ -75,7 +75,7 @@ static int parse_acl_file(const char *filename, ACLList *acl_list)
char *ptr = line;
char *cmd, *arg, *argend;
while (isspace(*ptr)) {
while (g_ascii_isspace(*ptr)) {
ptr++;
}
......@@ -99,12 +99,12 @@ static int parse_acl_file(const char *filename, ACLList *acl_list)
*arg = 0;
arg++;
while (isspace(*arg)) {
while (g_ascii_isspace(*arg)) {
arg++;
}
argend = arg + strlen(arg);
while (arg != argend && isspace(*(argend - 1))) {
while (arg != argend && g_ascii_isspace(*(argend - 1))) {
argend--;
}
*argend = 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册