/
githubmirror
/
audit-userspace
Обзор
Документация
Войти
/
githubmirror
/
audit-userspace
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
lib/private.h
150 строк
5 KB
Steve Grubb
Make a couple functions private
05 авг 2025, 23:06
05 авг 2025, 23:06
436d61f
Код
Авторство
О чём код?
/* private.h -- * Copyright 2005,2006,2009,2013-14 Red Hat Inc., Durham, North Carolina. * All Rights Reserved. * * This library 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. * * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Authors: * Steve Grubb <sgrubb@redhat.com> */ #ifndef _PRIVATE_H_ #define _PRIVATE_H_ #include <stdint.h> // uint32_t #include "dso.h" #ifdef __cplusplus extern "C" { #endif typedef enum { REAL_ERR, HIDE_IT } hide_t; /* This structure is for protocol reference only. All fields are packed and in network order (LSB first). */ struct auditd_remote_message_wrapper { /* The magic number shall never have LF (0x0a) as one of its bytes. */ uint32_t magic; /* Bumped when the layout of this structure changes. */ uint8_t header_version; /* The minimum support needed to understand this message type. * Normally zero. */ uint8_t message_version; /* Upper 8 bits are generic type, see below. */ uint32_t type; /* Number of bytes that follow this header Must be 0..MAX_AUDIT_MESSAGE_LENGTH. */ uint16_t length; /* Copied from message to its reply. */ uint32_t sequence_id; /* The message follows for LENGTH bytes. */ }; #define AUDIT_RMW_HEADER_SIZE 16 /* The magic number shall never have LF (0x0a) as one of its bytes. */ #define AUDIT_RMW_MAGIC 0xff0000feUL #define AUDIT_RMW_HEADER_VERSION 0 /* If set, this is a reply. */ #define AUDIT_RMW_TYPE_REPLYMASK 0x40000000 /* If set, this reply indicates a fatal error of some sort. */ #define AUDIT_RMW_TYPE_FATALMASK 0x20000000 /* If set, this reply indicates success but with some warnings. */ #define AUDIT_RMW_TYPE_WARNMASK 0x10000000 /* This part of the message type is the details for the above. */ #define AUDIT_RMW_TYPE_DETAILMASK 0x000FFFFF /* Version 0 messages. */ #define AUDIT_RMW_TYPE_MESSAGE 0x00000000 #define AUDIT_RMW_TYPE_HEARTBEAT 0x00000001 #define AUDIT_RMW_TYPE_ACK 0x40000000 #define AUDIT_RMW_TYPE_ENDING 0x40000001 #define AUDIT_RMW_TYPE_DISKLOW 0x50000001 #define AUDIT_RMW_TYPE_DISKFULL 0x60000001 #define AUDIT_RMW_TYPE_DISKERROR 0x60000002 /* These next four should not be called directly. */ #define _AUDIT_RMW_PUTN32(header,i,v) \ header[i] = v & 0xff; \ header[i+1] = (v>>8) & 0xff; \ header[i+2] = (v>>16) & 0xff; \ header[i+3] = (v>>24) & 0xff; #define _AUDIT_RMW_PUTN16(header,i,v) \ header[i] = v & 0xff; \ header[i+1] = (v>>8) & 0xff; #define _AUDIT_RMW_GETN32(header,i) \ (((uint32_t)(header[i] & 0xFF)) | \ (((uint32_t)(header[i+1] & 0xFF))<<8) | \ (((uint32_t)(header[i+2] & 0xFF ))<<16) | \ (((uint32_t)(header[i+3] & 0xFF))<<24)) #define _AUDIT_RMW_GETN16(header,i) \ ((uint32_t)(header[i] & 0xFF) | ((uint32_t)(header[i+1] & 0xFF)<<8)) /* For these, HEADER must by of type "unsigned char *" or "unsigned char []" */ #define AUDIT_RMW_PACK_HEADER(header,mver,type,len,seq) \ _AUDIT_RMW_PUTN32 (header,0, AUDIT_RMW_MAGIC); \ header[4] = AUDIT_RMW_HEADER_VERSION; \ header[5] = mver; \ _AUDIT_RMW_PUTN32 (header,6, type); \ _AUDIT_RMW_PUTN16 (header,10, len); \ _AUDIT_RMW_PUTN32 (header,12, seq); #define AUDIT_RMW_IS_MAGIC(header,length) \ (length >= 4 && _AUDIT_RMW_GETN32 (header,0) == AUDIT_RMW_MAGIC) #define AUDIT_RMW_UNPACK_HEADER(header,hver,mver,type,len,seq) \ hver = header[4]; \ mver = header[5]; \ type = _AUDIT_RMW_GETN32 (header,6); \ len = _AUDIT_RMW_GETN16 (header,10); \ seq = _AUDIT_RMW_GETN32 (header,12); /* General */ extern int audit_send(int fd, int type, const void *data, unsigned int size); extern int __audit_send(int fd, int type, const void *data, unsigned int size, int *seq); AUDIT_HIDDEN_START /* Internal syslog messaging */ void audit_msg(int priority, const char *fmt, ...) #ifdef __GNUC__ __attribute__ ((format (printf, 2, 3))); #else ; #endif // This is the main messaging function used internally extern int audit_send_user_message(int fd, int type, hide_t hide_err, const char *message); int audit_name_to_perm(const char *name); const char *audit_perm_to_name(int perm); AUDIT_HIDDEN_END // libaudit.c struct audit_rule_data; // Forward declaration to prevent warnings int _audit_parse_syscall(const char *optarg, struct audit_rule_data *rule); extern int _audit_permadded; extern int _audit_archadded; extern int _audit_syscalladded; extern int _audit_exeadded; extern int _audit_filterfsadded; extern unsigned int _audit_elf; #ifdef __cplusplus } #endif #endif