|
Packit Service |
5e8d2a |
/* aide, Advanced Intrusion Detection Environment
|
|
Packit Service |
5e8d2a |
*
|
|
Packit Service |
5e8d2a |
* Copyright (C) 1999-2006,2010,2011,2013,2015,2016 Rami Lehti, Pablo
|
|
Packit Service |
5e8d2a |
* Virolainen, Richard van den Berg, Hannes von Haugwitz
|
|
Packit Service |
5e8d2a |
* $Header$
|
|
Packit Service |
5e8d2a |
*
|
|
Packit Service |
5e8d2a |
* This program is free software; you can redistribute it and/or
|
|
Packit Service |
5e8d2a |
* modify it under the terms of the GNU General Public License as
|
|
Packit Service |
5e8d2a |
* published by the Free Software Foundation; either version 2 of the
|
|
Packit Service |
5e8d2a |
* License, or (at your option) any later version.
|
|
Packit Service |
5e8d2a |
*
|
|
Packit Service |
5e8d2a |
* This program is distributed in the hope that it will be useful, but
|
|
Packit Service |
5e8d2a |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit Service |
5e8d2a |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit Service |
5e8d2a |
* General Public License for more details.
|
|
Packit Service |
5e8d2a |
*
|
|
Packit Service |
5e8d2a |
* You should have received a copy of the GNU General Public License
|
|
Packit Service |
5e8d2a |
* along with this program; if not, write to the Free Software
|
|
Packit Service |
5e8d2a |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
Packit Service |
5e8d2a |
*/
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
#include "aide.h"
|
|
Packit Service |
5e8d2a |
#include <stdio.h>
|
|
Packit Service |
5e8d2a |
#include <stdlib.h>
|
|
Packit Service |
5e8d2a |
#include <string.h>
|
|
Packit Service |
5e8d2a |
#include <unistd.h>
|
|
Packit Service |
5e8d2a |
#include <errno.h>
|
|
Packit Service |
5e8d2a |
#include <sys/param.h>
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
#include "commandconf.h"
|
|
Packit Service |
5e8d2a |
#include "conf_lex.h"
|
|
Packit Service |
5e8d2a |
#include "conf_yacc.h"
|
|
Packit Service |
5e8d2a |
#include "db.h"
|
|
Packit Service |
5e8d2a |
#include "db_config.h"
|
|
Packit Service |
5e8d2a |
#include "gen_list.h"
|
|
Packit Service |
5e8d2a |
#include "symboltable.h"
|
|
Packit Service |
5e8d2a |
#include "md.h"
|
|
Packit Service |
5e8d2a |
#include "util.h"
|
|
Packit Service |
5e8d2a |
#include "base64.h"
|
|
Packit Service |
5e8d2a |
/*for locale support*/
|
|
Packit Service |
5e8d2a |
#include "locale-aide.h"
|
|
Packit Service |
5e8d2a |
/*for locale support*/
|
|
Packit Service |
5e8d2a |
#ifdef WITH_CURL
|
|
Packit Service |
5e8d2a |
#include "fopen.h"
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
#define BUFSIZE 4096
|
|
Packit Service |
5e8d2a |
#define ZBUFSIZE 16384
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
#ifndef MAXHOSTNAMELEN
|
|
Packit Service |
5e8d2a |
#define MAXHOSTNAMELEN 256
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
int commandconf(const char mode,const char* line)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
static char* before=NULL;
|
|
Packit Service |
5e8d2a |
static char* config=NULL;
|
|
Packit Service |
5e8d2a |
static char* after=NULL;
|
|
Packit Service |
5e8d2a |
char* all=NULL;
|
|
Packit Service |
5e8d2a |
char* tmp=NULL;
|
|
Packit Service |
5e8d2a |
int l=0;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
switch(mode){
|
|
Packit Service |
5e8d2a |
case 'B':{
|
|
Packit Service |
5e8d2a |
if(before==NULL){
|
|
Packit Service |
5e8d2a |
before=strdup(line);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
else {
|
|
Packit Service |
5e8d2a |
tmp=(char*)malloc(sizeof(char)
|
|
Packit Service |
5e8d2a |
*(strlen(before)+strlen(line)+2));
|
|
Packit Service |
5e8d2a |
tmp[0]='\0';
|
|
Packit Service |
5e8d2a |
strcat(tmp,before);
|
|
Packit Service |
5e8d2a |
strcat(tmp,"\n");
|
|
Packit Service |
5e8d2a |
strcat(tmp,line);
|
|
Packit Service |
5e8d2a |
free(before);
|
|
Packit Service |
5e8d2a |
before=tmp;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
case 'C':{
|
|
Packit Service |
5e8d2a |
config=strdup(line);
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
case 'A':{
|
|
Packit Service |
5e8d2a |
if(after==NULL){
|
|
Packit Service |
5e8d2a |
after=strdup(line);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
else {
|
|
Packit Service |
5e8d2a |
tmp=(char*)malloc(sizeof(char)
|
|
Packit Service |
5e8d2a |
*(strlen(after)+strlen(line)+2));
|
|
Packit Service |
5e8d2a |
strcpy(tmp,after);
|
|
Packit Service |
5e8d2a |
strcat(tmp,"\n");
|
|
Packit Service |
5e8d2a |
strcat(tmp,line);
|
|
Packit Service |
5e8d2a |
free(after);
|
|
Packit Service |
5e8d2a |
after=tmp;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
case 'D': {
|
|
Packit Service |
5e8d2a |
/* Let's do it */
|
|
Packit Service |
5e8d2a |
int rv=-1;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
config = expand_tilde(config);
|
|
Packit Service |
5e8d2a |
if (config!=NULL && strcmp(config,"-")==0) {
|
|
Packit Service |
5e8d2a |
error(255,_("Config from stdin\n"));
|
|
Packit Service |
5e8d2a |
rv=0;
|
|
Packit Service |
5e8d2a |
} else {
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
c89282 |
if (config != NULL) rv=access(config,R_OK);
|
|
Packit Service |
5e8d2a |
if(rv==-1){
|
|
Packit Service |
5e8d2a |
error(0,_("Cannot access config file: %s: %s\n"),config,strerror(errno));
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if(before==NULL&&after==NULL&&
|
|
Packit Service |
5e8d2a |
(config==NULL||strcmp(config,"")==0||rv==-1)){
|
|
Packit Service |
5e8d2a |
error(0,_("No config defined\n"));
|
|
Packit Service |
5e8d2a |
return RETFAIL;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if(before!=NULL) {
|
|
Packit Service |
5e8d2a |
l+=strlen(before);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if(config!=NULL) {
|
|
Packit Service |
5e8d2a |
l+=strlen(config);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if(after!=NULL) {
|
|
Packit Service |
5e8d2a |
l+=strlen(after);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
l+=strlen("@@include \n\n\n")+1;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
all=(char*)malloc(sizeof(char)*l);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
memset(all,0,l);
|
|
Packit Service |
5e8d2a |
if(before!=NULL){
|
|
Packit Service |
5e8d2a |
strcat(all,before);
|
|
Packit Service |
5e8d2a |
strcat(all,"\n");
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
strcat(all,"@@include ");
|
|
Packit Service |
5e8d2a |
strcat(all,config);
|
|
Packit Service |
5e8d2a |
strcat(all,"\n");
|
|
Packit Service |
5e8d2a |
if(after!=NULL){
|
|
Packit Service |
5e8d2a |
strcat(all,after);
|
|
Packit Service |
5e8d2a |
strcat(all,"\n");
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
error(200,"commandconf():%s\n",all);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
conf_scan_string(all);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if(confparse()){
|
|
Packit Service |
5e8d2a |
free(all);
|
|
Packit Service |
5e8d2a |
return RETFAIL;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
free(all);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
default: {
|
|
Packit Service |
5e8d2a |
error(0,_("Illegal argument %c to commmandconf()\n"),mode);
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
return RETOK;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
int conf_input_wrapper(char* buf, int max_size, FILE* in)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
int retval=0;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
/* FIXME Add support for gzipped config. :) */
|
|
Packit Service |
5e8d2a |
#ifdef WITH_MHASH
|
|
Packit Service |
5e8d2a |
/* Read a character at a time until we are doing md */
|
|
Packit Service |
c89282 |
int c=0;
|
|
Packit Service |
5e8d2a |
if(conf->do_configmd){
|
|
Packit Service |
5e8d2a |
retval=fread(buf,1,max_size,in);
|
|
Packit Service |
5e8d2a |
}else {
|
|
Packit Service |
5e8d2a |
c=fgetc(in);
|
|
Packit Service |
5e8d2a |
retval= (c==EOF) ? 0 : (buf[0] = c,1);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
#else
|
|
Packit Service |
5e8d2a |
retval=fread(buf,1,max_size,in);
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
#ifdef WITH_MHASH
|
|
Packit Service |
c89282 |
char* tmp=NULL;
|
|
Packit Service |
c89282 |
void* key=NULL;
|
|
Packit Service |
c89282 |
int keylen=0;
|
|
Packit Service |
5e8d2a |
if(conf->do_configmd||conf->config_check){
|
|
Packit Service |
5e8d2a |
if(((conf->do_configmd==1)&&conf->config_check)||!conf->confmd){
|
|
Packit Service |
5e8d2a |
if(conf->do_configmd==1){
|
|
Packit Service |
5e8d2a |
conf->do_configmd+=1;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((key=get_conf_key())!=NULL){
|
|
Packit Service |
5e8d2a |
keylen=get_conf_key_len();
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if( (conf->confmd=
|
|
Packit Service |
5e8d2a |
mhash_hmac_init(conf->confhmactype,
|
|
Packit Service |
5e8d2a |
key,
|
|
Packit Service |
5e8d2a |
keylen,
|
|
Packit Service |
5e8d2a |
mhash_get_hash_pblock(conf->confhmactype)))==
|
|
Packit Service |
5e8d2a |
MHASH_FAILED){
|
|
Packit Service |
5e8d2a |
error(0, "mhash_hmac_init() failed for %i for config check. Aborting\n",
|
|
Packit Service |
5e8d2a |
conf->confhmactype);
|
|
Packit Service |
5e8d2a |
exit(EXIT_FAILURE);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
} else {
|
|
Packit Service |
5e8d2a |
conf->do_configmd=0;
|
|
Packit Service |
5e8d2a |
return retval;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
/* FIXME This does not handle the case that @@end_config is on
|
|
Packit Service |
5e8d2a |
buffer boundary. */
|
|
Packit Service |
5e8d2a |
if((tmp=strnstr(buf,"@@end_config",retval))!=NULL){
|
|
Packit Service |
5e8d2a |
/* We have end of config don't feed the last line to mhash */
|
|
Packit Service |
5e8d2a |
mhash(conf->confmd,(void*)buf,tmp-buf);
|
|
Packit Service |
5e8d2a |
} else {
|
|
Packit Service |
5e8d2a |
mhash(conf->confmd,(void*)buf,retval);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
return retval;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
int db_input_wrapper(char* buf, int max_size, int db)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
int retval=0;
|
|
Packit Service |
5e8d2a |
int c=0;
|
|
Packit Service |
5e8d2a |
int err=0;
|
|
Packit Service |
5e8d2a |
int* domd=NULL;
|
|
Packit Service |
5e8d2a |
#ifdef WITH_CURL
|
|
Packit Service |
5e8d2a |
url_t* db_url=NULL;
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
#ifdef WITH_MHASH
|
|
Packit Service |
5e8d2a |
char* tmp=NULL;
|
|
Packit Service |
5e8d2a |
MHASH* md=NULL;
|
|
Packit Service |
5e8d2a |
void* key=NULL;
|
|
Packit Service |
5e8d2a |
int keylen;
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
FILE** db_filep=NULL;
|
|
Packit Service |
5e8d2a |
#ifdef WITH_ZLIB
|
|
Packit Service |
5e8d2a |
gzFile* db_gzp=NULL;
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
struct md_container *mdc;
|
|
Packit Service |
5e8d2a |
switch(db) {
|
|
Packit Service |
5e8d2a |
case DB_OLD: {
|
|
Packit Service |
5e8d2a |
#ifdef WITH_CURL
|
|
Packit Service |
5e8d2a |
db_url=conf->db_in_url;
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
domd=&(conf->do_dboldmd);
|
|
Packit Service |
5e8d2a |
#ifdef WITH_MHASH
|
|
Packit Service |
5e8d2a |
md=&(conf->dboldmd);
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
db_filep=&(conf->db_in);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
#ifdef WITH_ZLIB
|
|
Packit Service |
5e8d2a |
db_gzp=&(conf->db_gzin);
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
case DB_NEW: {
|
|
Packit Service |
5e8d2a |
#ifdef WITH_CURL
|
|
Packit Service |
5e8d2a |
db_url=conf->db_new_url;
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
domd=&(conf->do_dbnewmd);
|
|
Packit Service |
5e8d2a |
#ifdef WITH_MHASH
|
|
Packit Service |
5e8d2a |
md=&(conf->dbnewmd);
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
db_filep=&(conf->db_new);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
#ifdef WITH_ZLIB
|
|
Packit Service |
5e8d2a |
db_gzp=&(conf->db_gznew);
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
c89282 |
default: {
|
|
Packit Service |
c89282 |
return 0;
|
|
Packit Service |
c89282 |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
#ifdef WITH_CURL
|
|
Packit Service |
5e8d2a |
switch (db_url->type) {
|
|
Packit Service |
5e8d2a |
case url_http:
|
|
Packit Service |
5e8d2a |
case url_https:
|
|
Packit Service |
5e8d2a |
case url_ftp: {
|
|
Packit Service |
5e8d2a |
retval=url_fread(buf,1,max_size,(URL_FILE *)*db_filep);
|
|
Packit Service |
5e8d2a |
if ((mdc = (db == DB_OLD ? conf->mdc_in : conf->mdc_out))) {
|
|
Packit Service |
5e8d2a |
update_md(mdc, buf, retval);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
default:
|
|
Packit Service |
5e8d2a |
#endif /* WITH CURL */
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
/* Read a character at a time until we are doing md */
|
|
Packit Service |
5e8d2a |
#ifdef WITH_ZLIB
|
|
Packit Service |
5e8d2a |
if((*db_gzp==NULL)&&(*domd)){
|
|
Packit Service |
5e8d2a |
retval=fread(buf,1,max_size,*db_filep);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((*db_gzp!=NULL)&&(*domd)){
|
|
Packit Service |
5e8d2a |
if(gzeof(*db_gzp)){
|
|
Packit Service |
5e8d2a |
retval=0;
|
|
Packit Service |
5e8d2a |
buf[0]='\0';
|
|
Packit Service |
5e8d2a |
}else {
|
|
Packit Service |
5e8d2a |
if((retval=gzread(*db_gzp,buf,max_size))<0){
|
|
Packit Service |
5e8d2a |
error(0,_("gzread() failed: gzerr=%s!\n"),gzerror(*db_gzp,&err));
|
|
Packit Service |
5e8d2a |
retval=0;
|
|
Packit Service |
5e8d2a |
buf[0]='\0';
|
|
Packit Service |
5e8d2a |
} else {
|
|
Packit Service |
5e8d2a |
/* gzread returns 0 even if uncompressed bytes were read*/
|
|
Packit Service |
5e8d2a |
error(240,"nread=%d,strlen(buf)=%lu,errno=%s,gzerr=%s\n",
|
|
Packit Service |
5e8d2a |
retval,(unsigned long)strnlen((char*)buf, max_size),
|
|
Packit Service |
5e8d2a |
strerror(errno),gzerror(*db_gzp,&err));
|
|
Packit Service |
5e8d2a |
if(retval==0){
|
|
Packit Service |
5e8d2a |
retval=strnlen((char*)buf, max_size);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((*db_gzp!=NULL)&&!(*domd)){
|
|
Packit Service |
5e8d2a |
c=gzgetc(*db_gzp);
|
|
Packit Service |
5e8d2a |
retval= (c==EOF) ? 0 : (buf[0] = c,1);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((*db_gzp==NULL)&&!(*domd)){
|
|
Packit Service |
5e8d2a |
c=fgetc(*db_filep);
|
|
Packit Service |
5e8d2a |
if(c==(unsigned char)'\037'){
|
|
Packit Service |
5e8d2a |
c=fgetc(*db_filep);
|
|
Packit Service |
5e8d2a |
if(c==(unsigned char)'\213'){
|
|
Packit Service |
5e8d2a |
/* We got gzip header. */
|
|
Packit Service |
5e8d2a |
error(255,"Got Gzip header. Handling..\n");
|
|
Packit Service |
5e8d2a |
lseek(fileno(*db_filep),0L,SEEK_SET);
|
|
Packit Service |
5e8d2a |
*db_gzp=gzdopen(fileno(*db_filep),"rb");
|
|
Packit Service |
5e8d2a |
c=gzgetc(*db_gzp);
|
|
Packit Service |
5e8d2a |
error(255,"First character after gzip header is: %c(%#X)\n",c,c);
|
|
Packit Service |
5e8d2a |
if(c==-1) {
|
|
Packit Service |
5e8d2a |
int xx;
|
|
Packit Service |
5e8d2a |
error(0,"Error reading gzipped file: %s\n",gzerror(*db_gzp,&xx));
|
|
Packit Service |
5e8d2a |
exit(EXIT_FAILURE);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}else {
|
|
Packit Service |
5e8d2a |
/* False alarm */
|
|
Packit Service |
5e8d2a |
ungetc(c,*db_filep);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
retval= (c==EOF) ? 0 : (buf[0] = c,1);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
#else /* WITH_ZLIB */
|
|
Packit Service |
5e8d2a |
#ifdef WITH_MHASH
|
|
Packit Service |
5e8d2a |
if(*domd){
|
|
Packit Service |
5e8d2a |
retval=fread(buf,1,max_size,*db_filep);
|
|
Packit Service |
5e8d2a |
}else {
|
|
Packit Service |
5e8d2a |
c=fgetc(*db_filep);
|
|
Packit Service |
5e8d2a |
retval= (c==EOF) ? 0 : (buf[0] = c,1);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
#else /* WITH_MHASH */
|
|
Packit Service |
5e8d2a |
retval=fread(buf,1,max_size,*db_filep);
|
|
Packit Service |
5e8d2a |
#endif /* WITH_MHASH */
|
|
Packit Service |
5e8d2a |
#endif /* WITH_ZLIB */
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if ((mdc = (db == DB_OLD ? conf->mdc_in : conf->mdc_out))) {
|
|
Packit Service |
5e8d2a |
update_md(mdc, buf, retval);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
#ifdef WITH_MHASH
|
|
Packit Service |
5e8d2a |
if(*domd){
|
|
Packit Service |
5e8d2a |
if(!*md){
|
|
Packit Service |
5e8d2a |
if((key=get_db_key())!=NULL){
|
|
Packit Service |
5e8d2a |
keylen=get_db_key_len();
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if( (*md=
|
|
Packit Service |
5e8d2a |
mhash_hmac_init(conf->dbhmactype,
|
|
Packit Service |
5e8d2a |
key,
|
|
Packit Service |
5e8d2a |
keylen,
|
|
Packit Service |
5e8d2a |
mhash_get_hash_pblock(conf->dbhmactype)))==
|
|
Packit Service |
5e8d2a |
MHASH_FAILED){
|
|
Packit Service |
5e8d2a |
error(0, "mhash_hmac_init() failed for db check. Aborting\n");
|
|
Packit Service |
5e8d2a |
exit(EXIT_FAILURE);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
} else {
|
|
Packit Service |
5e8d2a |
*domd=0;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
/* FIXME This does not handle the case that @@end_config is on
|
|
Packit Service |
5e8d2a |
buffer boundary. */
|
|
Packit Service |
5e8d2a |
if (*domd!=0) {
|
|
Packit Service |
5e8d2a |
if((tmp=strnstr(buf,"@@end_db",retval))!=NULL){
|
|
Packit Service |
5e8d2a |
/* We have end of db don't feed the last line to mhash */
|
|
Packit Service |
5e8d2a |
mhash(*md,(void*)buf,tmp-buf);
|
|
Packit Service |
5e8d2a |
/* We don't want to come here again after the *md has been deinited
|
|
Packit Service |
5e8d2a |
by db_readline_file() */
|
|
Packit Service |
5e8d2a |
*domd=0;
|
|
Packit Service |
5e8d2a |
} else {
|
|
Packit Service |
5e8d2a |
mhash(*md,(void*)buf,retval);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
#ifdef WITH_CURL
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
#endif /* WITH CURL */
|
|
Packit Service |
5e8d2a |
return retval;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
int check_db_order(DB_FIELD* d,int size, DB_FIELD a)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
int i;
|
|
Packit Service |
5e8d2a |
for(i=0;i
|
|
Packit Service |
5e8d2a |
if(d[i]==a)
|
|
Packit Service |
5e8d2a |
return RETFAIL;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
return RETOK;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
int check_dboo(DB_FIELD a){
|
|
Packit Service |
5e8d2a |
return check_db_order(conf->db_out_order,conf->db_out_size,a);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
void update_db_out_order(DB_ATTR_TYPE attr)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
/* First we add those attributes that must be there */
|
|
Packit Service |
5e8d2a |
if (check_dboo(db_linkname)==RETOK) {
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_linkname;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if (check_dboo(db_attr)==RETOK) {
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_attr;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if(check_dboo(db_perm)==RETOK){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_perm;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if(check_dboo(db_inode)==RETOK){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_inode;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_BCOUNT) && (check_dboo(db_bcount)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_bcount;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_UID) && (check_dboo(db_uid)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_uid;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_GID) && (check_dboo(db_gid)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_gid;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_SIZE) && (check_dboo(db_size)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_size;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_SIZEG) && (check_dboo(db_size)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_size;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_ATIME) && (check_dboo(db_atime)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_atime;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_MTIME) && (check_dboo(db_mtime)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_mtime;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_CTIME) && (check_dboo(db_ctime)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_ctime;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_LNKCOUNT) && (check_dboo(db_lnkcount)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_lnkcount;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_MD5) && (check_dboo(db_md5)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_md5;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_SHA1) && (check_dboo(db_sha1)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_sha1;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_RMD160) && (check_dboo(db_rmd160)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_rmd160;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_TIGER) && (check_dboo(db_tiger)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_tiger;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_CRC32) && (check_dboo(db_crc32)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_crc32;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_HAVAL) && (check_dboo(db_haval)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_haval;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
/*
|
|
Packit Service |
5e8d2a |
#ifdef WITH_MHASH
|
|
Packit Service |
5e8d2a |
*/
|
|
Packit Service |
5e8d2a |
if((attr&DB_GOST) && (check_dboo(db_gost)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_gost;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_WHIRLPOOL) && (check_dboo(db_whirlpool)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_whirlpool;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_CRC32B) && (check_dboo(db_crc32b)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_crc32b;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
/*
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
*/
|
|
Packit Service |
5e8d2a |
if((attr&DB_SHA256) && (check_dboo(db_sha256)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_sha256;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_SHA512) && (check_dboo(db_sha512)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_sha512;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
#ifdef WITH_ACL
|
|
Packit Service |
5e8d2a |
if((attr&DB_ACL) && (check_dboo(db_acl)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_acl;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
if((attr&DB_XATTRS) && (check_dboo(db_xattrs)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_xattrs;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_SELINUX) && (check_dboo(db_selinux)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_selinux;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_E2FSATTRS) && (check_dboo(db_e2fsattrs)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_e2fsattrs;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if((attr&DB_CHECKMASK) && (check_dboo(db_checkmask)!=RETFAIL)){
|
|
Packit Service |
5e8d2a |
conf->db_out_order[conf->db_out_size++]=db_checkmask;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
char* get_variable_value(char* var)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
list* r=NULL;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if((r=list_find(var,conf->defsyms))){
|
|
Packit Service |
5e8d2a |
return (((symba*)r->data)->value);
|
|
Packit Service |
5e8d2a |
};
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
return NULL;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
void putbackvariable(char* var)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
char* a=NULL;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
char* v=strdup(var);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
char* subst_begin=strstr(v,"@@{");
|
|
Packit Service |
5e8d2a |
char* subst_end=strstr(subst_begin,"}");
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
char* tmp=(char*)malloc((subst_end-subst_begin)+1);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
tmp = strncpy(tmp,subst_begin+3,subst_end-subst_begin-3);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
tmp[subst_end-subst_begin-3]='\0';
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
conf_put_token(subst_end+1);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if((a=get_variable_value(tmp))!=NULL){
|
|
Packit Service |
5e8d2a |
conf_put_token(a);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
else {
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
error(230,_("Variable %s not defined\n"),tmp);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
/*
|
|
Packit Service |
5e8d2a |
* We can use nondefined variable
|
|
Packit Service |
5e8d2a |
*/
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
subst_begin[0]='\0';
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
conf_put_token(v);
|
|
Packit Service |
5e8d2a |
conf_put_token("\n");
|
|
Packit Service |
5e8d2a |
free(v);
|
|
Packit Service |
5e8d2a |
free(tmp);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
void do_define(char* name, char* value)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
symba* s=NULL;
|
|
Packit Service |
5e8d2a |
list* l=NULL;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if(!(l=list_find(name,conf->defsyms))){
|
|
Packit Service |
5e8d2a |
s=(symba*)malloc(sizeof(symba));
|
|
Packit Service |
5e8d2a |
s->name=name;
|
|
Packit Service |
5e8d2a |
s->value=value;
|
|
Packit Service |
5e8d2a |
conf->defsyms=list_append(conf->defsyms,(void*)s);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
else {
|
|
Packit Service |
5e8d2a |
free(((symba*)l->data)->value);
|
|
Packit Service |
5e8d2a |
((symba*)l->data)->value=NULL;
|
|
Packit Service |
5e8d2a |
((symba*)l->data)->value=value;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
void do_undefine(char* name)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
list*r=NULL;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if((r=list_find(name,conf->defsyms))){
|
|
Packit Service |
5e8d2a |
free(((symba*)r->data)->value);
|
|
Packit Service |
5e8d2a |
free((symba*)r->data);
|
|
Packit Service |
5e8d2a |
r->data=NULL;
|
|
Packit Service |
5e8d2a |
conf->defsyms=list_delete_item(r);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
int handle_endif(int doit,int allow_else){
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if(doit){
|
|
Packit Service |
5e8d2a |
int count=1;
|
|
Packit Service |
5e8d2a |
error(230,_("\nEating until @@endif\n"));
|
|
Packit Service |
5e8d2a |
do {
|
|
Packit Service |
5e8d2a |
int i = conflex();
|
|
Packit Service |
5e8d2a |
switch (i) {
|
|
Packit Service |
5e8d2a |
case TIFDEF : {
|
|
Packit Service |
5e8d2a |
count++;
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
case TIFNDEF : {
|
|
Packit Service |
5e8d2a |
count++;
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
case TENDIF : {
|
|
Packit Service |
5e8d2a |
count--;
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
case TIFHOST : {
|
|
Packit Service |
5e8d2a |
count++;
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
case TIFNHOST : {
|
|
Packit Service |
5e8d2a |
count++;
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
case TELSE : {
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if (count==1) {
|
|
Packit Service |
5e8d2a |
/*
|
|
Packit Service |
5e8d2a |
* We have done enough
|
|
Packit Service |
5e8d2a |
*/
|
|
Packit Service |
5e8d2a |
if (allow_else) {
|
|
Packit Service |
5e8d2a |
return 0;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
else {
|
|
Packit Service |
5e8d2a |
conferror("Ambiguous else");
|
|
Packit Service |
5e8d2a |
return -1;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
case 0 : {
|
|
Packit Service |
5e8d2a |
conferror("@@endif or @@else expected");
|
|
Packit Service |
5e8d2a |
return -1;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
default : {
|
|
Packit Service |
5e8d2a |
/*
|
|
Packit Service |
5e8d2a |
* empty default
|
|
Packit Service |
5e8d2a |
*/
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
} while (count!=0);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
conf_put_token("\n@@endif\n");
|
|
Packit Service |
5e8d2a |
error(230,"\nEating done\n");
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
return 0;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
int do_ifxdef(int mode,char* name)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
int doit;
|
|
Packit Service |
5e8d2a |
doit=mode;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if((list_find(name,conf->defsyms))){
|
|
Packit Service |
5e8d2a |
doit=1-doit;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
return (handle_endif(doit,1));
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
int do_ifxhost(int mode,char* name)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
int doit;
|
|
Packit Service |
5e8d2a |
char* s=NULL;
|
|
Packit Service |
5e8d2a |
char *p;
|
|
Packit Service |
5e8d2a |
doit=mode;
|
|
Packit Service |
5e8d2a |
s=(char*)malloc(sizeof(char)*MAXHOSTNAMELEN+1);
|
|
Packit Service |
5e8d2a |
if (s == NULL) {
|
|
Packit Service |
5e8d2a |
error(0,_("Couldn't malloc hostname buffer"));
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
s[MAXHOSTNAMELEN] = '\0';
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if(gethostname(s,MAXHOSTNAMELEN)==-1){
|
|
Packit Service |
5e8d2a |
error(0,_("Couldn't get hostname %s"),name);
|
|
Packit Service |
5e8d2a |
free(s);
|
|
Packit Service |
5e8d2a |
return -1;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
/* strip off everything past the . */
|
|
Packit Service |
5e8d2a |
p = strchr(s, '.');
|
|
Packit Service |
5e8d2a |
if (p != NULL) {
|
|
Packit Service |
5e8d2a |
*p = '\0';
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
if(strcmp(name,s)==0) {
|
|
Packit Service |
5e8d2a |
doit=1-doit;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
free(s);
|
|
Packit Service |
5e8d2a |
return (handle_endif(doit,1));
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
list* append_rxlist(char* rx,DB_ATTR_TYPE attr,list* rxlst, RESTRICTION_TYPE restriction)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
extern long conf_lineno; /* defined & set in conf_lex.l */
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
rx_rule* r=NULL;
|
|
Packit Service |
5e8d2a |
r=(rx_rule*)malloc(sizeof(rx_rule));
|
|
Packit Service |
5e8d2a |
r->rx=rx;
|
|
Packit Service |
5e8d2a |
r->attr=attr;
|
|
Packit Service |
5e8d2a |
r->conf_lineno = conf_lineno;
|
|
Packit Service |
5e8d2a |
r->restriction = restriction;
|
|
Packit Service |
5e8d2a |
if (attr&DB_CHECKINODE && attr&DB_CTIME)
|
|
Packit Service |
5e8d2a |
error(20,"Rule at line %li has c and I flags enabled at the same time. If same inode is found, flag c is ignored\n",conf_lineno);
|
|
Packit Service |
5e8d2a |
update_db_out_order(r->attr);
|
|
Packit Service |
5e8d2a |
rxlst=list_append(rxlst,(void*)r);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
return rxlst;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
void do_groupdef(char* group,DB_ATTR_TYPE value)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
list* r=NULL;
|
|
Packit Service |
5e8d2a |
symba* s=NULL;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if (strcmp(group, "ignore_list") == 0) {
|
|
Packit Service |
5e8d2a |
error(2, "DEPRECATION WARNING, Using '%s' is deprecated. Update your config and use '%s' instead.\n", group, "report_ignore_changed_attrs");
|
|
Packit Service |
5e8d2a |
group = "report_ignore_changed_attrs";
|
|
Packit Service |
5e8d2a |
} else if (strcmp(group, "report_attributes") == 0) {
|
|
Packit Service |
5e8d2a |
error(2, "DEPRECATION WARNING, Using '%s' is deprecated. Update your config and use '%s' instead.\n", group, "report_force_attrs");
|
|
Packit Service |
5e8d2a |
group = "report_force_attrs";
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if((r=list_find(group,conf->groupsyms))){
|
|
Packit Service |
5e8d2a |
error(2, "Warning: group '%s' is redefined\n", group);
|
|
Packit Service |
5e8d2a |
((symba*)r->data)->ival=value;
|
|
Packit Service |
5e8d2a |
return;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
/* This is a new group */
|
|
Packit Service |
5e8d2a |
s=(symba*)malloc(sizeof(symba));
|
|
Packit Service |
5e8d2a |
s->name=group;
|
|
Packit Service |
5e8d2a |
s->ival=value;
|
|
Packit Service |
5e8d2a |
conf->groupsyms=list_append(conf->groupsyms,(void*)s);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
RESTRICTION_TYPE get_restrictionval(char* ch) {
|
|
Packit Service |
5e8d2a |
if (strcmp(ch, "f") == 0) { return RESTRICTION_FT_REG; }
|
|
Packit Service |
5e8d2a |
else if (strcmp(ch, "d") == 0) { return RESTRICTION_FT_DIR; }
|
|
Packit Service |
5e8d2a |
else if (strcmp(ch, "p") == 0) { return RESTRICTION_FT_FIFO; }
|
|
Packit Service |
5e8d2a |
else if (strcmp(ch, "l") == 0) { return RESTRICTION_FT_LNK; }
|
|
Packit Service |
5e8d2a |
else if (strcmp(ch, "b") == 0) { return RESTRICTION_FT_BLK; }
|
|
Packit Service |
5e8d2a |
else if (strcmp(ch, "c") == 0) { return RESTRICTION_FT_CHR; }
|
|
Packit Service |
5e8d2a |
else if (strcmp(ch, "s") == 0) { return RESTRICTION_FT_SOCK; }
|
|
Packit Service |
5e8d2a |
else if (strcmp(ch, "D") == 0) { return RESTRICTION_FT_DOOR; }
|
|
Packit Service |
5e8d2a |
else if (strcmp(ch, "P") == 0) { return RESTRICTION_FT_PORT; }
|
|
Packit Service |
5e8d2a |
else { return RESTRICTION_NULL; }
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
DB_ATTR_TYPE get_groupval(char* group)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
list* r=NULL;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if((r=list_find(group,conf->groupsyms))){
|
|
Packit Service |
5e8d2a |
return (((symba*)r->data)->ival);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
return -1;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
void do_dbdef(int dbtype,char* val)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
url_t* u=NULL;
|
|
Packit Service |
5e8d2a |
url_t** conf_db_url;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
error(255,"do_dbdef (%i) called with (%s)\n",dbtype,val);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
switch(dbtype) {
|
|
Packit Service |
5e8d2a |
case DB_OLD: {
|
|
Packit Service |
5e8d2a |
conf_db_url=&(conf->db_in_url);
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
case DB_WRITE: {
|
|
Packit Service |
5e8d2a |
conf_db_url=&(conf->db_out_url);
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
case DB_NEW: {
|
|
Packit Service |
5e8d2a |
conf_db_url=&(conf->db_new_url);
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
default : {
|
|
Packit Service |
5e8d2a |
error(0,"Invalid call of do_dbdef\n");
|
|
Packit Service |
5e8d2a |
return;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if(*conf_db_url==NULL){
|
|
Packit Service |
5e8d2a |
u=parse_url(val);
|
|
Packit Service |
5e8d2a |
/* FIXME Check the URL if you add support for databases that cannot be
|
|
Packit Service |
5e8d2a |
* both input and output urls */
|
|
Packit Service |
5e8d2a |
switch (dbtype) {
|
|
Packit Service |
5e8d2a |
case DB_OLD:
|
|
Packit Service |
5e8d2a |
case DB_NEW:{
|
|
Packit Service |
5e8d2a |
if(u==NULL||u->type==url_unknown||u->type==url_stdout
|
|
Packit Service |
5e8d2a |
||u->type==url_stderr) {
|
|
Packit Service |
5e8d2a |
error(0,_("Unsupported input URL-type:%s\n"),val);
|
|
Packit Service |
c89282 |
free(u);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
else {
|
|
Packit Service |
5e8d2a |
*conf_db_url=u;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
case DB_WRITE: {
|
|
Packit Service |
5e8d2a |
if(u==NULL||u->type==url_unknown||u->type==url_stdin){
|
|
Packit Service |
5e8d2a |
error(0,_("Unsupported output URL-type:%s\n"),val);
|
|
Packit Service |
c89282 |
free(u);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
else{
|
|
Packit Service |
5e8d2a |
conf->db_out_url=u;
|
|
Packit Service |
5e8d2a |
error(200,_("Output database set to \"%s\" \"%s\"\n"),val,u->value);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
free(val);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
void do_dbindef(char* val)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
url_t* u=NULL;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if(conf->db_in_url==NULL){
|
|
Packit Service |
5e8d2a |
u=parse_url(val);
|
|
Packit Service |
5e8d2a |
/* FIXME Check the URL if you add support for databases that cannot be
|
|
Packit Service |
5e8d2a |
* both input and output urls */
|
|
Packit Service |
5e8d2a |
if(u==NULL||u->type==url_unknown||u->type==url_stdout
|
|
Packit Service |
5e8d2a |
||u->type==url_stderr) {
|
|
Packit Service |
5e8d2a |
error(0,_("Unsupported input URL-type:%s\n"),val);
|
|
Packit Service |
c89282 |
free(u);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
else {
|
|
Packit Service |
5e8d2a |
conf->db_in_url=u;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
free(val);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
void do_dboutdef(char* val)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
url_t* u=NULL;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
error(200,_("Setting output database \"%s\"\n"),val);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
if(conf->db_out_url==NULL){
|
|
Packit Service |
5e8d2a |
u=parse_url(val);
|
|
Packit Service |
5e8d2a |
/* FIXME Check the URL if you add support for databases that cannot be
|
|
Packit Service |
5e8d2a |
* both input and output urls */
|
|
Packit Service |
5e8d2a |
if(u==NULL||u->type==url_unknown||u->type==url_stdin){
|
|
Packit Service |
5e8d2a |
error(0,_("Unsupported output URL-type:%s\n"),val);
|
|
Packit Service |
c89282 |
free(u);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
else{
|
|
Packit Service |
5e8d2a |
conf->db_out_url=u;
|
|
Packit Service |
5e8d2a |
error(200,_("Output database set to \"%s\" \"%s\"\n"),val,u->value);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
} else {
|
|
Packit Service |
5e8d2a |
error(200,_("Output database already set\n"));
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
free(val);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
void do_repurldef(char* val)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
url_t* u=NULL;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
u=parse_url(val);
|
|
Packit Service |
5e8d2a |
/* FIXME Check the URL if you add support for databases that cannot be
|
|
Packit Service |
5e8d2a |
* both input and output urls */
|
|
Packit Service |
5e8d2a |
if(u==NULL||u->type==url_unknown||u->type==url_stdin){
|
|
Packit Service |
5e8d2a |
error(0,_("Unsupported output URL-type:%s\n"),val);
|
|
Packit Service |
5e8d2a |
} else {
|
|
Packit Service |
5e8d2a |
error_init(u,0);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
c89282 |
|
|
Packit Service |
c89282 |
free(u);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
void do_verbdef(char* val)
|
|
Packit Service |
5e8d2a |
{
|
|
Packit Service |
5e8d2a |
char* err=NULL;
|
|
Packit Service |
5e8d2a |
long a=0;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
a=strtol(val,&err,10);
|
|
Packit Service |
5e8d2a |
if(*err!='\0' || a>255 || a<0 || errno==ERANGE){
|
|
Packit Service |
5e8d2a |
error(0, _("Illegal verbosity level:%s\n"),val);
|
|
Packit Service |
5e8d2a |
error(10,_("Using previous value:%i\n"),conf->verbose_level);
|
|
Packit Service |
5e8d2a |
return;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
else {
|
|
Packit Service |
5e8d2a |
if(conf->verbose_level==-1){
|
|
Packit Service |
5e8d2a |
conf->verbose_level=a;
|
|
Packit Service |
5e8d2a |
}else {
|
|
Packit Service |
5e8d2a |
error(210,_("Verbosity already defined to %i\n"),conf->verbose_level);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
void do_rootprefix(char* val) {
|
|
Packit Service |
5e8d2a |
if (conf->root_prefix_length == 0) {
|
|
Packit Service |
5e8d2a |
conf->root_prefix=val;
|
|
Packit Service |
5e8d2a |
conf->root_prefix_length=strlen(conf->root_prefix);
|
|
Packit Service |
5e8d2a |
if (conf->root_prefix_length && conf->root_prefix[conf->root_prefix_length-1] == '/') {
|
|
Packit Service |
5e8d2a |
conf->root_prefix[--conf->root_prefix_length] = '\0';
|
|
Packit Service |
5e8d2a |
error(200,_("Removed trailing '/' from root prefix \n"));
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
error(200,_("Root prefix set to '%s'\n"), conf->root_prefix);
|
|
Packit Service |
5e8d2a |
} else {
|
|
Packit Service |
5e8d2a |
error(200,_("Root prefix already set to '%s'\n"), conf->root_prefix);
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
#ifdef WITH_E2FSATTRS
|
|
Packit Service |
5e8d2a |
#define easy_e2fsattrs_case(c,f) \
|
|
Packit Service |
5e8d2a |
case c: { \
|
|
Packit Service |
5e8d2a |
conf->report_ignore_e2fsattrs|=f; \
|
|
Packit Service |
5e8d2a |
break; \
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
void do_report_ignore_e2fsattrs(char* val) {
|
|
Packit Service |
5e8d2a |
conf->report_ignore_e2fsattrs = 0UL;
|
|
Packit Service |
5e8d2a |
while (*val) {
|
|
Packit Service |
5e8d2a |
switch(*val){
|
|
Packit Service |
5e8d2a |
/* source for mappings see compare_db.c */
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('s',EXT2_SECRM_FL)
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('u',EXT2_UNRM_FL)
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('S',EXT2_SYNC_FL)
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('D',EXT2_DIRSYNC_FL)
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('i',EXT2_IMMUTABLE_FL)
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('a',EXT2_APPEND_FL)
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('d',EXT2_NODUMP_FL)
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('A',EXT2_NOATIME_FL)
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('c',EXT2_COMPR_FL)
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('B',EXT2_COMPRBLK_FL)
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('Z',EXT2_DIRTY_FL)
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('X',EXT2_NOCOMPR_FL)
|
|
Packit Service |
5e8d2a |
#ifdef EXT2_ECOMPR_FL
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('E',EXT2_ECOMPR_FL)
|
|
Packit Service |
5e8d2a |
#else
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('E',EXT4_ENCRYPT_FL)
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('j',EXT3_JOURNAL_DATA_FL)
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('I',EXT2_INDEX_FL)
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('t',EXT2_NOTAIL_FL)
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('T',EXT2_TOPDIR_FL)
|
|
Packit Service |
5e8d2a |
#ifdef EXT4_EXTENTS_FL
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('e',EXT4_EXTENTS_FL)
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
#ifdef EXT4_HUGE_FILE_FL
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('h',EXT4_HUGE_FILE_FL)
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
#ifdef FS_NOCOW_FL
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('C',FS_NOCOW_FL)
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
#ifdef EXT4_INLINE_DATA_FL
|
|
Packit Service |
5e8d2a |
easy_e2fsattrs_case('N',EXT4_INLINE_DATA_FL)
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
case '0': {
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
default: {
|
|
Packit Service |
5e8d2a |
error(0,_("Ignore invalid ext2 file attribute: '%c'\n"),*val);
|
|
Packit Service |
5e8d2a |
break;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
c89282 |
val++;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
#endif
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
const char* aide_key_7=CONFHMACKEY_07;
|
|
Packit Service |
5e8d2a |
const char* db_key_7=DBHMACKEY_07;
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
void* get_conf_key(void) {
|
|
Packit Service |
5e8d2a |
void* r;
|
|
Packit Service |
5e8d2a |
char* m=(char*)malloc(strlen(aide_key_1)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_2)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_3)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_4)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_5)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_6)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_7)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_8)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_9)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_0)+1);
|
|
Packit Service |
5e8d2a |
m[0]=0;
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_0);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_1);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_2);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_3);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_4);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_5);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_6);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_7);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_8);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_9);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
r=decode_base64(m,strlen(m),NULL);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
memset(m,0,strlen(m));
|
|
Packit Service |
5e8d2a |
free(m);
|
|
Packit Service |
5e8d2a |
return r;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
size_t get_conf_key_len(void) {
|
|
Packit Service |
5e8d2a |
size_t len=0;
|
|
Packit Service |
5e8d2a |
char* m=(char*)malloc(strlen(aide_key_1)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_2)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_3)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_4)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_5)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_6)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_7)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_8)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_9)+
|
|
Packit Service |
5e8d2a |
strlen(aide_key_0)+1);
|
|
Packit Service |
5e8d2a |
m[0]=0;
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_0);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_1);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_2);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_3);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_4);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_5);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_6);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_7);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_8);
|
|
Packit Service |
5e8d2a |
strcat(m,aide_key_9);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
len=length_base64(m,strlen(m));
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
memset(m,0,strlen(m));
|
|
Packit Service |
5e8d2a |
free(m);
|
|
Packit Service |
5e8d2a |
return len;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
void* get_db_key(void) {
|
|
Packit Service |
5e8d2a |
void* r;
|
|
Packit Service |
5e8d2a |
char* m=(char*)malloc(strlen(db_key_1)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_2)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_3)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_4)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_5)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_6)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_7)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_8)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_9)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_0)+1);
|
|
Packit Service |
5e8d2a |
m[0]=0;
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_0);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_1);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_2);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_3);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_4);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_5);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_6);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_7);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_8);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_9);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
r=decode_base64(m,strlen(m),NULL);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
memset(m,0,strlen(m));
|
|
Packit Service |
5e8d2a |
free(m);
|
|
Packit Service |
5e8d2a |
return r;
|
|
Packit Service |
5e8d2a |
}
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
size_t get_db_key_len(void) {
|
|
Packit Service |
5e8d2a |
size_t len=0;
|
|
Packit Service |
5e8d2a |
char* m=(char*)malloc(strlen(db_key_1)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_2)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_3)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_4)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_5)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_6)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_7)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_8)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_9)+
|
|
Packit Service |
5e8d2a |
strlen(db_key_0)+1);
|
|
Packit Service |
5e8d2a |
m[0]=0;
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_0);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_1);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_2);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_3);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_4);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_5);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_6);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_7);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_8);
|
|
Packit Service |
5e8d2a |
strcat(m,db_key_9);
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
len=length_base64(m,strlen(m));
|
|
Packit Service |
5e8d2a |
|
|
Packit Service |
5e8d2a |
memset(m,0,strlen(m));
|
|
Packit Service |
5e8d2a |
free(m);
|
|
Packit Service |
5e8d2a |
return len;
|
|
Packit Service |
5e8d2a |
}
|