From: "Luis R. Rodriguez" <mcgrof@xxxxxxxxxxxxxxxx> Just do this explicitly. Signed-off-by: Luis R. Rodriguez <mcgrof at do-not-panic.com> --- reglib.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/reglib.c b/reglib.c index bb6f23f..cbe9676 100644 --- a/reglib.c +++ b/reglib.c @@ -307,33 +307,37 @@ reglib_get_rd_alpha2(const char *alpha2, const char *file) if (fd < 0) return NULL; - if (fstat(fd, &stat)) + if (fstat(fd, &stat)) { + close(fd); return NULL; + } dblen = stat.st_size; db = mmap(NULL, dblen, PROT_READ, MAP_PRIVATE, fd, 0); - if (db == MAP_FAILED) + if (db == MAP_FAILED) { + close(fd); return NULL; + } header = crda_get_file_ptr(db, dblen, sizeof(*header), 0); if (ntohl(header->magic) != REGDB_MAGIC) - return NULL; + goto out; if (ntohl(header->version) != REGDB_VERSION) - return NULL; + goto out; siglen = ntohl(header->signature_length); /* adjust dblen so later sanity checks don't run into the signature */ dblen -= siglen; if (dblen <= (int)sizeof(*header)) - return NULL; + goto out; /* verify signature */ if (!crda_verify_db_signature(db, dblen, siglen)) - return NULL; + goto out; num_countries = ntohl(header->reg_country_num); countries = crda_get_file_ptr(db, dblen, -- 1.7.10.4