match.h (4b4193256c8d3bc3a5397b5cd9494c2ad386317d) match.h (33fc95d8293cfca352ac875668857293e22d7d51)
1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * AppArmor security module
4 *
5 * This file contains AppArmor policy dfa matching engine definitions.
6 *
7 * Copyright (C) 1998-2008 Novell/SUSE
8 * Copyright 2009-2012 Canonical Ltd.

--- 111 unchanged lines hidden (view full) ---

120static inline size_t table_size(size_t len, size_t el_size)
121{
122 return ALIGN(sizeof(struct table_header) + len * el_size, 8);
123}
124
125int aa_setup_dfa_engine(void);
126void aa_teardown_dfa_engine(void);
127
1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * AppArmor security module
4 *
5 * This file contains AppArmor policy dfa matching engine definitions.
6 *
7 * Copyright (C) 1998-2008 Novell/SUSE
8 * Copyright 2009-2012 Canonical Ltd.

--- 111 unchanged lines hidden (view full) ---

120static inline size_t table_size(size_t len, size_t el_size)
121{
122 return ALIGN(sizeof(struct table_header) + len * el_size, 8);
123}
124
125int aa_setup_dfa_engine(void);
126void aa_teardown_dfa_engine(void);
127
128#define aa_state_t unsigned int
129
128struct aa_dfa *aa_dfa_unpack(void *blob, size_t size, int flags);
130struct aa_dfa *aa_dfa_unpack(void *blob, size_t size, int flags);
129unsigned int aa_dfa_match_len(struct aa_dfa *dfa, unsigned int start,
130 const char *str, int len);
131unsigned int aa_dfa_match(struct aa_dfa *dfa, unsigned int start,
132 const char *str);
133unsigned int aa_dfa_next(struct aa_dfa *dfa, unsigned int state,
134 const char c);
135unsigned int aa_dfa_outofband_transition(struct aa_dfa *dfa,
136 unsigned int state);
137unsigned int aa_dfa_match_until(struct aa_dfa *dfa, unsigned int start,
138 const char *str, const char **retpos);
139unsigned int aa_dfa_matchn_until(struct aa_dfa *dfa, unsigned int start,
140 const char *str, int n, const char **retpos);
131aa_state_t aa_dfa_match_len(struct aa_dfa *dfa, aa_state_t start,
132 const char *str, int len);
133aa_state_t aa_dfa_match(struct aa_dfa *dfa, aa_state_t start,
134 const char *str);
135aa_state_t aa_dfa_next(struct aa_dfa *dfa, aa_state_t state, const char c);
136aa_state_t aa_dfa_outofband_transition(struct aa_dfa *dfa, aa_state_t state);
137aa_state_t aa_dfa_match_until(struct aa_dfa *dfa, aa_state_t start,
138 const char *str, const char **retpos);
139aa_state_t aa_dfa_matchn_until(struct aa_dfa *dfa, aa_state_t start,
140 const char *str, int n, const char **retpos);
141
142void aa_dfa_free_kref(struct kref *kref);
143
144#define WB_HISTORY_SIZE 24
145struct match_workbuf {
146 unsigned int count;
147 unsigned int pos;
148 unsigned int len;
149 unsigned int size; /* power of 2, same as history size */
150 unsigned int history[WB_HISTORY_SIZE];
151};
152#define DEFINE_MATCH_WB(N) \
153struct match_workbuf N = { \
154 .count = 0, \
155 .pos = 0, \
156 .len = 0, \
157}
158
141
142void aa_dfa_free_kref(struct kref *kref);
143
144#define WB_HISTORY_SIZE 24
145struct match_workbuf {
146 unsigned int count;
147 unsigned int pos;
148 unsigned int len;
149 unsigned int size; /* power of 2, same as history size */
150 unsigned int history[WB_HISTORY_SIZE];
151};
152#define DEFINE_MATCH_WB(N) \
153struct match_workbuf N = { \
154 .count = 0, \
155 .pos = 0, \
156 .len = 0, \
157}
158
159unsigned int aa_dfa_leftmatch(struct aa_dfa *dfa, unsigned int start,
160 const char *str, unsigned int *count);
159aa_state_t aa_dfa_leftmatch(struct aa_dfa *dfa, aa_state_t start,
160 const char *str, unsigned int *count);
161
162/**
163 * aa_get_dfa - increment refcount on dfa @p
164 * @dfa: dfa (MAYBE NULL)
165 *
166 * Returns: pointer to @dfa if @dfa is NULL will return NULL
167 * Requires: @dfa must be held with valid refcount when called
168 */

--- 28 unchanged lines hidden ---
161
162/**
163 * aa_get_dfa - increment refcount on dfa @p
164 * @dfa: dfa (MAYBE NULL)
165 *
166 * Returns: pointer to @dfa if @dfa is NULL will return NULL
167 * Requires: @dfa must be held with valid refcount when called
168 */

--- 28 unchanged lines hidden ---