From 50cfdcb5a745984ff42ee31efd01af46d7c00720 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Mon, 1 Sep 2008 09:34:16 -0400 Subject: [PATCH] Check argument of ef_cadef(), ef_nelem(), ef_flags(), ef_mtime() This removes any need for calling ef_check() outside of file.c. Remove its only occurence, from symval(), and give it internal linkage. --- include/file.h | 1 - src/lib/common/file.c | 11 ++++++++++- src/lib/common/xundump.c | 2 -- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/include/file.h b/include/file.h index 55aa672d9..3d8587bd5 100644 --- a/include/file.h +++ b/include/file.h @@ -197,7 +197,6 @@ extern void *ef_ptr(int, int); extern char *ef_nameof(int); extern time_t ef_mtime(int); extern int ef_open(int, int, int); -extern int ef_check(int); extern int ef_close(int); extern int ef_flush(int); extern void ef_blank(int, int, void *); diff --git a/src/lib/common/file.c b/src/lib/common/file.c index c3b082d72..81b0b97d8 100644 --- a/src/lib/common/file.c +++ b/src/lib/common/file.c @@ -53,6 +53,7 @@ static int do_write(struct empfile *, void *, int, int); static unsigned get_seqno(struct empfile *, int); static void new_seqno(struct empfile *, void *); static void do_blank(struct empfile *, void *, int, int); +static int ef_check(int); /* * Open the file-backed table TYPE (EF_SECTOR, ...). @@ -691,24 +692,32 @@ ef_truncate(int type, int count) struct castr * ef_cadef(int type) { + if (ef_check(type) < 0) + return NULL; return empfile[type].cadef; } int ef_nelem(int type) { + if (ef_check(type) < 0) + return 0; return empfile[type].fids; } int ef_flags(int type) { + if (ef_check(type) < 0) + return 0; return empfile[type].flags; } time_t ef_mtime(int type) { + if (ef_check(type) < 0) + return 0; if (empfile[type].fd <= 0) return 0; return fdate(empfile[type].fd); @@ -765,7 +774,7 @@ ef_nameof(int type) return empfile[type].name; } -int +static int ef_check(int type) { if (CANT_HAPPEN((unsigned)type >= EF_MAX)) diff --git a/src/lib/common/xundump.c b/src/lib/common/xundump.c index abef9c27e..0a811974d 100644 --- a/src/lib/common/xundump.c +++ b/src/lib/common/xundump.c @@ -671,8 +671,6 @@ symval(struct castr *ca, int i) { int type = ca->ca_table; - if (ef_check(type) < 0) - return -1; if (ef_cadef(type) == symbol_ca) /* symbol table, value is in the table */ return ((struct symbol *)ef_ptr(type, i))->value; -- 2.43.0