Coverage Report

Created: 2026-09-03 06:52

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/mod_auth_openidc/src/const.h
Line
Count
Source
1
/*
2
 * Licensed to the Apache Software Foundation (ASF) under one
3
 * or more contributor license agreements.  See the NOTICE file
4
 * distributed with this work for additional information
5
 * regarding copyright ownership.  The ASF licenses this file
6
 * to you under the Apache License, Version 2.0 (the
7
 * "License"); you may not use this file except in compliance
8
 * with the License.  You may obtain a copy of the License at
9
 *
10
 *   http://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing,
13
 * software distributed under the License is distributed on an
14
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
 * KIND, either express or implied.  See the License for the
16
 * specific language governing permissions and limitations
17
 * under the License.
18
 */
19
20
/***************************************************************************
21
 * Copyright (C) 2017-2026 ZmartZone Holding BV
22
 * Copyright (C) 2013-2017 Ping Identity Corporation
23
 * All rights reserved.
24
 *
25
 * DISCLAIMER OF WARRANTIES:
26
 *
27
 * THE SOFTWARE PROVIDED HEREUNDER IS PROVIDED ON AN "AS IS" BASIS, WITHOUT
28
 * ANY WARRANTIES OR REPRESENTATIONS EXPRESS, IMPLIED OR STATUTORY; INCLUDING,
29
 * WITHOUT LIMITATION, WARRANTIES OF QUALITY, PERFORMANCE, NONINFRINGEMENT,
30
 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  NOR ARE THERE ANY
31
 * WARRANTIES CREATED BY A COURSE OR DEALING, COURSE OF PERFORMANCE OR TRADE
32
 * USAGE.  FURTHERMORE, THERE ARE NO WARRANTIES THAT THE SOFTWARE WILL MEET
33
 * YOUR NEEDS OR BE FREE FROM ERRORS, OR THAT THE OPERATION OF THE SOFTWARE
34
 * WILL BE UNINTERRUPTED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
35
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
36
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES HOWEVER CAUSED AND ON ANY THEORY OF
37
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
38
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
39
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40
 *
41
 * @Author: Hans Zandbelt - hans.zandbelt@openidc.com
42
 */
43
44
#ifndef _MOD_AUTH_OPENIDC_CONST_H_
45
#define _MOD_AUTH_OPENIDC_CONST_H_
46
47
#ifdef HAVE_CONFIG_H
48
#include "config.h"
49
#undef PACKAGE_NAME
50
#undef PACKAGE_STRING
51
#undef PACKAGE_TARNAME
52
#undef PACKAGE_VERSION
53
#undef PACKAGE_BUGREPORT
54
#endif
55
56
#include <errno.h>
57
#include <limits.h>
58
#include <stdint.h>
59
#include <stdlib.h>
60
#define __STDC_WANT_LIB_EXT1__ 1
61
#include <string.h>
62
63
/*
64
 * compile-time assertion; uses the portable negative-array-size idiom rather than C11 _Static_assert,
65
 * since the Visual Studio C compiler used for the Windows build does not accept _Static_assert
66
 */
67
#define OIDC_STATIC_ASSERT(cond, name) typedef char oidc_static_assert_##name[(cond) ? 1 : -1]
68
69
#include <apr_strings.h>
70
71
// clang-format off
72
73
#include <httpd.h>
74
#include <http_log.h>
75
76
// clang-format on
77
78
#ifdef __STDC_LIB_EXT1__
79
#define _oidc_memset(b, c, __len) memset_s(b, __len, c, __len)
80
#define _oidc_memcpy(__dst, __src, __n) memcpy_s(__dst, __src, __n)
81
#define _oidc_strcpy(__dst, __src) strcpy_s(__dst, __src)
82
#define _oidc_strncpy(__dst, __src, __n) strncpy_s(__dst, __src, __n)
83
#else
84
6
#define _oidc_memset(b, c, __len) memset(b, c, __len)
85
55.8k
#define _oidc_memcpy(__dst, __src, __n) memcpy(__dst, __src, __n)
86
2
#define _oidc_strcpy(__dst, __src) strcpy(__dst, __src)
87
0
#define _oidc_strncpy(__dst, __src, __n) strncpy(__dst, __src, __n)
88
#endif
89
90
19.5k
static inline size_t _oidc_strlen(const char *s) {
91
19.5k
  return (s ? strlen(s) : 0);
92
19.5k
}
Unexecuted instantiation: fuzz_jwks.c:_oidc_strlen
util.c:_oidc_strlen
Line
Count
Source
90
4
static inline size_t _oidc_strlen(const char *s) {
91
4
  return (s ? strlen(s) : 0);
92
4
}
Unexecuted instantiation: stub.c:_oidc_strlen
Unexecuted instantiation: mod_auth_openidc.c:_oidc_strlen
Unexecuted instantiation: cfg.c:_oidc_strlen
Unexecuted instantiation: check.c:_oidc_strlen
Unexecuted instantiation: cache.c:_oidc_strlen
Unexecuted instantiation: provider.c:_oidc_strlen
Unexecuted instantiation: oauth.c:_oidc_strlen
Unexecuted instantiation: dir.c:_oidc_strlen
Unexecuted instantiation: parse.c:_oidc_strlen
Unexecuted instantiation: cmds.c:_oidc_strlen
Unexecuted instantiation: shm.c:_oidc_strlen
Unexecuted instantiation: common.c:_oidc_strlen
Unexecuted instantiation: authz.c:_oidc_strlen
Unexecuted instantiation: content.c:_oidc_strlen
Unexecuted instantiation: discovery.c:_oidc_strlen
Unexecuted instantiation: dpop.c:_oidc_strlen
Unexecuted instantiation: info.c:_oidc_strlen
Unexecuted instantiation: jwks.c:_oidc_strlen
Unexecuted instantiation: logout.c:_oidc_strlen
Unexecuted instantiation: refresh.c:_oidc_strlen
Unexecuted instantiation: request_uri.c:_oidc_strlen
Unexecuted instantiation: request.c:_oidc_strlen
Unexecuted instantiation: response.c:_oidc_strlen
Unexecuted instantiation: revoke.c:_oidc_strlen
Unexecuted instantiation: session_management.c:_oidc_strlen
Unexecuted instantiation: userinfo.c:_oidc_strlen
Unexecuted instantiation: auth.c:_oidc_strlen
Unexecuted instantiation: id_token.c:_oidc_strlen
Unexecuted instantiation: jwt.c:_oidc_strlen
Unexecuted instantiation: pkce.c:_oidc_strlen
Unexecuted instantiation: profile.c:_oidc_strlen
Unexecuted instantiation: proto.c:_oidc_strlen
Unexecuted instantiation: request_object.c:_oidc_strlen
Unexecuted instantiation: state.c:_oidc_strlen
Unexecuted instantiation: token.c:_oidc_strlen
Unexecuted instantiation: appinfo.c:_oidc_strlen
Unexecuted instantiation: base64.c:_oidc_strlen
Unexecuted instantiation: expr.c:_oidc_strlen
Unexecuted instantiation: html.c:_oidc_strlen
key.c:_oidc_strlen
Line
Count
Source
90
4
static inline size_t _oidc_strlen(const char *s) {
91
4
  return (s ? strlen(s) : 0);
92
4
}
Unexecuted instantiation: pcre_subst.c:_oidc_strlen
Unexecuted instantiation: request_state.c:_oidc_strlen
Unexecuted instantiation: random.c:_oidc_strlen
Unexecuted instantiation: url.c:_oidc_strlen
Unexecuted instantiation: metrics.c:_oidc_strlen
Unexecuted instantiation: http.c:_oidc_strlen
Unexecuted instantiation: session.c:_oidc_strlen
Unexecuted instantiation: metadata.c:_oidc_strlen
Unexecuted instantiation: conf.c:_oidc_strlen
Unexecuted instantiation: client.c:_oidc_strlen
Unexecuted instantiation: json.c:_oidc_strlen
Unexecuted instantiation: jose.c:_oidc_strlen
jwk.c:_oidc_strlen
Line
Count
Source
90
19.5k
static inline size_t _oidc_strlen(const char *s) {
91
19.5k
  return (s ? strlen(s) : 0);
92
19.5k
}
Unexecuted instantiation: jws.c:_oidc_strlen
Unexecuted instantiation: jwe.c:_oidc_strlen
Unexecuted instantiation: memcache.c:_oidc_strlen
Unexecuted instantiation: file.c:_oidc_strlen
93
/*
94
 * NULL never compares equal, even to NULL, so missing state, nonce, or CSRF values fail closed.
95
 * _oidc_strcmp is byte-exact because apr_strnatcmp() can equate distinct protocol values.
96
 * Secret-derived values require oidc_util_strcmp_const_time().
97
 */
98
7.38k
static inline int _oidc_strcmp(const char *a, const char *b) {
99
7.38k
  return ((a && b) ? strcmp(a, b) : -1);
100
7.38k
}
Unexecuted instantiation: fuzz_jwks.c:_oidc_strcmp
Unexecuted instantiation: util.c:_oidc_strcmp
Unexecuted instantiation: stub.c:_oidc_strcmp
Unexecuted instantiation: mod_auth_openidc.c:_oidc_strcmp
Unexecuted instantiation: cfg.c:_oidc_strcmp
Unexecuted instantiation: check.c:_oidc_strcmp
Unexecuted instantiation: cache.c:_oidc_strcmp
Unexecuted instantiation: provider.c:_oidc_strcmp
Unexecuted instantiation: oauth.c:_oidc_strcmp
Unexecuted instantiation: dir.c:_oidc_strcmp
parse.c:_oidc_strcmp
Line
Count
Source
98
2
static inline int _oidc_strcmp(const char *a, const char *b) {
99
2
  return ((a && b) ? strcmp(a, b) : -1);
100
2
}
Unexecuted instantiation: cmds.c:_oidc_strcmp
Unexecuted instantiation: shm.c:_oidc_strcmp
Unexecuted instantiation: common.c:_oidc_strcmp
Unexecuted instantiation: authz.c:_oidc_strcmp
Unexecuted instantiation: content.c:_oidc_strcmp
Unexecuted instantiation: discovery.c:_oidc_strcmp
Unexecuted instantiation: dpop.c:_oidc_strcmp
Unexecuted instantiation: info.c:_oidc_strcmp
Unexecuted instantiation: jwks.c:_oidc_strcmp
Unexecuted instantiation: logout.c:_oidc_strcmp
Unexecuted instantiation: refresh.c:_oidc_strcmp
Unexecuted instantiation: request_uri.c:_oidc_strcmp
Unexecuted instantiation: request.c:_oidc_strcmp
Unexecuted instantiation: response.c:_oidc_strcmp
Unexecuted instantiation: revoke.c:_oidc_strcmp
Unexecuted instantiation: session_management.c:_oidc_strcmp
Unexecuted instantiation: userinfo.c:_oidc_strcmp
Unexecuted instantiation: auth.c:_oidc_strcmp
Unexecuted instantiation: id_token.c:_oidc_strcmp
Unexecuted instantiation: jwt.c:_oidc_strcmp
Unexecuted instantiation: pkce.c:_oidc_strcmp
Unexecuted instantiation: profile.c:_oidc_strcmp
Unexecuted instantiation: proto.c:_oidc_strcmp
Unexecuted instantiation: request_object.c:_oidc_strcmp
Unexecuted instantiation: state.c:_oidc_strcmp
Unexecuted instantiation: token.c:_oidc_strcmp
Unexecuted instantiation: appinfo.c:_oidc_strcmp
Unexecuted instantiation: base64.c:_oidc_strcmp
Unexecuted instantiation: expr.c:_oidc_strcmp
Unexecuted instantiation: html.c:_oidc_strcmp
Unexecuted instantiation: key.c:_oidc_strcmp
Unexecuted instantiation: pcre_subst.c:_oidc_strcmp
Unexecuted instantiation: request_state.c:_oidc_strcmp
Unexecuted instantiation: random.c:_oidc_strcmp
Unexecuted instantiation: url.c:_oidc_strcmp
Unexecuted instantiation: metrics.c:_oidc_strcmp
Unexecuted instantiation: http.c:_oidc_strcmp
Unexecuted instantiation: session.c:_oidc_strcmp
Unexecuted instantiation: metadata.c:_oidc_strcmp
Unexecuted instantiation: conf.c:_oidc_strcmp
Unexecuted instantiation: client.c:_oidc_strcmp
Unexecuted instantiation: json.c:_oidc_strcmp
Unexecuted instantiation: jose.c:_oidc_strcmp
jwk.c:_oidc_strcmp
Line
Count
Source
98
7.38k
static inline int _oidc_strcmp(const char *a, const char *b) {
99
7.38k
  return ((a && b) ? strcmp(a, b) : -1);
100
7.38k
}
Unexecuted instantiation: jws.c:_oidc_strcmp
Unexecuted instantiation: jwe.c:_oidc_strcmp
Unexecuted instantiation: memcache.c:_oidc_strcmp
Unexecuted instantiation: file.c:_oidc_strcmp
101
2
static inline int _oidc_strnatcasecmp(const char *a, const char *b) {
102
2
  return ((a && b) ? apr_strnatcasecmp(a, b) : -1);
103
2
}
Unexecuted instantiation: fuzz_jwks.c:_oidc_strnatcasecmp
Unexecuted instantiation: util.c:_oidc_strnatcasecmp
Unexecuted instantiation: stub.c:_oidc_strnatcasecmp
Unexecuted instantiation: mod_auth_openidc.c:_oidc_strnatcasecmp
Unexecuted instantiation: cfg.c:_oidc_strnatcasecmp
Unexecuted instantiation: check.c:_oidc_strnatcasecmp
Unexecuted instantiation: cache.c:_oidc_strnatcasecmp
Unexecuted instantiation: provider.c:_oidc_strnatcasecmp
Unexecuted instantiation: oauth.c:_oidc_strnatcasecmp
Unexecuted instantiation: dir.c:_oidc_strnatcasecmp
parse.c:_oidc_strnatcasecmp
Line
Count
Source
101
2
static inline int _oidc_strnatcasecmp(const char *a, const char *b) {
102
2
  return ((a && b) ? apr_strnatcasecmp(a, b) : -1);
103
2
}
Unexecuted instantiation: cmds.c:_oidc_strnatcasecmp
Unexecuted instantiation: shm.c:_oidc_strnatcasecmp
Unexecuted instantiation: common.c:_oidc_strnatcasecmp
Unexecuted instantiation: authz.c:_oidc_strnatcasecmp
Unexecuted instantiation: content.c:_oidc_strnatcasecmp
Unexecuted instantiation: discovery.c:_oidc_strnatcasecmp
Unexecuted instantiation: dpop.c:_oidc_strnatcasecmp
Unexecuted instantiation: info.c:_oidc_strnatcasecmp
Unexecuted instantiation: jwks.c:_oidc_strnatcasecmp
Unexecuted instantiation: logout.c:_oidc_strnatcasecmp
Unexecuted instantiation: refresh.c:_oidc_strnatcasecmp
Unexecuted instantiation: request_uri.c:_oidc_strnatcasecmp
Unexecuted instantiation: request.c:_oidc_strnatcasecmp
Unexecuted instantiation: response.c:_oidc_strnatcasecmp
Unexecuted instantiation: revoke.c:_oidc_strnatcasecmp
Unexecuted instantiation: session_management.c:_oidc_strnatcasecmp
Unexecuted instantiation: userinfo.c:_oidc_strnatcasecmp
Unexecuted instantiation: auth.c:_oidc_strnatcasecmp
Unexecuted instantiation: id_token.c:_oidc_strnatcasecmp
Unexecuted instantiation: jwt.c:_oidc_strnatcasecmp
Unexecuted instantiation: pkce.c:_oidc_strnatcasecmp
Unexecuted instantiation: profile.c:_oidc_strnatcasecmp
Unexecuted instantiation: proto.c:_oidc_strnatcasecmp
Unexecuted instantiation: request_object.c:_oidc_strnatcasecmp
Unexecuted instantiation: state.c:_oidc_strnatcasecmp
Unexecuted instantiation: token.c:_oidc_strnatcasecmp
Unexecuted instantiation: appinfo.c:_oidc_strnatcasecmp
Unexecuted instantiation: base64.c:_oidc_strnatcasecmp
Unexecuted instantiation: expr.c:_oidc_strnatcasecmp
Unexecuted instantiation: html.c:_oidc_strnatcasecmp
Unexecuted instantiation: key.c:_oidc_strnatcasecmp
Unexecuted instantiation: pcre_subst.c:_oidc_strnatcasecmp
Unexecuted instantiation: request_state.c:_oidc_strnatcasecmp
Unexecuted instantiation: random.c:_oidc_strnatcasecmp
Unexecuted instantiation: url.c:_oidc_strnatcasecmp
Unexecuted instantiation: metrics.c:_oidc_strnatcasecmp
Unexecuted instantiation: http.c:_oidc_strnatcasecmp
Unexecuted instantiation: session.c:_oidc_strnatcasecmp
Unexecuted instantiation: metadata.c:_oidc_strnatcasecmp
Unexecuted instantiation: conf.c:_oidc_strnatcasecmp
Unexecuted instantiation: client.c:_oidc_strnatcasecmp
Unexecuted instantiation: json.c:_oidc_strnatcasecmp
Unexecuted instantiation: jose.c:_oidc_strnatcasecmp
Unexecuted instantiation: jwk.c:_oidc_strnatcasecmp
Unexecuted instantiation: jws.c:_oidc_strnatcasecmp
Unexecuted instantiation: jwe.c:_oidc_strnatcasecmp
Unexecuted instantiation: memcache.c:_oidc_strnatcasecmp
Unexecuted instantiation: file.c:_oidc_strnatcasecmp
104
0
static inline int _oidc_strncmp(const char *a, const char *b, size_t n) {
105
0
  return ((a && b) ? strncmp(a, b, n) : -1);
106
0
}
Unexecuted instantiation: fuzz_jwks.c:_oidc_strncmp
Unexecuted instantiation: util.c:_oidc_strncmp
Unexecuted instantiation: stub.c:_oidc_strncmp
Unexecuted instantiation: mod_auth_openidc.c:_oidc_strncmp
Unexecuted instantiation: cfg.c:_oidc_strncmp
Unexecuted instantiation: check.c:_oidc_strncmp
Unexecuted instantiation: cache.c:_oidc_strncmp
Unexecuted instantiation: provider.c:_oidc_strncmp
Unexecuted instantiation: oauth.c:_oidc_strncmp
Unexecuted instantiation: dir.c:_oidc_strncmp
Unexecuted instantiation: parse.c:_oidc_strncmp
Unexecuted instantiation: cmds.c:_oidc_strncmp
Unexecuted instantiation: shm.c:_oidc_strncmp
Unexecuted instantiation: common.c:_oidc_strncmp
Unexecuted instantiation: authz.c:_oidc_strncmp
Unexecuted instantiation: content.c:_oidc_strncmp
Unexecuted instantiation: discovery.c:_oidc_strncmp
Unexecuted instantiation: dpop.c:_oidc_strncmp
Unexecuted instantiation: info.c:_oidc_strncmp
Unexecuted instantiation: jwks.c:_oidc_strncmp
Unexecuted instantiation: logout.c:_oidc_strncmp
Unexecuted instantiation: refresh.c:_oidc_strncmp
Unexecuted instantiation: request_uri.c:_oidc_strncmp
Unexecuted instantiation: request.c:_oidc_strncmp
Unexecuted instantiation: response.c:_oidc_strncmp
Unexecuted instantiation: revoke.c:_oidc_strncmp
Unexecuted instantiation: session_management.c:_oidc_strncmp
Unexecuted instantiation: userinfo.c:_oidc_strncmp
Unexecuted instantiation: auth.c:_oidc_strncmp
Unexecuted instantiation: id_token.c:_oidc_strncmp
Unexecuted instantiation: jwt.c:_oidc_strncmp
Unexecuted instantiation: pkce.c:_oidc_strncmp
Unexecuted instantiation: profile.c:_oidc_strncmp
Unexecuted instantiation: proto.c:_oidc_strncmp
Unexecuted instantiation: request_object.c:_oidc_strncmp
Unexecuted instantiation: state.c:_oidc_strncmp
Unexecuted instantiation: token.c:_oidc_strncmp
Unexecuted instantiation: appinfo.c:_oidc_strncmp
Unexecuted instantiation: base64.c:_oidc_strncmp
Unexecuted instantiation: expr.c:_oidc_strncmp
Unexecuted instantiation: html.c:_oidc_strncmp
Unexecuted instantiation: key.c:_oidc_strncmp
Unexecuted instantiation: pcre_subst.c:_oidc_strncmp
Unexecuted instantiation: request_state.c:_oidc_strncmp
Unexecuted instantiation: random.c:_oidc_strncmp
Unexecuted instantiation: url.c:_oidc_strncmp
Unexecuted instantiation: metrics.c:_oidc_strncmp
Unexecuted instantiation: http.c:_oidc_strncmp
Unexecuted instantiation: session.c:_oidc_strncmp
Unexecuted instantiation: metadata.c:_oidc_strncmp
Unexecuted instantiation: conf.c:_oidc_strncmp
Unexecuted instantiation: client.c:_oidc_strncmp
Unexecuted instantiation: json.c:_oidc_strncmp
Unexecuted instantiation: jose.c:_oidc_strncmp
Unexecuted instantiation: jwk.c:_oidc_strncmp
Unexecuted instantiation: jws.c:_oidc_strncmp
Unexecuted instantiation: jwe.c:_oidc_strncmp
Unexecuted instantiation: memcache.c:_oidc_strncmp
Unexecuted instantiation: file.c:_oidc_strncmp
107
2
static inline char *_oidc_strstr(const char *a, const char *b) {
108
2
  return ((a && b) ? (char *)strstr(a, b) : NULL);
109
2
}
Unexecuted instantiation: fuzz_jwks.c:_oidc_strstr
Unexecuted instantiation: util.c:_oidc_strstr
Unexecuted instantiation: stub.c:_oidc_strstr
Unexecuted instantiation: mod_auth_openidc.c:_oidc_strstr
Unexecuted instantiation: cfg.c:_oidc_strstr
Unexecuted instantiation: check.c:_oidc_strstr
Unexecuted instantiation: cache.c:_oidc_strstr
Unexecuted instantiation: provider.c:_oidc_strstr
Unexecuted instantiation: oauth.c:_oidc_strstr
dir.c:_oidc_strstr
Line
Count
Source
107
2
static inline char *_oidc_strstr(const char *a, const char *b) {
108
2
  return ((a && b) ? (char *)strstr(a, b) : NULL);
109
2
}
Unexecuted instantiation: parse.c:_oidc_strstr
Unexecuted instantiation: cmds.c:_oidc_strstr
Unexecuted instantiation: shm.c:_oidc_strstr
Unexecuted instantiation: common.c:_oidc_strstr
Unexecuted instantiation: authz.c:_oidc_strstr
Unexecuted instantiation: content.c:_oidc_strstr
Unexecuted instantiation: discovery.c:_oidc_strstr
Unexecuted instantiation: dpop.c:_oidc_strstr
Unexecuted instantiation: info.c:_oidc_strstr
Unexecuted instantiation: jwks.c:_oidc_strstr
Unexecuted instantiation: logout.c:_oidc_strstr
Unexecuted instantiation: refresh.c:_oidc_strstr
Unexecuted instantiation: request_uri.c:_oidc_strstr
Unexecuted instantiation: request.c:_oidc_strstr
Unexecuted instantiation: response.c:_oidc_strstr
Unexecuted instantiation: revoke.c:_oidc_strstr
Unexecuted instantiation: session_management.c:_oidc_strstr
Unexecuted instantiation: userinfo.c:_oidc_strstr
Unexecuted instantiation: auth.c:_oidc_strstr
Unexecuted instantiation: id_token.c:_oidc_strstr
Unexecuted instantiation: jwt.c:_oidc_strstr
Unexecuted instantiation: pkce.c:_oidc_strstr
Unexecuted instantiation: profile.c:_oidc_strstr
Unexecuted instantiation: proto.c:_oidc_strstr
Unexecuted instantiation: request_object.c:_oidc_strstr
Unexecuted instantiation: state.c:_oidc_strstr
Unexecuted instantiation: token.c:_oidc_strstr
Unexecuted instantiation: appinfo.c:_oidc_strstr
Unexecuted instantiation: base64.c:_oidc_strstr
Unexecuted instantiation: expr.c:_oidc_strstr
Unexecuted instantiation: html.c:_oidc_strstr
Unexecuted instantiation: key.c:_oidc_strstr
Unexecuted instantiation: pcre_subst.c:_oidc_strstr
Unexecuted instantiation: request_state.c:_oidc_strstr
Unexecuted instantiation: random.c:_oidc_strstr
Unexecuted instantiation: url.c:_oidc_strstr
Unexecuted instantiation: metrics.c:_oidc_strstr
Unexecuted instantiation: http.c:_oidc_strstr
Unexecuted instantiation: session.c:_oidc_strstr
Unexecuted instantiation: metadata.c:_oidc_strstr
Unexecuted instantiation: conf.c:_oidc_strstr
Unexecuted instantiation: client.c:_oidc_strstr
Unexecuted instantiation: json.c:_oidc_strstr
Unexecuted instantiation: jose.c:_oidc_strstr
Unexecuted instantiation: jwk.c:_oidc_strstr
Unexecuted instantiation: jws.c:_oidc_strstr
Unexecuted instantiation: jwe.c:_oidc_strstr
Unexecuted instantiation: memcache.c:_oidc_strstr
Unexecuted instantiation: file.c:_oidc_strstr
110
0
static inline apr_time_t _oidc_str_to_time(const char *s, const apr_time_t default_value) {
111
0
  apr_time_t v = default_value;
112
0
  if (s)
113
0
    sscanf(s, "%" APR_TIME_T_FMT, &v);
114
0
  return v;
115
0
}
Unexecuted instantiation: fuzz_jwks.c:_oidc_str_to_time
Unexecuted instantiation: util.c:_oidc_str_to_time
Unexecuted instantiation: stub.c:_oidc_str_to_time
Unexecuted instantiation: mod_auth_openidc.c:_oidc_str_to_time
Unexecuted instantiation: cfg.c:_oidc_str_to_time
Unexecuted instantiation: check.c:_oidc_str_to_time
Unexecuted instantiation: cache.c:_oidc_str_to_time
Unexecuted instantiation: provider.c:_oidc_str_to_time
Unexecuted instantiation: oauth.c:_oidc_str_to_time
Unexecuted instantiation: dir.c:_oidc_str_to_time
Unexecuted instantiation: parse.c:_oidc_str_to_time
Unexecuted instantiation: cmds.c:_oidc_str_to_time
Unexecuted instantiation: shm.c:_oidc_str_to_time
Unexecuted instantiation: common.c:_oidc_str_to_time
Unexecuted instantiation: authz.c:_oidc_str_to_time
Unexecuted instantiation: content.c:_oidc_str_to_time
Unexecuted instantiation: discovery.c:_oidc_str_to_time
Unexecuted instantiation: dpop.c:_oidc_str_to_time
Unexecuted instantiation: info.c:_oidc_str_to_time
Unexecuted instantiation: jwks.c:_oidc_str_to_time
Unexecuted instantiation: logout.c:_oidc_str_to_time
Unexecuted instantiation: refresh.c:_oidc_str_to_time
Unexecuted instantiation: request_uri.c:_oidc_str_to_time
Unexecuted instantiation: request.c:_oidc_str_to_time
Unexecuted instantiation: response.c:_oidc_str_to_time
Unexecuted instantiation: revoke.c:_oidc_str_to_time
Unexecuted instantiation: session_management.c:_oidc_str_to_time
Unexecuted instantiation: userinfo.c:_oidc_str_to_time
Unexecuted instantiation: auth.c:_oidc_str_to_time
Unexecuted instantiation: id_token.c:_oidc_str_to_time
Unexecuted instantiation: jwt.c:_oidc_str_to_time
Unexecuted instantiation: pkce.c:_oidc_str_to_time
Unexecuted instantiation: profile.c:_oidc_str_to_time
Unexecuted instantiation: proto.c:_oidc_str_to_time
Unexecuted instantiation: request_object.c:_oidc_str_to_time
Unexecuted instantiation: state.c:_oidc_str_to_time
Unexecuted instantiation: token.c:_oidc_str_to_time
Unexecuted instantiation: appinfo.c:_oidc_str_to_time
Unexecuted instantiation: base64.c:_oidc_str_to_time
Unexecuted instantiation: expr.c:_oidc_str_to_time
Unexecuted instantiation: html.c:_oidc_str_to_time
Unexecuted instantiation: key.c:_oidc_str_to_time
Unexecuted instantiation: pcre_subst.c:_oidc_str_to_time
Unexecuted instantiation: request_state.c:_oidc_str_to_time
Unexecuted instantiation: random.c:_oidc_str_to_time
Unexecuted instantiation: url.c:_oidc_str_to_time
Unexecuted instantiation: metrics.c:_oidc_str_to_time
Unexecuted instantiation: http.c:_oidc_str_to_time
Unexecuted instantiation: session.c:_oidc_str_to_time
Unexecuted instantiation: metadata.c:_oidc_str_to_time
Unexecuted instantiation: conf.c:_oidc_str_to_time
Unexecuted instantiation: client.c:_oidc_str_to_time
Unexecuted instantiation: json.c:_oidc_str_to_time
Unexecuted instantiation: jose.c:_oidc_str_to_time
Unexecuted instantiation: jwk.c:_oidc_str_to_time
Unexecuted instantiation: jws.c:_oidc_str_to_time
Unexecuted instantiation: jwe.c:_oidc_str_to_time
Unexecuted instantiation: memcache.c:_oidc_str_to_time
Unexecuted instantiation: file.c:_oidc_str_to_time
116
/* Strict full-string, in-range integer parsing shared by runtime and configuration callers. */
117
0
static inline apr_byte_t _oidc_str_to_int_checked(const char *s, int *out) {
118
0
  char *endptr = NULL;
119
0
  long v = 0;
120
0
  if ((s == NULL) || (*s == '\0'))
121
0
    return FALSE;
122
0
  errno = 0;
123
0
  v = strtol(s, &endptr, 10);
124
0
  if ((endptr == s) || (*endptr != '\0') || (errno == ERANGE) || (v < INT_MIN) || (v > INT_MAX))
125
0
    return FALSE;
126
0
  *out = (int)v;
127
0
  return TRUE;
128
0
}
Unexecuted instantiation: fuzz_jwks.c:_oidc_str_to_int_checked
Unexecuted instantiation: util.c:_oidc_str_to_int_checked
Unexecuted instantiation: stub.c:_oidc_str_to_int_checked
Unexecuted instantiation: mod_auth_openidc.c:_oidc_str_to_int_checked
Unexecuted instantiation: cfg.c:_oidc_str_to_int_checked
Unexecuted instantiation: check.c:_oidc_str_to_int_checked
Unexecuted instantiation: cache.c:_oidc_str_to_int_checked
Unexecuted instantiation: provider.c:_oidc_str_to_int_checked
Unexecuted instantiation: oauth.c:_oidc_str_to_int_checked
Unexecuted instantiation: dir.c:_oidc_str_to_int_checked
Unexecuted instantiation: parse.c:_oidc_str_to_int_checked
Unexecuted instantiation: cmds.c:_oidc_str_to_int_checked
Unexecuted instantiation: shm.c:_oidc_str_to_int_checked
Unexecuted instantiation: common.c:_oidc_str_to_int_checked
Unexecuted instantiation: authz.c:_oidc_str_to_int_checked
Unexecuted instantiation: content.c:_oidc_str_to_int_checked
Unexecuted instantiation: discovery.c:_oidc_str_to_int_checked
Unexecuted instantiation: dpop.c:_oidc_str_to_int_checked
Unexecuted instantiation: info.c:_oidc_str_to_int_checked
Unexecuted instantiation: jwks.c:_oidc_str_to_int_checked
Unexecuted instantiation: logout.c:_oidc_str_to_int_checked
Unexecuted instantiation: refresh.c:_oidc_str_to_int_checked
Unexecuted instantiation: request_uri.c:_oidc_str_to_int_checked
Unexecuted instantiation: request.c:_oidc_str_to_int_checked
Unexecuted instantiation: response.c:_oidc_str_to_int_checked
Unexecuted instantiation: revoke.c:_oidc_str_to_int_checked
Unexecuted instantiation: session_management.c:_oidc_str_to_int_checked
Unexecuted instantiation: userinfo.c:_oidc_str_to_int_checked
Unexecuted instantiation: auth.c:_oidc_str_to_int_checked
Unexecuted instantiation: id_token.c:_oidc_str_to_int_checked
Unexecuted instantiation: jwt.c:_oidc_str_to_int_checked
Unexecuted instantiation: pkce.c:_oidc_str_to_int_checked
Unexecuted instantiation: profile.c:_oidc_str_to_int_checked
Unexecuted instantiation: proto.c:_oidc_str_to_int_checked
Unexecuted instantiation: request_object.c:_oidc_str_to_int_checked
Unexecuted instantiation: state.c:_oidc_str_to_int_checked
Unexecuted instantiation: token.c:_oidc_str_to_int_checked
Unexecuted instantiation: appinfo.c:_oidc_str_to_int_checked
Unexecuted instantiation: base64.c:_oidc_str_to_int_checked
Unexecuted instantiation: expr.c:_oidc_str_to_int_checked
Unexecuted instantiation: html.c:_oidc_str_to_int_checked
Unexecuted instantiation: key.c:_oidc_str_to_int_checked
Unexecuted instantiation: pcre_subst.c:_oidc_str_to_int_checked
Unexecuted instantiation: request_state.c:_oidc_str_to_int_checked
Unexecuted instantiation: random.c:_oidc_str_to_int_checked
Unexecuted instantiation: url.c:_oidc_str_to_int_checked
Unexecuted instantiation: metrics.c:_oidc_str_to_int_checked
Unexecuted instantiation: http.c:_oidc_str_to_int_checked
Unexecuted instantiation: session.c:_oidc_str_to_int_checked
Unexecuted instantiation: metadata.c:_oidc_str_to_int_checked
Unexecuted instantiation: conf.c:_oidc_str_to_int_checked
Unexecuted instantiation: client.c:_oidc_str_to_int_checked
Unexecuted instantiation: json.c:_oidc_str_to_int_checked
Unexecuted instantiation: jose.c:_oidc_str_to_int_checked
Unexecuted instantiation: jwk.c:_oidc_str_to_int_checked
Unexecuted instantiation: jws.c:_oidc_str_to_int_checked
Unexecuted instantiation: jwe.c:_oidc_str_to_int_checked
Unexecuted instantiation: memcache.c:_oidc_str_to_int_checked
Unexecuted instantiation: file.c:_oidc_str_to_int_checked
129
0
static inline int _oidc_str_to_int(const char *s, const int default_value) {
130
0
  int v = default_value;
131
  /* leave v at default_value on any parse failure, rather than the old strtol() 0-on-garbage */
132
0
  (void)_oidc_str_to_int_checked(s, &v);
133
0
  return v;
134
0
}
Unexecuted instantiation: fuzz_jwks.c:_oidc_str_to_int
Unexecuted instantiation: util.c:_oidc_str_to_int
Unexecuted instantiation: stub.c:_oidc_str_to_int
Unexecuted instantiation: mod_auth_openidc.c:_oidc_str_to_int
Unexecuted instantiation: cfg.c:_oidc_str_to_int
Unexecuted instantiation: check.c:_oidc_str_to_int
Unexecuted instantiation: cache.c:_oidc_str_to_int
Unexecuted instantiation: provider.c:_oidc_str_to_int
Unexecuted instantiation: oauth.c:_oidc_str_to_int
Unexecuted instantiation: dir.c:_oidc_str_to_int
Unexecuted instantiation: parse.c:_oidc_str_to_int
Unexecuted instantiation: cmds.c:_oidc_str_to_int
Unexecuted instantiation: shm.c:_oidc_str_to_int
Unexecuted instantiation: common.c:_oidc_str_to_int
Unexecuted instantiation: authz.c:_oidc_str_to_int
Unexecuted instantiation: content.c:_oidc_str_to_int
Unexecuted instantiation: discovery.c:_oidc_str_to_int
Unexecuted instantiation: dpop.c:_oidc_str_to_int
Unexecuted instantiation: info.c:_oidc_str_to_int
Unexecuted instantiation: jwks.c:_oidc_str_to_int
Unexecuted instantiation: logout.c:_oidc_str_to_int
Unexecuted instantiation: refresh.c:_oidc_str_to_int
Unexecuted instantiation: request_uri.c:_oidc_str_to_int
Unexecuted instantiation: request.c:_oidc_str_to_int
Unexecuted instantiation: response.c:_oidc_str_to_int
Unexecuted instantiation: revoke.c:_oidc_str_to_int
Unexecuted instantiation: session_management.c:_oidc_str_to_int
Unexecuted instantiation: userinfo.c:_oidc_str_to_int
Unexecuted instantiation: auth.c:_oidc_str_to_int
Unexecuted instantiation: id_token.c:_oidc_str_to_int
Unexecuted instantiation: jwt.c:_oidc_str_to_int
Unexecuted instantiation: pkce.c:_oidc_str_to_int
Unexecuted instantiation: profile.c:_oidc_str_to_int
Unexecuted instantiation: proto.c:_oidc_str_to_int
Unexecuted instantiation: request_object.c:_oidc_str_to_int
Unexecuted instantiation: state.c:_oidc_str_to_int
Unexecuted instantiation: token.c:_oidc_str_to_int
Unexecuted instantiation: appinfo.c:_oidc_str_to_int
Unexecuted instantiation: base64.c:_oidc_str_to_int
Unexecuted instantiation: expr.c:_oidc_str_to_int
Unexecuted instantiation: html.c:_oidc_str_to_int
Unexecuted instantiation: key.c:_oidc_str_to_int
Unexecuted instantiation: pcre_subst.c:_oidc_str_to_int
Unexecuted instantiation: request_state.c:_oidc_str_to_int
Unexecuted instantiation: random.c:_oidc_str_to_int
Unexecuted instantiation: url.c:_oidc_str_to_int
Unexecuted instantiation: metrics.c:_oidc_str_to_int
Unexecuted instantiation: http.c:_oidc_str_to_int
Unexecuted instantiation: session.c:_oidc_str_to_int
Unexecuted instantiation: metadata.c:_oidc_str_to_int
Unexecuted instantiation: conf.c:_oidc_str_to_int
Unexecuted instantiation: client.c:_oidc_str_to_int
Unexecuted instantiation: json.c:_oidc_str_to_int
Unexecuted instantiation: jose.c:_oidc_str_to_int
Unexecuted instantiation: jwk.c:_oidc_str_to_int
Unexecuted instantiation: jws.c:_oidc_str_to_int
Unexecuted instantiation: jwe.c:_oidc_str_to_int
Unexecuted instantiation: memcache.c:_oidc_str_to_int
Unexecuted instantiation: file.c:_oidc_str_to_int
135
136
#ifdef WIN32
137
#define snprintf _snprintf
138
#endif
139
140
#ifndef OIDC_DEBUG
141
#define OIDC_DEBUG APLOG_DEBUG
142
#endif
143
144
#ifndef APLOG_TRACE1
145
#define APLOG_TRACE1 APLOG_DEBUG
146
#endif
147
148
#ifndef apr_uintptr_t
149
#define apr_uintptr_t apr_uint64_t
150
#endif
151
152
#ifndef APR_UINT32_MAX
153
#define APR_UINT32_MAX UINT32_MAX
154
#endif
155
156
#ifndef APR_INT64_MAX
157
#define APR_INT64_MAX INT64_MAX
158
#endif
159
160
#ifndef apr_time_from_msec
161
#define apr_time_from_msec(msec) ((apr_time_t)(msec) * 1000)
162
#endif
163
164
#define oidc_log(r, level, fmt, ...)                                                                                   \
165
1.74k
  ap_log_rerror(APLOG_MARK, level, 0, r, "%s: %s", __FUNCTION__, apr_psprintf(r->pool, fmt, ##__VA_ARGS__))
166
#define oidc_slog(s, level, fmt, ...)                                                                                  \
167
8
  ap_log_error(APLOG_MARK, level, 0, s, "%s: %s", __FUNCTION__,                                                  \
168
8
         apr_psprintf(s->process->pconf, fmt, ##__VA_ARGS__))
169
170
0
#define oidc_debug(r, fmt, ...) oidc_log(r, OIDC_DEBUG, fmt, ##__VA_ARGS__)
171
0
#define oidc_warn(r, fmt, ...) oidc_log(r, APLOG_WARNING, fmt, ##__VA_ARGS__)
172
0
#define oidc_info(r, fmt, ...) oidc_log(r, APLOG_INFO, fmt, ##__VA_ARGS__)
173
1.74k
#define oidc_error(r, fmt, ...) oidc_log(r, APLOG_ERR, fmt, ##__VA_ARGS__)
174
175
2
#define oidc_sdebug(s, fmt, ...) oidc_slog(s, OIDC_DEBUG, fmt, ##__VA_ARGS__)
176
0
#define oidc_swarn(s, fmt, ...) oidc_slog(s, APLOG_WARNING, fmt, ##__VA_ARGS__)
177
0
#define oidc_serror(s, fmt, ...) oidc_slog(s, APLOG_ERR, fmt, ##__VA_ARGS__)
178
179
#ifndef NAMEVER
180
#define NAMEVERSION "mod_auth_openidc-0.0.0"
181
#else
182
0
#define STRINGIFY(x) #x
183
0
#define TOSTRING(x) STRINGIFY(x)
184
0
#define NAMEVERSION TOSTRING(NAMEVER)
185
#endif
186
187
0
#define OIDC_CHAR_EQUAL '='
188
0
#define OIDC_CHAR_COLON ':'
189
#define OIDC_CHAR_TILDE '~'
190
0
#define OIDC_CHAR_SPACE ' '
191
0
#define OIDC_CHAR_COMMA ','
192
0
#define OIDC_CHAR_QUERY '?'
193
0
#define OIDC_CHAR_DOT '.'
194
0
#define OIDC_CHAR_AT '@'
195
0
#define OIDC_CHAR_FORWARD_SLASH '/'
196
0
#define OIDC_CHAR_PIPE '|'
197
0
#define OIDC_CHAR_AMP '&'
198
0
#define OIDC_CHAR_SEMI_COLON ';'
199
0
#define OIDC_CHAR_DQUOTE '"'
200
201
0
#define OIDC_STR_SPACE " "
202
#define OIDC_STR_EQUAL "="
203
0
#define OIDC_STR_AMP "&"
204
0
#define OIDC_STR_QUERY "?"
205
0
#define OIDC_STR_COLON ":"
206
0
#define OIDC_STR_SEMI_COLON ";"
207
0
#define OIDC_STR_FORWARD_SLASH "/"
208
0
#define OIDC_STR_AT "@"
209
0
#define OIDC_STR_COMMA ","
210
0
#define OIDC_STR_HASH "#"
211
212
#endif /* _MOD_AUTH_OPENIDC_CONST_H_ */