Browse Source

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: Markus Armbruster <armbru@redhat.com>
Message-Id: <2019051418.16028-2-armbru@redhat.com>
master
Markus Armbruster 1 month ago
parent
commit
b8c3511d08
1 changed files with 3 additions and 3 deletions
  1. 3
    3
      qemu-bridge-helper.c

+ 3
- 3
qemu-bridge-helper.c View File

@@ -75,7 +75,7 @@ static int parse_acl_file(const char *filename, ACLList *acl_list)
75 75
         char *ptr = line;
76 76
         char *cmd, *arg, *argend;
77 77
 
78
-        while (isspace(*ptr)) {
78
+        while (g_ascii_isspace(*ptr)) {
79 79
             ptr++;
80 80
         }
81 81
 
@@ -99,12 +99,12 @@ static int parse_acl_file(const char *filename, ACLList *acl_list)
99 99
 
100 100
         *arg = 0;
101 101
         arg++;
102
-        while (isspace(*arg)) {
102
+        while (g_ascii_isspace(*arg)) {
103 103
             arg++;
104 104
         }
105 105
 
106 106
         argend = arg + strlen(arg);
107
-        while (arg != argend && isspace(*(argend - 1))) {
107
+        while (arg != argend && g_ascii_isspace(*(argend - 1))) {
108 108
             argend--;
109 109
         }
110 110
         *argend = 0;

Loading…
Cancel
Save