Branch data Line data Source code
1 : : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : : 3 : : #include <stdbool.h> 4 : : 5 : : #include "string-util.h" 6 : : #include "strv.h" 7 : : #include "utf8.h" 8 : : #include "web-util.h" 9 : : 10 : 0 : bool http_etag_is_valid(const char *etag) { 11 [ # # ]: 0 : if (isempty(etag)) 12 : 0 : return false; 13 : : 14 [ # # ]: 0 : if (!endswith(etag, "\"")) 15 : 0 : return false; 16 : : 17 [ # # # # : 0 : if (!STARTSWITH_SET(etag, "\"", "W/\"")) # # # # ] 18 : 0 : return false; 19 : : 20 : 0 : return true; 21 : : } 22 : : 23 : 224 : bool http_url_is_valid(const char *url) { 24 : : const char *p; 25 : : 26 [ - + ]: 224 : if (isempty(url)) 27 : 0 : return false; 28 : : 29 [ + + + - : 652 : p = STARTSWITH_SET(url, "http://", "https://"); + + ] 30 [ + + ]: 224 : if (!p) 31 : 208 : return false; 32 : : 33 [ - + ]: 16 : if (isempty(p)) 34 : 0 : return false; 35 : : 36 : 16 : return ascii_is_valid(p); 37 : : } 38 : : 39 : 228 : bool documentation_url_is_valid(const char *url) { 40 : : const char *p; 41 : : 42 [ + + ]: 228 : if (isempty(url)) 43 : 4 : return false; 44 : : 45 [ + + ]: 224 : if (http_url_is_valid(url)) 46 : 16 : return true; 47 : : 48 [ + + + - : 612 : p = STARTSWITH_SET(url, "file:/", "info:", "man:"); + + ] 49 [ + + ]: 208 : if (isempty(p)) 50 : 8 : return false; 51 : : 52 : 200 : return ascii_is_valid(p); 53 : : }