Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset f5da671 in mainline


Ignore:
Timestamp:
2012-08-17T10:50:54Z (9 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master
Children:
f08ab0f
Parents:
3cf862f
Message:

Check for errors in logger

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/logger/logs.c

    r3cf862f rf5da671  
    5353}
    5454
    55 static logger_dest_t *create_dest(const char *name)
     55static int create_dest(const char *name, logger_dest_t **dest)
    5656{
    5757        logger_dest_t *result = malloc(sizeof(logger_dest_t));
     58        if (result == NULL)
     59                return ENOMEM;
    5860        char *logfilename;
    59         asprintf(&logfilename, "/log/%s", name);
     61        int rc = asprintf(&logfilename, "/log/%s", name);
     62        if (rc < 0) {
     63                free(result);
     64                return ENOMEM;
     65        }
    6066        result->logfile = fopen(logfilename, "a");
    61         return result;
     67        free(logfilename);
     68        if (result->logfile == NULL) {
     69                free(result);
     70                return ENOMEM;
     71        }
     72        *dest = result;
     73        return EOK;
    6274}
    6375
     
    7385                goto leave;
    7486
    75         result = malloc(sizeof(logger_log_t));
     87        result = calloc(1, sizeof(logger_log_t));
    7688        if (result == NULL)
    7789                goto leave;
    78 
    7990
    8091        result->logged_level = LOG_LEVEL_USE_DEFAULT;
     
    8293        if (parent == NULL) {
    8394                result->full_name = str_dup(name);
    84                 result->dest = create_dest(name);
     95                int rc = create_dest(name, &result->dest);
     96                if (rc != EOK)
     97                        goto error_result_allocated;
    8598        } else {
    86                 asprintf(&result->full_name, "%s/%s", parent->full_name, name);
     99                int rc = asprintf(&result->full_name, "%s/%s",
     100                    parent->full_name, name);
     101                if (rc < 0)
     102                        goto error_result_allocated;
    87103                result->dest = parent->dest;
    88104        }
     
    95111
    96112        list_append(&result->link, &log_list);
     113
     114
    97115leave:
    98116        fibril_mutex_unlock(&log_list_guard);
    99117
    100118        return result;
     119
     120error_result_allocated:
     121        free(result->name);
     122        free(result->full_name);
     123        free(result);
     124        return NULL;
    101125}
    102126
Note: See TracChangeset for help on using the changeset viewer.