]> Zhao Yanbai Git Server - minix.git/commitdiff
various coverity-inspired fixes
authorBen Gras <ben@minix3.org>
Mon, 16 Jul 2012 11:17:11 +0000 (13:17 +0200)
committerBen Gras <ben@minix3.org>
Mon, 16 Jul 2012 12:00:56 +0000 (14:00 +0200)
. some strncpy/strcpy to strlcpy conversions
. new <minix/param.h> to avoid including other minix headers
  that have colliding definitions with library and commands code,
  causing parse warnings
. removed some dead code / assignments

26 files changed:
drivers/pci/pci.c
include/minix/Makefile
include/minix/const.h
include/minix/param.h [new file with mode: 0644]
include/minix/type.h
kernel/arch/i386/memory.c
kernel/arch/i386/pg_utils.c
kernel/arch/i386/protect.c
kernel/kernel.h
kernel/main.c
kernel/proc.c
kernel/profile.c
kernel/system/do_getinfo.c
kernel/system/do_safecopy.c
kernel/system/do_safemap.c
lib/libsys/env_parse.c
servers/ds/store.h
servers/is/glo.h
servers/pm/main.c
servers/pm/pm.h
servers/procfs/glo.h
servers/rs/glo.h
servers/vfs/glo.h
servers/vm/arch/i386/pagetable.c
servers/vm/glo.h
servers/vm/main.c

index 09e64b91c73d2c1e63c011aaa9570d7dc0b65feb..93551f31e334a3757ece22901f12cfebcdac9116 100644 (file)
@@ -12,6 +12,7 @@ Created:      Jan 2000 by Philip Homburg <philip@cs.vu.nl>
 #include <minix/com.h>
 #include <minix/ds.h>
 #include <minix/syslib.h>
+#include <minix/param.h>
 
 #include "pci.h"
 #include <machine/pci_amd.h>
index ab93226a4cfbb2e44ca806eb6e17104407627659..c876227f766020a2c7afd52a8ac1d40fbbbdda15 100644 (file)
@@ -4,7 +4,7 @@ NOOBJ=          # defined
 
 INCSDIR=       /usr/include/minix
 
-INCS+= dirent.h paths.h types.h
+INCS+= dirent.h paths.h types.h param.h
 
 .include "${NETBSDSRCDIR}/common/include/sys/Makefile.mount.inc"
 .include "${NETBSDSRCDIR}/common/include/Makefile.termios.inc"
index b52f94e94452d18818ed861d2a5ab87020f78c24..ed69a300e9e91482c65909e74dceedbcd977a306 100644 (file)
 #define FUTURE_CODE       0    /* new code to be activated + tested later */
 #define TEMP_CODE         1    /* active code to be removed later */
 
-/* Number of processes contained in the system image. */
-#define NR_BOOT_PROCS   (NR_TASKS + LAST_SPECIAL_PROC_NR + 1)
-
-/* Process name length in the PM process table, including '\0'. */
-#define PROC_NAME_LEN  16
-
 /* Miscellaneous */
 #define BYTE            0377   /* mask for 8 bits */
 #define READING            0   /* copy data to user */
diff --git a/include/minix/param.h b/include/minix/param.h
new file mode 100644 (file)
index 0000000..b4abbfc
--- /dev/null
@@ -0,0 +1,45 @@
+
+#ifndef _MINIX_PARAM_H
+#define _MINIX_PARAM_H 1
+
+#include <minix/com.h>
+#include <minix/const.h>
+
+/* Number of processes contained in the system image. */
+#define NR_BOOT_PROCS   (NR_TASKS + LAST_SPECIAL_PROC_NR + 1)
+
+/* This is used to obtain system information through SYS_GETINFO. */
+#define MAXMEMMAP 40
+typedef struct kinfo {
+        /* Straight multiboot-provided info */
+        multiboot_info_t        mbi;
+        multiboot_module_t      module_list[MULTIBOOT_MAX_MODS];
+        multiboot_memory_map_t  memmap[MAXMEMMAP]; /* free mem list */
+        phys_bytes              mem_high_phys;
+        int                     mmap_size;
+
+        /* Multiboot-derived */
+        int                     mods_with_kernel; /* no. of mods incl kernel */
+        int                     kern_mod; /* which one is kernel */
+
+        /* Minix stuff, started at bootstrap phase */
+        int                     freepde_start;  /* lowest pde unused kernel pde */
+        char                    param_buf[MULTIBOOT_PARAM_BUF_SIZE];
+
+        /* Minix stuff */
+        struct kmessages *kmess;
+        int do_serial_debug;    /* system serial output */
+        int serial_debug_baud;  /* serial baud rate */
+        int minix_panicing;     /* are we panicing? */
+        vir_bytes               user_sp; /* where does kernel want stack set */
+        vir_bytes               user_end; /* upper proc limit */
+        vir_bytes               vir_kern_start; /* kernel addrspace starts */
+        vir_bytes               bootstrap_start, bootstrap_len;
+        struct boot_image       boot_procs[NR_BOOT_PROCS];
+        int nr_procs;           /* number of user processes */
+        int nr_tasks;           /* number of kernel tasks */
+        char release[6];        /* kernel release number */
+        char version[6];        /* kernel version number */
+} kinfo_t;
+
+#endif
index 094cd50c6ba919d7dc414da9d78dd7d01343960d..c8ee62b26c33f8923a6ae031c6aa41a302a6d1df 100644 (file)
@@ -10,9 +10,6 @@
 #include <minix/types.h>
 #endif
 
-#include <minix/const.h>
-#include <minix/com.h>
-
 #include <stdint.h>
 
 /* Type definitions. */
@@ -122,6 +119,8 @@ struct mem_range
        phys_bytes mr_limit;    /* Highest memory address in range */
 };
 
+#define PROC_NAME_LEN   16
+
 /* List of boot-time processes set in kernel/table.c. */
 struct boot_image {
   int proc_nr;                         /* process number to use */
@@ -137,40 +136,6 @@ struct memory {
        phys_bytes      size;
 };
 
-/* This is used to obtain system information through SYS_GETINFO. */
-#define MAXMEMMAP 40
-typedef struct kinfo {
-       /* Straight multiboot-provided info */
-        multiboot_info_t        mbi;
-        multiboot_module_t      module_list[MULTIBOOT_MAX_MODS];
-       multiboot_memory_map_t  memmap[MAXMEMMAP]; /* free mem list */
-       phys_bytes              mem_high_phys;
-       int                     mmap_size;
-
-       /* Multiboot-derived */
-        int                     mods_with_kernel; /* no. of mods incl kernel */
-        int                     kern_mod; /* which one is kernel */
-
-       /* Minix stuff, started at bootstrap phase */
-       int                     freepde_start;  /* lowest pde unused kernel pde */
-        char                    param_buf[MULTIBOOT_PARAM_BUF_SIZE];
-
-       /* Minix stuff */
-       struct kmessages *kmess;
-       int do_serial_debug;    /* system serial output */
-       int serial_debug_baud;  /* serial baud rate */
-       int minix_panicing;     /* are we panicing? */
-        vir_bytes               user_sp; /* where does kernel want stack set */
-        vir_bytes               user_end; /* upper proc limit */
-        vir_bytes               vir_kern_start; /* kernel addrspace starts */
-       vir_bytes               bootstrap_start, bootstrap_len;
-       struct boot_image       boot_procs[NR_BOOT_PROCS];
-       int nr_procs;           /* number of user processes */
-       int nr_tasks;           /* number of kernel tasks */
-       char release[6];        /* kernel release number */
-       char version[6];        /* kernel version number */
-} kinfo_t;
-
 #define STATICINIT(v, n) \
        if(!(v)) {      \
                if(!((v) = alloc_contig(sizeof(*(v)) * (n), 0, NULL))) { \
index e876281038f21d93dc2b8398ff544d1ba9998e58..f4033c4f0c3086837ce127ff41bbfe56ea71af85 100644 (file)
@@ -746,7 +746,7 @@ void memory_init(void)
 void arch_proc_init(struct proc *pr, const u32_t ip, const u32_t sp, char *name)
 {
        arch_proc_reset(pr);
-       strcpy(pr->p_name, name);
+       strlcpy(pr->p_name, name, sizeof(pr->p_name));
 
        /* set custom state we know */
        pr->p_reg.pc = ip;
index f096369a028227d70e415e5447e5e6f37ceda273..1791a41c4fad956bef2e6141ad6e0af84f2a8ede 100644 (file)
@@ -1,15 +1,13 @@
 
 #include <minix/cpufeature.h>
 
-#include <minix/type.h>
-#include <libexec.h>
 #include <assert.h>
 #include "kernel.h"
+#include <libexec.h>
 #include "arch_proto.h"
 
 #include <string.h>
 #include <libexec.h>
-#include <minix/type.h>
 
 /* These are set/computed in kernel.lds. */
 extern char _kern_vir_base, _kern_phys_base, _kern_size;
@@ -174,11 +172,11 @@ void pg_identity(kinfo_t *cbi)
         for(i = 0; i < I386_VM_DIR_ENTRIES; i++) {
                u32_t flags = I386_VM_PRESENT | I386_VM_BIGPAGE |
                        I386_VM_USER | I386_VM_WRITE;
+                phys = i * I386_BIG_PAGE_SIZE;
                if((cbi->mem_high_phys & I386_VM_ADDR_MASK_4MB)
                        <= (phys & I386_VM_ADDR_MASK_4MB)) {
                        flags |= I386_VM_PWT | I386_VM_PCD;
                }
-                phys = i * I386_BIG_PAGE_SIZE;
                 pagedir[i] =  phys | flags;
         }
 }
index 6627cc329df8a0dd42b969f31a0ae7175ad486ff..9fcfb4c26ec624870f0d9be72c7c62e1775e569b 100644 (file)
@@ -364,7 +364,7 @@ void arch_boot_proc(struct boot_image *ip, struct proc *rp)
                execi.proc_e = ip->endpoint;
                execi.hdr = (char *) mod->mod_start; /* phys mem direct */
                execi.hdr_len = mod->mod_end - mod->mod_start;
-               strcpy(execi.progname, ip->proc_name);
+               strlcpy(execi.progname, ip->proc_name, sizeof(execi.progname));
                execi.frame_len = 0;
 
                /* callbacks for use in the kernel */
index 7a6a148d46e0032cca1dc30fba22c9de2b0eb102..48aa3106c869d8b4d706b4e97cb7ac47049683af 100644 (file)
@@ -34,6 +34,7 @@
 #include <timers.h>            /* watchdog timer management */
 #include <errno.h>             /* return codes and error numbers */
 #include <sys/param.h>
+#include <minix/param.h>
 
 /* Important kernel header files. */
 #include "config.h"            /* configuration, MUST be first */
index 7d92ce437f6f26492aca3393c5bf1466e6776949..c1448833e82511f09f79aecc7701510720d6ac15 100644 (file)
@@ -201,7 +201,8 @@ void kmain(kinfo_t *local_cbi)
                 kcalls = TSK_KC;                   /* allowed kernel calls */
             }
             /* Priviliges for the root system process. */
-            else if(isrootsysn(proc_nr)) {
+            else {
+               assert(isrootsysn(proc_nr));
                 priv(rp)->s_flags= RSYS_F;        /* privilege flags */
                 priv(rp)->s_trap_mask= SRV_T;     /* allowed traps */
                 ipc_to_m = SRV_M;                 /* allowed targets */
@@ -210,10 +211,6 @@ void kmain(kinfo_t *local_cbi)
                 rp->p_priority = SRV_Q;                  /* priority queue */
                 rp->p_quantum_size_ms = SRV_QT;   /* quantum size */
             }
-            /* Priviliges for ordinary process. */
-            else {
-               NOT_REACHABLE;
-            }
 
             /* Fill in target mask. */
             memset(&map, 0, sizeof(map));
@@ -394,10 +391,8 @@ void cstart()
   /* Record miscellaneous information for user-space servers. */
   kinfo.nr_procs = NR_PROCS;
   kinfo.nr_tasks = NR_TASKS;
-  strncpy(kinfo.release, OS_RELEASE, sizeof(kinfo.release));
-  kinfo.release[sizeof(kinfo.release)-1] = '\0';
-  strncpy(kinfo.version, OS_VERSION, sizeof(kinfo.version));
-  kinfo.version[sizeof(kinfo.version)-1] = '\0';
+  strlcpy(kinfo.release, OS_RELEASE, sizeof(kinfo.release));
+  strlcpy(kinfo.version, OS_VERSION, sizeof(kinfo.version));
 
   /* Load average data initialization. */
   kloadinfo.proc_last_slot = 0;
index 0d5330693f14d721e1cda0d705d38be30ffa65c0..98bab162e7702898c31fb6ea346355e4a217f695 100644 (file)
  */
 
 #include <minix/com.h>
-#include <minix/endpoint.h>
 #include <minix/ipcconst.h>
 #include <stddef.h>
 #include <signal.h>
-#include <minix/syslib.h>
 #include <assert.h>
 
 #include "debug.h"
@@ -47,6 +45,8 @@
 
 #include "arch_proto.h"
 
+#include <minix/syslib.h>
+
 /* Scheduling and message passing functions */
 static void idle(void);
 /**
index 29e4ea3d4ef6ae807e4b69494ec935aa630fae82..55a2808cf2ae0cc6ad0cba803d485181ea42ad1a 100644 (file)
 
 #include <minix/config.h>
 
-#include <minix/profile.h>
-#include <minix/portio.h>
 #include "kernel.h"
 #include "profile.h"
 #include "proc.h"
 
+#include <minix/profile.h>
+#include <minix/portio.h>
+
 #if SPROFILE
 
 #include <string.h>
index 5ccc6abcb3b8b9f128ab18b92ea47bc8a827084e..bf87be9c09747381c5f132450078e51c5079a2c0 100644 (file)
@@ -10,7 +10,6 @@
  */
 
 #include <string.h>
-#include <minix/endpoint.h>
 
 #include "kernel/system.h"
 
index 86a43335595c8259966f2e173a5bcd952adeef5d..65f7230f55acd04623570a0ffda9c524dc0a35be 100644 (file)
  */
 
 #include <assert.h>
-#include <minix/type.h>
-#include <minix/safecopies.h>
 
 #include "kernel/system.h"
+#include "kernel.h"
 
 #define MAX_INDIRECT_DEPTH 5   /* up to how many indirect grants to follow? */
 
index 1b59b6e5f099743d6806e036ba1cc876510edb97..12fa93dfff5c92b48166d74da9d50695ad77e873 100644 (file)
 
 #include <assert.h>
 
-#include <minix/type.h>
-#include <minix/type.h>
-#include <minix/safecopies.h>
-
 #include "kernel/system.h"
+#include "kernel.h"
+
+#include <minix/safecopies.h>
 
 #include <signal.h>
 
@@ -119,9 +118,8 @@ int map_invoke_vm(struct proc * caller,
                        endpoint_t end_s, vir_bytes off_s,
                        size_t size, int flag)
 {
-       struct proc *src, *dst;
+       struct proc *dst;
 
-       src = endpoint_lookup(end_s);
        dst = endpoint_lookup(end_d);
 
        /* Make sure the linear addresses are both page aligned. */
index 8e93252cd5ec32950b89f20b93e969f71682fcb4..e466d25755f3a4f36bfaeda5113f1915e5e5d365 100644 (file)
@@ -2,6 +2,7 @@
 #include <stdlib.h>
 #include <env.h>
 #include <string.h>
+#include <minix/param.h>
 
 
 /*=========================================================================*
@@ -98,9 +99,9 @@ struct memory *mem_chunks;    /* where to store the memory bits */
 int maxchunks;                 /* how many were found */
 {
   static kinfo_t kinfo;
-  int mm;
+  int mm, r;
 
-  sys_getkinfo(&kinfo);
+  if((r=sys_getkinfo(&kinfo)) != OK) return r;
 
   /* Initialize everything to zero. */
   memset(mem_chunks, 0, maxchunks*sizeof(*mem_chunks));
index ccf7edc82f53493ff47c8dbc3bbf7b2f1a2206ce..43e6ab12e414fa37244facbf40b3a121f877560a 100644 (file)
@@ -6,6 +6,7 @@
 #include <minix/config.h>
 #include <minix/ds.h>
 #include <minix/bitmap.h>
+#include <minix/param.h>
 #include <regex.h>
 
 #define NR_DS_KEYS     (2*NR_SYS_PROCS)        /* number of entries */
index ad5b06d709a64647fa7a830466a52086649a1cb8..fe9eed0c848c54de4bd8cca65ee2338c36401cc4 100644 (file)
@@ -1,5 +1,7 @@
 /* Global variables. */
 
+#include <minix/param.h>
+
 /* Parameters needed to keep diagnostics at IS. */
 #define DIAG_BUF_SIZE 1024
 extern char diag_buf[DIAG_BUF_SIZE];   /* buffer for messages */
index 72750f4b8914a25077f33c2b10a4e6bf560b84e9..2fe9fcd260fb02bf6ba882fba778cce064e85bc5 100644 (file)
@@ -241,7 +241,7 @@ static int sef_cb_init_fresh(int UNUSED(type), sef_init_info_t *UNUSED(info))
 
                /* Set process details found in the image table. */
                rmp = &mproc[ip->proc_nr];      
-               strncpy(rmp->mp_name, ip->proc_name, PROC_NAME_LEN); 
+               strlcpy(rmp->mp_name, ip->proc_name, PROC_NAME_LEN); 
                (void) sigemptyset(&rmp->mp_ignore);    
                (void) sigemptyset(&rmp->mp_sigmask);
                (void) sigemptyset(&rmp->mp_catch);
index 5372bf7730068cc77179b07765288dc3abb1bccf..1aa319f6c9c47b12c2e446e182c3adabff654fc1 100644 (file)
@@ -16,6 +16,7 @@
 #include <minix/syslib.h>
 #include <minix/sysutil.h>
 #include <minix/timers.h>
+#include <minix/param.h>
 
 #include <limits.h>
 #include <errno.h>
index c70890a67c52e71f4430b2d37a180ea1f99510fa..03d573d71f3dec279a0c7f1aaf0effe6f2bc3256 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef _PROCFS_GLO_H
 #define _PROCFS_GLO_H
 
+#include <minix/param.h>
+
 /* pid.c */
 extern struct file pid_files[];
 
index d34a4b7ebb3a342d64a7fa6612be7b06e59fb72a..938e55f97a1c8366abb2671ab87a1b6ac49576d5 100644 (file)
@@ -8,6 +8,8 @@
 #define EXTERN
 #endif
 
+#include <minix/param.h>
+
 /* The boot image priv table. This table has entries for all system
  * services in the boot image.
  */
index dd1b6add1a1fc00bae55959c570de8e066216828..8ad298abcdfc546fd2888310fa1203f6a88f512f 100644 (file)
@@ -7,6 +7,8 @@
 #define EXTERN
 #endif
 
+#include <minix/param.h>
+
 /* File System global variables */
 EXTERN struct fproc *fp;       /* pointer to caller's fproc struct */
 EXTERN int susp_count;         /* number of procs suspended on pipe */
index 1fc4e2fc8487551b9c0df90a3e665fde274849db..00fc0e50aebd68c27f56e840a52a81714a47ce56 100644 (file)
@@ -522,7 +522,7 @@ int pt_map_in_range(struct vmproc *src_vmp, struct vmproc *dst_vmp,
        end = end ? end : VM_DATATOP;
        assert(start % I386_PAGE_SIZE == 0);
        assert(end % I386_PAGE_SIZE == 0);
-       assert(I386_VM_PDE(start) >= 0 && start <= end);
+       assert(start <= end);
        assert(I386_VM_PDE(end) < I386_VM_DIR_ENTRIES);
 
 #if LU_DEBUG
index e0ba5366f4cc6179afd634e897e65148f1124936..2d7998bdddd4ac098e48029dd85bffb8096dc6ff 100644 (file)
@@ -1,6 +1,7 @@
 
 #include <minix/sys_config.h>
 #include <minix/type.h>
+#include <minix/param.h>
 #include <sys/stat.h>
 #include <a.out.h>
 #include <tools.h>
index 4023ea4d612d5216e62992721643d52bae4bd267..d6692f3b179f7e8e723cc50ca00b929aeb0a1acf 100644 (file)
@@ -276,7 +276,7 @@ void exec_bootproc(struct vmproc *vmp, struct boot_image *ip)
         execi->proc_e = vmp->vm_endpoint;
         execi->hdr = hdr;
         execi->hdr_len = sizeof(hdr);
-        strcpy(execi->progname, ip->proc_name);
+        strlcpy(execi->progname, ip->proc_name, sizeof(execi->progname));
         execi->frame_len = 0;
        execi->opaque = &vmexeci;
 
@@ -370,9 +370,10 @@ void init_vm(void)
        }
 
        /* Set up table of calls. */
-#define CALLMAP(code, func) { int i;                         \
-       if((i=CALLNUMBER(code)) < 0) { panic(#code " invalid: %d", (code)); } \
-       if(i >= NR_VM_CALLS) { panic(#code " invalid: %d", (code)); } \
+#define CALLMAP(code, func) { int i;                 \
+       i=CALLNUMBER(code);                             \
+       assert(i >= 0);                                 \
+       assert(i < NR_VM_CALLS);                        \
        vm_calls[i].vmc_func = (func);                                \
        vm_calls[i].vmc_name = #code;                                 \
 }