Commit f90cf44c authored by Lennart Poettering's avatar Lennart Poettering
Browse files

load-fragment: properly do comparison of words

parent 5475ff4b
test-strv
systemd-ac-power
systemd-timestamp
systemd-cryptsetup
......
......@@ -137,7 +137,8 @@ noinst_PROGRAMS = \
test-hostname \
test-daemon \
test-cgroup \
test-env-replace
test-env-replace \
test-strv
if HAVE_PAM
pamlib_LTLIBRARIES = \
......@@ -619,6 +620,15 @@ test_env_replace_CFLAGS = \
test_env_replace_LDADD = \
libsystemd-basic.la
test_strv_SOURCES = \
src/test-strv.c
test_strv_CFLAGS = \
$(AM_CFLAGS)
test_strv_LDADD = \
libsystemd-basic.la
systemd_logger_SOURCES = \
src/logger.c \
src/sd-daemon.c \
......
......@@ -433,7 +433,7 @@ static int config_parse_exec(
k = 0;
FOREACH_WORD_QUOTED(w, l, rvalue, state) {
if (strncmp(w, ";", l) == 0)
if (strncmp(w, ";", MAX(l, 1U)) == 0)
break;
k++;
......@@ -444,7 +444,7 @@ static int config_parse_exec(
k = 0;
FOREACH_WORD_QUOTED(w, l, rvalue, state) {
if (strncmp(w, ";", l) == 0)
if (strncmp(w, ";", MAX(l, 1U)) == 0)
break;
if (honour_argv0 && w == rvalue) {
......@@ -1077,11 +1077,11 @@ static int config_parse_mount_flags(
assert(data);
FOREACH_WORD_QUOTED(w, l, rvalue, state) {
if (strncmp(w, "shared", l) == 0)
if (strncmp(w, "shared", MAX(l, 6U)) == 0)
flags |= MS_SHARED;
else if (strncmp(w, "slave", l) == 0)
else if (strncmp(w, "slave", MAX(l, 5U)) == 0)
flags |= MS_SLAVE;
else if (strncmp(w, "private", l) == 0)
else if (strncmp(w, "private", MAX(l, 7U)) == 0)
flags |= MS_PRIVATE;
else {
log_error("[%s:%u] Failed to parse mount flags, ignoring: %s", filename, line, rvalue);
......
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
/***
This file is part of systemd.
Copyright 2010 Lennart Poettering
systemd is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
systemd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
#include <string.h>
#include "util.h"
int main(int argc, char *argv[]) {
char *w, *state;
size_t l;
const char test[] = "test a b c 'd' e '' '' hhh '' ''";
printf("<%s>\n", test);
FOREACH_WORD_QUOTED(w, l, test, state) {
char *t;
assert_se(t = strndup(w, l));
printf("<%s>\n", t);
free(t);
}
return 0;
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment