Changeset 574


Ignore:
Timestamp:
10/22/11 14:56:06 (2 years ago)
Author:
sgrubb
Message:
  • Report server issues to remote client
  • Update ausearch parsing
Location:
branches/1.8
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • branches/1.8/ChangeLog

    r487 r574  
    1616- In auparse, add ability to interpret session and capabilities 
    1717- Add ability for audispd syslog plugin to choose facility local0-7 
     18- Report server issues to remote client 
     19- Update ausearch parsing 
    1820 
    19211.7.18 
  • branches/1.8/src/auditd-config.c

    r430 r574  
    11/* auditd-config.c --  
    2  * Copyright 2004-2009 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2004-2010 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    687687        int i; 
    688688 
     689        audit_msg(LOG_DEBUG, "name_format_parser called with: %s", nv->value); 
    689690        for (i=0; node_name_formats[i].name != NULL; i++) { 
    690691                if (strcasecmp(nv->value, node_name_formats[i].name) == 0) { 
     
    700701                struct daemon_conf *config) 
    701702{ 
     703        audit_msg(LOG_DEBUG, "name_parser called with: %s", nv->value); 
    702704        if (nv->value == NULL) 
    703705                config->node_name = NULL; 
     
    16081610                                        audit_msg(LOG_ERR, 
    16091611                                        "Cannot resolve hostname %s (%s)", 
    1610                                         tmp_name, gai_strerror(rc2)); 
     1612                                        tmp_name, gai_strerror(rc)); 
    16111613                                        rc = -1; 
    16121614                                        break; 
     
    16261628                                struct addrinfo hints; 
    16271629 
     1630                                audit_msg(LOG_DEBUG, 
     1631                                        "Resolving numeric address for %s", 
     1632                                        tmp_name); 
    16281633                                memset(&hints, 0, sizeof(hints)); 
    16291634                                hints.ai_flags = AI_ADDRCONFIG | AI_PASSIVE; 
     
    16341639                                        audit_msg(LOG_ERR, 
    16351640                                        "Cannot resolve hostname %s (%s)", 
    1636                                         tmp_name, gai_strerror(rc)); 
     1641                                        tmp_name, gai_strerror(rc2)); 
    16371642                                        rc = -1; 
    16381643                                        break; 
     
    16481653                        break; 
    16491654        } 
     1655        if (rc == 0 && config->node_name) 
     1656                audit_msg(LOG_DEBUG, "Resolved node name: %s", 
     1657                                config->node_name); 
    16501658        return rc; 
    16511659} 
  • branches/1.8/src/auditd-event.c

    r371 r574  
    11/* auditd-event.c --  
    2  * Copyright 2004-08 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2004-08,2011 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    152152void enqueue_event(struct auditd_reply_list *rep) 
    153153{ 
    154         char *buf; 
     154        char *buf = NULL; 
    155155        int len; 
    156156 
     
    180180                } 
    181181 
    182                 len = strlen (buf); 
    183                 if (len < MAX_AUDIT_MESSAGE_LENGTH - 1) { 
    184                         memcpy (rep->reply.msg.data, buf, len+1); 
    185                 } 
    186                 else 
    187                 { 
    188                         /* FIXME: is truncation the right thing to do?  */ 
    189                         memcpy (rep->reply.msg.data, buf, MAX_AUDIT_MESSAGE_LENGTH-1); 
    190                         rep->reply.msg.data[MAX_AUDIT_MESSAGE_LENGTH-1] = 0; 
     182                if (buf) { 
     183                        len = strlen(buf); 
     184                        if (len < MAX_AUDIT_MESSAGE_LENGTH - 1) 
     185                                memcpy(rep->reply.msg.data, buf, len+1); 
     186                        else { 
     187                                // FIXME: is truncation the right thing to do? 
     188                                memcpy(rep->reply.msg.data, buf, 
     189                                                MAX_AUDIT_MESSAGE_LENGTH-1); 
     190                                rep->reply.msg.data[MAX_AUDIT_MESSAGE_LENGTH-1] = 0; 
     191                        } 
    191192                } 
    192193        } 
     
    11651166                        // Likely errors: ENOMEM, ENOSPC 
    11661167                        do_disk_error_action("reconfig", data->config); 
    1167                 } else 
     1168                } else { 
    11681169                        logging_suspended = 0; 
    1169                 check_log_file_size(data->log_fd, data); 
     1170                        check_log_file_size(data->log_fd, data); 
     1171                } 
    11701172        } 
    11711173 
  • branches/1.8/src/auditd-listen.c

    r371 r574  
    11/* auditd-listen.c --  
    2  * Copyright 2008,2009 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2008,2009,2011 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    196196        if (len > MAX_AUDIT_MESSAGE_LENGTH) { 
    197197                audit_msg(LOG_ERR, 
    198                         "GSS-API error: event length exceeds MAX_AUDIT_LENGTH"); 
     198                        "GSS-API error: event length excedes MAX_AUDIT_LENGTH"); 
    199199                return -1; 
    200200        } 
     
    287287 
    288288#define KCHECK(x,f) if (x) { \ 
    289                 audit_msg (LOG_ERR, "krb5 error: %s in %s\n", krb5_get_error_message (kcontext, x), f); \ 
     289                const char *kstr = krb5_get_error_message(kcontext, x); \ 
     290                audit_msg(LOG_ERR, "krb5 error: %s in %s\n", kstr, f); \ 
     291                krb5_free_error_message(kcontext, kstr); \ 
    290292                return -1; } 
    291293 
     
    861863 
    862864        listen_socket = socket (AF_INET, SOCK_STREAM, 0); 
    863         if (listen_socket == 0) { 
     865        if (listen_socket < 0) { 
    864866                audit_msg(LOG_ERR, "Cannot create tcp listener socket"); 
    865867                return 1; 
  • branches/1.8/src/aureport-options.h

    r205 r574  
    3030 
    3131/* Global variables that describe what search is to be performed */ 
    32 extern int event_type; 
    3332extern const char *event_context; 
    3433 
  • branches/1.8/src/ausearch-options.c

    r442 r574  
    11/* ausearch-options.c - parse commandline options and configure ausearch 
    2  * Copyright 2005-08 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2005-08,2010-11 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    3232#include "ausearch-options.h" 
    3333#include "ausearch-time.h" 
     34#include "ausearch-int.h" 
    3435#include "libaudit.h" 
    3536 
     
    6263const char *event_object = NULL; 
    6364report_t report_format = RPT_DEFAULT; 
     65ilist *event_type; 
    6466 
    6567const slist *event_node_list = NULL; 
  • branches/1.8/src/ausearch-options.h

    r195 r574  
    11/* ausearch-options.h --  
    2  * Copyright 2005,2008 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2005,2008,2010 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    2727#include <time.h> 
    2828#include <sys/types.h> 
     29#include "ausearch-common.h" 
    2930#include "ausearch-int.h" 
    30 #include "ausearch-common.h" 
    3131 
    3232/* Global variables that describe what search is to be performed */ 
    33 extern ilist *event_type; 
    3433extern const char *event_key; 
    3534extern const char *event_subject; 
     
    4039extern pid_t event_ppid; 
    4140extern int event_session_id; 
     41extern ilist *event_type; 
    4242 
    4343/* Data type to govern output format */ 
  • branches/1.8/src/ausearch-parse.c

    r442 r574  
    779779                        str += 9; 
    780780                        term = strchr(str, ','); 
    781                         if (term == NULL) 
    782                                 return 15; 
     781                        if (term == NULL) { 
     782                                term = strchr(str, ' '); 
     783                                if (term == NULL) 
     784                                        return 15; 
     785                        } 
     786                        saved = *term; 
    783787                        *term = 0; 
    784788                        s->hostname = strdup(str); 
    785                         *term = ','; 
     789                        *term = saved; 
    786790 
    787791                        // Lets see if there is something more 
     
    793797                                        str += 5; 
    794798                                        term = strchr(str, ','); 
    795                                         if (term == NULL) 
    796                                                 return 16; 
     799                                        if (term == NULL) { 
     800                                                term = strchr(str, ' '); 
     801                                                if (term == NULL) 
     802                                                        return 16; 
     803                                        } 
     804                                        saved = *term; 
    797805                                        *term = 0; 
    798806                                        free(s->hostname); 
    799807                                        s->hostname = strdup(str); 
    800                                         *term = ','; 
     808                                        *term = saved; 
    801809                                } 
    802810                        } 
     
    957965        // ses 
    958966        if (event_session_id != -2 ) { 
     967                if (term == NULL) 
     968                        term = n->message; 
    959969                str = strstr(term, "new ses="); 
    960970                if (str) { 
     
    14491459                        ptr = str + 4; 
    14501460                        term = strchr(ptr, ' '); 
    1451                         if (term == NULL) 
    1452                                 return 3; 
    1453                         *term = 0; 
     1461                        if (term) 
     1462                                *term = 0; 
    14541463                        errno = 0; 
    14551464                        s->session_id = strtoul(ptr, NULL, 10); 
    14561465                        if (errno) 
    1457                                 return 4; 
    1458                         *term = ' '; 
     1466                                return 3; 
     1467                        if (term) 
     1468                                *term = ' '; 
    14591469                } 
    14601470        } 
     
    14801490                                        term = str; 
    14811491                        } else 
    1482                                 return 5; 
     1492                                return 4; 
    14831493                } 
    14841494        } 
     
    14911501                                s->key = malloc(sizeof(slist)); 
    14921502                                if (s->key == NULL) 
    1493                                         return 6; 
     1503                                        return 5; 
    14941504                                slist_create(s->key); 
    14951505                        } 
     
    15101520                                        *term = '"'; 
    15111521                                } else 
    1512                                         return 7; 
     1522                                        return 6; 
    15131523                        } else { 
    15141524                                if (s->key) { 
     
    15501560                        s->success = strtoul(ptr, NULL, 10); 
    15511561                        if (errno) 
    1552                                 return 8; 
     1562                                return 7; 
    15531563                        if (term) 
    15541564                                *term = ' '; 
  • branches/1.8/src/ausearch-report.c

    r335 r574  
    11/* 
    22* ausearch-report.c - Format and output events 
    3 * Copyright (c) 2005-08 Red Hat Inc., Durham, North Carolina. 
     3* Copyright (c) 2005-09 Red Hat Inc., Durham, North Carolina. 
    44* All Rights Reserved.  
    55* 
     
    5252enum { T_UID, T_GID, T_SYSCALL, T_ARCH, T_EXIT, T_ESCAPED, T_PERM, T_MODE,  
    5353T_SOCKADDR, T_FLAGS, T_PROMISC, T_CAPABILITY, T_SIGNAL, T_KEY, T_LIST, 
    54 T_TTY_DATA }; 
     54T_TTY_DATA, T_SESSION }; 
    5555 
    5656/* Function in ausearch-parse for unescaping filenames */ 
     
    357357        {T_SIGNAL, "sig"}, 
    358358        {T_LIST, "list"}, 
     359        {T_SESSION, "ses"}, 
    359360}; 
    360361#define TYPE_NAMES (sizeof(typetab)/sizeof(typetab[0])) 
     
    826827        {29, "audit_write"}, 
    827828        {30, "audit_control"}, 
     829        {31, "setfcap"}, 
     830        {32, "mac_overide"}, 
     831        {33, "mac_admin"}, 
    828832}; 
    829833#define CAP_NAMES (sizeof(captab)/sizeof(captab[0])) 
     
    907911} 
    908912 
     913static void print_session(char *val) 
     914{ 
     915        if (strcmp(val, "4294967295") == 0) 
     916                printf("unset "); 
     917        else 
     918                printf("%s ", val); 
     919} 
     920 
    909921static void interpret(char *name, char *val, int comma, int rtype) 
    910922{ 
     
    984996                        print_tty_data(val); 
    985997                        break; 
     998                case T_SESSION: 
     999                        print_session(val); 
     1000                        break; 
    9861001                default: 
    9871002                        printf("%s%c", val, comma ? ',' : ' '); 
  • branches/1.8/src/ausearch-time.c

    r287 r574  
    11/* ausearch-time.c - time handling utility functions 
    2  * Copyright 2006-08 Red Hat Inc., Durham, North Carolina. 
     2 * Copyright 2006-08,2011 Red Hat Inc., Durham, North Carolina. 
    33 * All Rights Reserved. 
    44 * 
     
    127127{ 
    128128        time_t t = time(NULL); 
    129         struct tm *tv = localtime(&t); 
     129        struct tm *tv; 
    130130        d->tm_sec = 0;          /* seconds */ 
    131131        d->tm_min = 0;          /* minutes */ 
Note: See TracChangeset for help on using the changeset viewer.