diff -r c4bcba8023a9 -r bae5adee8c8c librazor/razor.c --- a/librazor/razor.c Sat Aug 23 16:28:31 2014 +0100 +++ b/librazor/razor.c Fri Oct 17 09:57:19 2014 +0100 @@ -147,11 +147,12 @@ struct razor_mapped_file *file; const char *pool, *reason; struct array *array; - int i, j; + int i, j, code; file = zalloc(sizeof *file); if (file == NULL) { - razor_set_error(error, NULL, "Not enough memory"); + razor_set_error(error, RAZOR_POSIX_ERROR, ENOMEM, NULL, + "Not enough memory"); return -1; } @@ -163,18 +164,22 @@ return -1; } - if (file->size < sizeof *file->header) + if (file->size < sizeof *file->header) { + code = RAZOR_GENERAL_ERROR_DATABASE_CORRUPTED; reason = "Premature EOF"; - else if (file->header->magic != RAZOR_MAGIC) + } else if (file->header->magic != RAZOR_MAGIC) { + code = RAZOR_GENERAL_ERROR_DATABASE_CORRUPTED; reason = "Bad magic number"; - else if (file->header->version < RAZOR_HEADER_VERSION_MIN || - file->header->version > RAZOR_HEADER_VERSION) + } else if (file->header->version < RAZOR_HEADER_VERSION_MIN || + file->header->version > RAZOR_HEADER_VERSION) { + code = RAZOR_GENERAL_ERROR_DATABASE_INCOMPATIBLE; reason = "Incompatible file version"; - else + } else reason = NULL; if (reason) { - razor_set_error(error, filename, reason); + razor_set_error(error, RAZOR_GENERAL_ERROR, code, filename, + reason); razor_file_free_contents(file->header, file->size); free(file); return -1; @@ -222,7 +227,8 @@ set = zalloc(sizeof *set); if (!set) { - razor_set_error(error, NULL, "Not enough memory"); + razor_set_error(error, RAZOR_POSIX_ERROR, ENOMEM, NULL, + "Not enough memory"); return NULL; }