source: trunk/include/sh_utils.h@ 108

Last change on this file since 108 was 93, checked in by rainer, 18 years ago

Add check for PCI ROMs; fix ticket #51 (symlinks in root directory reported with leading double slash).

File size: 5.1 KB
Line 
1/* SAMHAIN file system integrity testing */
2/* Copyright (C) 1999 Rainer Wichmann */
3/* */
4/* This program is free software; you can redistribute it */
5/* and/or modify */
6/* it under the terms of the GNU General Public License as */
7/* published by */
8/* the Free Software Foundation; either version 2 of the License, or */
9/* (at your option) any later version. */
10/* */
11/* This program is distributed in the hope that it will be useful, */
12/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
13/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
14/* GNU General Public License for more details. */
15/* */
16/* You should have received a copy of the GNU General Public License */
17/* along with this program; if not, write to the Free Software */
18/* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
19
20
21#ifndef SH_UTILS_H
22#define SH_UTILS_H
23
24#include <stdarg.h>
25
26#include "slib.h"
27
28#include "sh_error.h"
29#include "sh_unix.h"
30
31#define S_FMT_STRING 1
32#define S_FMT_ULONG 2
33#define S_FMT_TIME 3
34#define S_FMT_LONG 4
35
36
37typedef struct ft_struc {
38 char fchar;
39 int type;
40 unsigned long data_ulong;
41 long data_long;
42 /*@null@*/char *data_str;
43} st_format;
44
45char * sh_util_formatted (const char * fmt, st_format * ftab);
46
47typedef struct sh_timeout_struct {
48 UINT64 time_last;
49 UINT64 time_dist;
50 int flag_ok;
51} SH_TIMEOUT;
52
53int sh_util_timeout_check (SH_TIMEOUT * sh_timer);
54
55/* This is a maximally equidistributed combined Tausworthe
56 * generator.
57 */
58UINT32 taus_get (void *state1, void *state2, void *state3);
59double taus_get_double (void *vstate); /* fast */
60int taus_seed (void);
61
62char * sh_util_strdup (const char * str);
63char * sh_util_strdup_l (const char * str, size_t len);
64char * sh_util_strsep (char **str, const char *delim);
65
66/* compactify verbose acl text
67 */
68char * sh_util_acl_compact (char * buf, ssize_t len);
69
70/* set signature type HASH-TIGER/HMAC-TIGER
71 */
72int sh_util_sigtype (const char * c);
73
74/* compute a signature
75 */
76char * sh_util_siggen (char * hexkey,
77 char * text, size_t textlen);
78
79/* eval boolean input
80 */
81int sh_util_flagval(const char * c, int * fval);
82
83/* ask if a file should be updated (returns S_TRUE/S_FALSE)
84 */
85int sh_util_ask_update(char * path);
86int sh_util_set_interactive(const char * str);
87
88/* don't log output files
89 */
90int sh_util_hidesetup(const char * c);
91
92/* valif utf-8 string
93 */
94int sh_util_valid_utf8 (const unsigned char * str);
95
96/* filenames are utf8
97 */
98int sh_util_obscure_utf8 (const char * c);
99
100/* exceptions to obscure name check
101 */
102int sh_util_obscure_ok (const char * str);
103
104/* output a hexchar[2]
105 */
106char * sh_util_charhex( unsigned char c );
107
108/* read a hexchar, return int value (0-15)
109 */
110int sh_util_hexchar( char c );
111
112/* change verifier
113 */
114int sh_util_set_newkey (const char * str);
115
116/* server mode
117 */
118int sh_util_setserver (const char * dummy);
119
120/* a simple compressor
121 */
122long sh_util_compress (char * dest, char * src, size_t dest_size);
123
124/* an even simpler en-/decoder
125 */
126void sh_util_encode (char * data, char * salt, int mode, char fill);
127
128/* copy len ( < 4) bytes from (char *) (long src) to (char *) dest,
129 * determine the four LSB's and use them (independent of sizeof(long))
130 */
131void sh_util_cpylong (char * dest, const char * src, int len );
132
133/* set timer for main loop
134 */
135int sh_util_setlooptime (const char * str);
136
137/* whether init or check the database
138 */
139int sh_util_setchecksum (const char * str);
140
141/* compare an in_string against a regular expression regex_str
142 return GOOD on successful match
143*/
144int sh_util_regcmp (char * regex_str, char * in_str);
145
146
147/* returns freshly allocated memory, return value should be free'd.
148 * Arhument list must be NULL terminated.
149 */
150char * sh_util_strconcat (const char * arg1, ...) SH_GNUC_NULL_TERMINATED;
151
152/* check if string is numeric only
153 */
154int sh_util_isnum (char *str);
155
156/* init a key w/random string
157 */
158int sh_util_keyinit (char * buf, long size);
159
160
161/* returns freshly allocated memory, return value should be free'd
162 */
163char * sh_util_dirname(const char * fullpath);
164
165/* returns freshly allocated memory, return value should be free'd
166 */
167char * sh_util_safe_name (const char * name);
168
169/* check max size of printf result string
170 */
171int sh_util_printf_maxlength (const char * fmt, va_list vl);
172
173/* check for obscure filenames
174 */
175int sh_util_obscurename (ShErrLevel level, char * name, int flag);
176
177/* returns freshly allocated memory, return value should be free'd
178 */
179char * sh_util_basename(const char * fullpath);
180
181#endif
Note: See TracBrowser for help on using the repository browser.