diff options
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | src/basic/util.c | 52 | ||||
-rw-r--r-- | src/basic/util.h | 5 | ||||
-rw-r--r-- | src/basic/web-util.c | 78 | ||||
-rw-r--r-- | src/basic/web-util.h | 32 | ||||
-rw-r--r-- | src/core/load-fragment.c | 1 | ||||
-rw-r--r-- | src/import/importd.c | 1 | ||||
-rw-r--r-- | src/import/pull-common.c | 1 | ||||
-rw-r--r-- | src/import/pull-dkr.c | 1 | ||||
-rw-r--r-- | src/import/pull-raw.c | 1 | ||||
-rw-r--r-- | src/import/pull-tar.c | 1 | ||||
-rw-r--r-- | src/import/pull.c | 1 | ||||
-rw-r--r-- | src/machine/machinectl.c | 1 | ||||
-rw-r--r-- | src/test/test-util.c | 1 |
14 files changed, 121 insertions, 57 deletions
diff --git a/Makefile.am b/Makefile.am index 78788f65e9..d851e96f38 100644 --- a/Makefile.am +++ b/Makefile.am @@ -844,6 +844,8 @@ libbasic_la_SOURCES = \ src/basic/fdset.h \ src/basic/prioq.c \ src/basic/prioq.h \ + src/basic/web-util.c \ + src/basic/web-util.h \ src/basic/strv.c \ src/basic/strv.h \ src/basic/env-util.c \ diff --git a/src/basic/util.c b/src/basic/util.c index 55decc7eea..412ea50b96 100644 --- a/src/basic/util.c +++ b/src/basic/util.c @@ -646,58 +646,6 @@ int fork_agent(pid_t *pid, const int except[], unsigned n_except, const char *pa _exit(EXIT_FAILURE); } -bool http_etag_is_valid(const char *etag) { - if (isempty(etag)) - return false; - - if (!endswith(etag, "\"")) - return false; - - if (!startswith(etag, "\"") && !startswith(etag, "W/\"")) - return false; - - return true; -} - -bool http_url_is_valid(const char *url) { - const char *p; - - if (isempty(url)) - return false; - - p = startswith(url, "http://"); - if (!p) - p = startswith(url, "https://"); - if (!p) - return false; - - if (isempty(p)) - return false; - - return ascii_is_valid(p); -} - -bool documentation_url_is_valid(const char *url) { - const char *p; - - if (isempty(url)) - return false; - - if (http_url_is_valid(url)) - return true; - - p = startswith(url, "file:/"); - if (!p) - p = startswith(url, "info:"); - if (!p) - p = startswith(url, "man:"); - - if (isempty(p)) - return false; - - return ascii_is_valid(p); -} - bool in_initrd(void) { static int saved = -1; struct statfs s; diff --git a/src/basic/util.h b/src/basic/util.h index 6c3434d15b..078c4313b5 100644 --- a/src/basic/util.h +++ b/src/basic/util.h @@ -129,11 +129,6 @@ void* memdup(const void *p, size_t l) _alloc_(2); int fork_agent(pid_t *pid, const int except[], unsigned n_except, const char *path, ...); -bool http_url_is_valid(const char *url) _pure_; -bool documentation_url_is_valid(const char *url) _pure_; - -bool http_etag_is_valid(const char *etag); - bool in_initrd(void); static inline void freep(void *p) { diff --git a/src/basic/web-util.c b/src/basic/web-util.c new file mode 100644 index 0000000000..68ec04021b --- /dev/null +++ b/src/basic/web-util.c @@ -0,0 +1,78 @@ +/*-*- 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 Lesser General Public License as published by + the Free Software Foundation; either version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <stdbool.h> + +#include "string-util.h" +#include "utf8.h" +#include "web-util.h" + +bool http_etag_is_valid(const char *etag) { + if (isempty(etag)) + return false; + + if (!endswith(etag, "\"")) + return false; + + if (!startswith(etag, "\"") && !startswith(etag, "W/\"")) + return false; + + return true; +} + +bool http_url_is_valid(const char *url) { + const char *p; + + if (isempty(url)) + return false; + + p = startswith(url, "http://"); + if (!p) + p = startswith(url, "https://"); + if (!p) + return false; + + if (isempty(p)) + return false; + + return ascii_is_valid(p); +} + +bool documentation_url_is_valid(const char *url) { + const char *p; + + if (isempty(url)) + return false; + + if (http_url_is_valid(url)) + return true; + + p = startswith(url, "file:/"); + if (!p) + p = startswith(url, "info:"); + if (!p) + p = startswith(url, "man:"); + + if (isempty(p)) + return false; + + return ascii_is_valid(p); +} diff --git a/src/basic/web-util.h b/src/basic/web-util.h new file mode 100644 index 0000000000..40c1509eb8 --- /dev/null +++ b/src/basic/web-util.h @@ -0,0 +1,32 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + 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 Lesser General Public License as published by + the Free Software Foundation; either version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see <http://www.gnu.org/licenses/>. +***/ + +#include <stdbool.h> + +#include "macro.h" + +bool http_url_is_valid(const char *url) _pure_; + +bool documentation_url_is_valid(const char *url) _pure_; + +bool http_etag_is_valid(const char *etag); diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 89ab8f4cef..72e918ed54 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -63,6 +63,7 @@ #include "unit-printf.h" #include "unit.h" #include "utf8.h" +#include "web-util.h" int config_parse_warn_compat( const char *unit, diff --git a/src/import/importd.c b/src/import/importd.c index 3c57713fa5..601652231b 100644 --- a/src/import/importd.c +++ b/src/import/importd.c @@ -41,6 +41,7 @@ #include "strv.h" #include "syslog-util.h" #include "util.h" +#include "web-util.h" typedef struct Transfer Transfer; typedef struct Manager Manager; diff --git a/src/import/pull-common.c b/src/import/pull-common.c index f9c168e374..c235848821 100644 --- a/src/import/pull-common.c +++ b/src/import/pull-common.c @@ -38,6 +38,7 @@ #include "string-util.h" #include "strv.h" #include "util.h" +#include "web-util.h" #define FILENAME_ESCAPE "/.#\"\'" #define HASH_URL_THRESHOLD_LENGTH (_POSIX_PATH_MAX - 16) diff --git a/src/import/pull-dkr.c b/src/import/pull-dkr.c index 2420b9a5f4..786651d581 100644 --- a/src/import/pull-dkr.c +++ b/src/import/pull-dkr.c @@ -44,6 +44,7 @@ #include "string-util.h" #include "strv.h" #include "utf8.h" +#include "web-util.h" typedef enum DkrProgress { DKR_SEARCHING, diff --git a/src/import/pull-raw.c b/src/import/pull-raw.c index 0e9b5ca2b2..c3476714c8 100644 --- a/src/import/pull-raw.c +++ b/src/import/pull-raw.c @@ -47,6 +47,7 @@ #include "strv.h" #include "utf8.h" #include "util.h" +#include "web-util.h" typedef enum RawProgress { RAW_DOWNLOADING, diff --git a/src/import/pull-tar.c b/src/import/pull-tar.c index 306fbe720a..43b7b65586 100644 --- a/src/import/pull-tar.c +++ b/src/import/pull-tar.c @@ -45,6 +45,7 @@ #include "strv.h" #include "utf8.h" #include "util.h" +#include "web-util.h" typedef enum TarProgress { TAR_DOWNLOADING, diff --git a/src/import/pull.c b/src/import/pull.c index 5029933074..5e6cd50688 100644 --- a/src/import/pull.c +++ b/src/import/pull.c @@ -34,6 +34,7 @@ #include "signal-util.h" #include "string-util.h" #include "verbs.h" +#include "web-util.h" static bool arg_force = false; static const char *arg_image_root = "/var/lib/machines"; diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c index 274952b8ce..b8b9e0f519 100644 --- a/src/machine/machinectl.c +++ b/src/machine/machinectl.c @@ -59,6 +59,7 @@ #include "unit-name.h" #include "util.h" #include "verbs.h" +#include "web-util.h" static char **arg_property = NULL; static bool arg_all = false; diff --git a/src/test/test-util.c b/src/test/test-util.c index a020b33e75..6c6fce2d6a 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -55,6 +55,7 @@ #include "util.h" #include "virt.h" #include "xattr-util.h" +#include "web-util.h" static void test_streq_ptr(void) { assert_se(streq_ptr(NULL, NULL)); |