[+ 0004-udev-use-correct-udev-rule-write-lock-directory.patch] - sysconfig: fix segfault on missed end-quote (bsc#1027736) [+ 0003-sysconfig-fix-segfault-on-missed-end-quote-bsc-10277.patch] - fix segfault on invalid check in route creation (bsc#1148646) [+ 0002-Fix-invalid-check-in-route-creation-bsc-1148646.patch] - fix virsh iface-list not working as expected (bsc#1029201) [+ 0001-virsh-iface-list-not-working-as-expected-bsc-1029201.patch] OBS-URL: https://build.opensuse.org/package/show/network:utilities/netcontrol?expand=0&rev=30
69 lines
1.3 KiB
Diff
69 lines
1.3 KiB
Diff
From ca57462e67fdbd30269117d0e75a2257efefdefd Mon Sep 17 00:00:00 2001
|
|
From: Marius Tomaschewski <mt@suse.de>
|
|
Date: Fri, 28 Feb 2020 16:10:53 +0100
|
|
References: bsc#1027736
|
|
Upstream: merged
|
|
Subject: [PATCH] sysconfig: fix segfault on missed end-quote (bsc#1027736)
|
|
|
|
|
|
diff --git a/src/sysconfig.c b/src/sysconfig.c
|
|
index 48e929b..d03f23a 100644
|
|
--- a/src/sysconfig.c
|
|
+++ b/src/sysconfig.c
|
|
@@ -91,31 +91,32 @@ nc_sysconfig_free(nc_sysconfig_t *nsc)
|
|
static int
|
|
__unquote(char *string)
|
|
{
|
|
- char *src, *dst, cc;
|
|
+ char *src, *dst, qc = 0, lc = 0;
|
|
+ unsigned char cc;
|
|
+ int ret = 1;
|
|
|
|
src = dst = string;
|
|
- while ((cc = *src++) != '\0') {
|
|
- if (isspace(cc))
|
|
+ if (*string == '"' || *string == '\'') {
|
|
+ qc = *string;
|
|
+ src++;
|
|
+ }
|
|
+ do {
|
|
+ cc = *src;
|
|
+ if (!cc) {
|
|
+ ret = qc && lc == qc;
|
|
break;
|
|
- if (*string == '"') {
|
|
- while ((cc = *src++) != '"') {
|
|
- if (cc == '\\') {
|
|
- cc = *src++;
|
|
- if (cc == '\0')
|
|
- return 0;
|
|
- }
|
|
- *dst++ = cc;
|
|
- }
|
|
- } else if (*string == '\'') {
|
|
- while ((cc = *src++) != '\'')
|
|
- *dst++ = cc;
|
|
- string = dst;
|
|
- } else {
|
|
- *dst++ = cc;
|
|
}
|
|
- }
|
|
+ if (isspace(cc) && !qc)
|
|
+ break;
|
|
+ if (cc == qc)
|
|
+ break;
|
|
+ *dst = lc = cc;
|
|
+ dst++;
|
|
+ src++;
|
|
+ } while (1);
|
|
+
|
|
*dst = '\0';
|
|
- return 1;
|
|
+ return ret;
|
|
}
|
|
|
|
static int
|
|
--
|
|
2.16.4
|
|
|