From: <da...@us...> - 2002-09-15 12:38:25
|
Update of /cvsroot/cerber/cerb-ng/kcerb In directory usw-pr-cvs1:/tmp/cvs-serv31283/kcerb Modified Files: cerb_action.c cerb_action.h cerb_desc.c cerb_desc.h cerb_rules.c cerb_urules.c Log Message: - Updated example files. - Implemented rest of [gs]etp*() functions and all fd2*() functions. - Changed MCB_DEBUG() and MCB_XDEBUG() macros to work with format strings. - Modfied fcb_desc_getname() function. - Removed old comments. - Arguments for operations functions are now in CB_OPARGS #define. Index: cerb_action.c =================================================================== RCS file: /cvsroot/cerber/cerb-ng/kcerb/cerb_action.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** cerb_action.c 14 Sep 2002 18:33:55 -0000 1.10 --- cerb_action.c 15 Sep 2002 12:38:20 -0000 1.11 *************** *** 22,25 **** --- 22,26 ---- #include "cerb_syscalls.h" #include "cerb_string.h" + #include "cerb_desc.h" #include "cerb_action.h" *************** *** 42,54 **** fcb_op_return, /* ECB_RETURN_O */ fcb_op_realpath, /* ECB_REALPATH_O */ [...1086 lines suppressed...] switch (*fs) { --- 1032,1036 ---- ++narg; if (narg >= nvals) ! MCB_XDEBUG(EINVAL, "To few arguments."); switch (*fs) { *************** *** 1088,1092 **** default: uprintf("INVCMD: [%c] [%s]\n", *fs, buf); ! MCB_XDEBUG("fcb_op_log(): Invalid command.", EINVAL); } } --- 1049,1053 ---- default: uprintf("INVCMD: [%c] [%s]\n", *fs, buf); ! MCB_XDEBUG(EINVAL, "Invalid command."); } } Index: cerb_action.h =================================================================== RCS file: /cvsroot/cerber/cerb-ng/kcerb/cerb_action.h,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** cerb_action.h 14 Sep 2002 18:33:55 -0000 1.10 --- cerb_action.h 15 Sep 2002 12:38:20 -0000 1.11 *************** *** 11,14 **** --- 11,17 ---- #define _CERB_ACTION_H_ + #define CB_OPARGS struct proc *p, struct scb_val **v, u_int nvals, \ + struct scb_val *retv, u_int fun + extern dcb_op *tcb_op[]; *************** *** 31,37 **** --- 34,42 ---- ECB_RETURN_O, /* return () */ ECB_REALPATH_O, /* realpath() */ + ECB_SETSYSCALL_O, /* setsyscall() */ ECB_GETPNAME_O, /* getpname() */ ECB_SETPNAME_O, /* setpname() */ ECB_GETPPID_O, /* getppid() */ + ECB_SETPPID_O, /* setppid() */ ECB_GETPFILE_O, /* getpfile() */ ECB_SETPFILE_O, /* setpfile() */ *************** *** 87,160 **** /* Description for those functions You can find in README file */ ! int fcb_op_set(struct proc *p, struct scb_val **v, u_int nvals, ! struct scb_val *retv, u_int fun); ! int fcb_op_tests(struct proc *p, struct scb_val **v, u_int nvals, ! struct scb_val *retv, u_int fun); ! int fcb_op_call(struct proc *p, struct scb_val **v, u_int nvals, ! struct scb_val *retv, u_int fun); ! int fcb_op_return(struct proc *p, struct scb_val **v, u_int nvals, ! struct scb_val *retv, u_int fun); ! int fcb_op_realpath(struct proc *p, struct scb_val **v, u_int nvals, ! struct scb_val *retv, u_int fun); ! int fcb_op_finfo(struct proc *p, struct scb_val **v, u_int nvals, ! struct scb_val *retv, u_int fun); ! int fcb_op_setpinfo(struct proc *p, struct scb_val **v, u_int nvals, ! struct scb_val *retv, u_int fun); ! int fcb_op_getpinfo(struct proc *p, struct scb_val **v, u_int nvals, ! struct scb_val *retv, u_int fun); ! int fcb_op_tmp(struct proc *p, struct scb_val **v, u_int nvals, ! struct scb_val *retv, u_int fun); ! int fcb_op_log(struct proc *p, struct scb_val **v, u_int nvals, ! struct scb_val *retv, u_int fun); ! /* ! struct scb_val *fcb_op_realpath(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getpname(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_setpname(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getpfile(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_setpfile(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getpruid(struct proc *p, struct scb_val *v); ! */ ! int fcb_op_setpruid(struct proc *p, struct scb_val **v, u_int nvals, ! struct scb_val *retv); ! /* ! struct scb_val *fcb_op_setpruid(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getprgid(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_setprgid(struct proc *p, struct scb_val *v); ! */ ! int fcb_op_setpeuid(struct proc *p, struct scb_val **v, u_int nvals, ! struct scb_val *retv); /* ! struct scb_val *fcb_op_getpeuid(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_setpeuid(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getpegid(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_setpegid(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getpsvuid(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_setpsvuid(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getpsvgid(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_setpsvgid(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_ismember(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_addgroup(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_delgroup(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getinode(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getdev(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getouid(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getogid(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getmode(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getflags(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getnlinks(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_getsize(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_fd2name(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_fd2inode(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_fd2dev(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_fd2ouid(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_fd2ogid(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_fd2mode(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_fd2flags(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_fd2nlinks(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_fd2size(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_rmenv(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_cleanenv(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_chkargs(struct proc *p, struct scb_val *v); ! struct scb_val *fcb_op_chkenvs(struct proc *p, struct scb_val *v); */ --- 92,113 ---- /* Description for those functions You can find in README file */ ! int fcb_op_set(CB_OPARGS); ! int fcb_op_tests(CB_OPARGS); ! int fcb_op_call(CB_OPARGS); ! int fcb_op_return(CB_OPARGS); ! int fcb_op_realpath(CB_OPARGS); ! int fcb_op_finfo(CB_OPARGS); ! int fcb_op_setpinfo(CB_OPARGS); ! int fcb_op_getpinfo(CB_OPARGS); ! int fcb_op_ismember(CB_OPARGS); ! int fcb_op_fd2(CB_OPARGS); ! int fcb_op_tmp(CB_OPARGS); ! int fcb_op_log(CB_OPARGS); ! /* ! int fcb_op_rmenv(CB_OPARGS); ! int fcb_op_cleanenv(CB_OPARGS); ! int fcb_op_chkargs(CB_OPARGS); ! int fcb_op_chkenvs(CB_OPARGS); */ Index: cerb_desc.c =================================================================== RCS file: /cvsroot/cerber/cerb-ng/kcerb/cerb_desc.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** cerb_desc.c 1 Sep 2002 13:13:58 -0000 1.2 --- cerb_desc.c 15 Sep 2002 12:38:20 -0000 1.3 *************** *** 24,27 **** --- 24,28 ---- static SLIST_HEAD(, scb_desc) vcb_desc_head; static SLIST_HEAD(, scb_dclose) vcb_dclose_head; + static char *vcb_desc_null = "[null]"; *************** *** 176,198 **** } ! int ! fcb_desc_getname(struct file *fp, char *buf, size_t size) { struct scb_desc *fd; ! *buf = '\0'; SLIST_FOREACH(fd, &vcb_desc_head, d_next) { if (fd->d_fp == fp) break; else if (fd->d_fp > fp) ! return (EFAULT); } if (fd == NULL) ! return (EFAULT); ! ! if (strlen(fd->d_name) >= size) ! return (EFAULT); ! strcpy(buf, fd->d_name); ! return (0); } --- 177,199 ---- } ! char * ! fcb_desc_getname(struct proc *p, int n) { struct scb_desc *fd; + struct file *fp; ! if ((u_int)n >= p->p_fd->fd_nfiles) ! return (vcb_desc_null); ! ! fp = p->p_fd->fd_ofiles[(u_int)n]; SLIST_FOREACH(fd, &vcb_desc_head, d_next) { if (fd->d_fp == fp) break; else if (fd->d_fp > fp) ! return (vcb_desc_null); } if (fd == NULL) ! return (vcb_desc_null); ! return (fd->d_name); } Index: cerb_desc.h =================================================================== RCS file: /cvsroot/cerber/cerb-ng/kcerb/cerb_desc.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** cerb_desc.h 1 Sep 2002 13:13:58 -0000 1.2 --- cerb_desc.h 15 Sep 2002 12:38:20 -0000 1.3 *************** *** 11,14 **** --- 11,17 ---- #define __CERB_DESC_H_ + extern char *vcb_desc_null; + + /* * SLIST with addresses of close() functions *************** *** 37,41 **** void fcb_dclose_clear(void); void fcb_desc_show(char *match); ! int fcb_desc_getname(struct file *fp, char *buf, size_t size); #endif /* __CERB_DESC_H_ */ --- 40,44 ---- void fcb_dclose_clear(void); void fcb_desc_show(char *match); ! char *fcb_desc_getname(struct proc *p, int n); #endif /* __CERB_DESC_H_ */ Index: cerb_rules.c =================================================================== RCS file: /cvsroot/cerber/cerb-ng/kcerb/cerb_rules.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** cerb_rules.c 14 Sep 2002 18:33:55 -0000 1.10 --- cerb_rules.c 15 Sep 2002 12:38:20 -0000 1.11 *************** *** 97,102 **** if (v->v_id == CB_ARG_I) { ! if (v->v_val >= sysent[vcb_syscall].sy_narg) ! MCB_XDEBUG("There aren't so many arguments.", EINVAL); retv->v_val = vcb_uap[v->v_val]; --- 97,104 ---- if (v->v_id == CB_ARG_I) { ! if (v->v_val >= sysent[vcb_syscall].sy_narg) { ! MCB_XDEBUG(EINVAL, "There are %d arguments, not %d.", ! sysent[vcb_syscall].sy_narg, v->v_val); ! } retv->v_val = vcb_uap[v->v_val]; *************** *** 106,110 **** v->v_type == CB_STRPTR_T) { if (MCB_CHKADDR((void *)retv->v_val)) ! MCB_XDEBUG("Invalid argument address.", EFAULT); } --- 108,112 ---- v->v_type == CB_STRPTR_T) { if (MCB_CHKADDR((void *)retv->v_val)) ! MCB_XDEBUG(EFAULT, "Invalid argument address."); } *************** *** 112,117 **** for (i = 0; ((char **)retv->v_val)[i] != NULL; ++i) { if (MCB_CHKADDR(((char **)retv->v_val)[i])) { ! MCB_XDEBUG("Invalid string address.", ! EFAULT); } } --- 114,119 ---- for (i = 0; ((char **)retv->v_val)[i] != NULL; ++i) { if (MCB_CHKADDR(((char **)retv->v_val)[i])) { ! MCB_XDEBUG(EFAULT, ! "Invalid string address."); } } *************** *** 272,277 **** sizeof(struct scb_val *) * rule->r_nargs, M_NOWAIT)) == NULL) { ! MCB_XDEBUG("Error when allocating memory for value " ! "ptrs.", ENOMEM); } lastarg = rule->r_nargs - 1; --- 274,279 ---- sizeof(struct scb_val *) * rule->r_nargs, M_NOWAIT)) == NULL) { ! MCB_XDEBUG(ENOMEM, ! "Error when allocating memory for value ptrs."); } lastarg = rule->r_nargs - 1; *************** *** 283,287 **** rule->r_args[lastarg].v_id == CB_REG_I && tcb_regs[rule->r_args[lastarg].v_val].v_id == CB_EMPTY_I) { ! MCB_XDEBUG("Empty register.", EINVAL); } for (i = 0; i <= lastarg; ++i) { --- 285,289 ---- rule->r_args[lastarg].v_id == CB_REG_I && tcb_regs[rule->r_args[lastarg].v_val].v_id == CB_EMPTY_I) { ! MCB_XDEBUG(EINVAL, "Empty last register."); } for (i = 0; i <= lastarg; ++i) { *************** *** 293,298 **** */ if (arg->v_id != CB_REG_I) { ! MCB_XDEBUG("Invalid " ! "argument ID.", EINVAL); } /* --- 295,300 ---- */ if (arg->v_id != CB_REG_I) { ! MCB_XDEBUG(EINVAL, ! "Invalid argument %d ID.", i); } /* *************** *** 303,308 **** if (rule->r_args[lastarg].v_id == CB_REG_I && rule->r_args[lastarg].v_val == arg->v_val) { ! MCB_XDEBUG("Registers " ! "conflict.", EINVAL); } --- 305,311 ---- if (rule->r_args[lastarg].v_id == CB_REG_I && rule->r_args[lastarg].v_val == arg->v_val) { ! MCB_XDEBUG(EINVAL, "Register %d in " ! "argument %d conflict.", ! arg->v_val, i); } *************** *** 313,318 **** if (arg->v_id == CB_REG_I) { vals[i] = &(tcb_regs[arg->v_val]); ! if (vals[i]->v_id == CB_EMPTY_I) ! MCB_XDEBUG("Empty register.", EINVAL); continue; } --- 316,323 ---- if (arg->v_id == CB_REG_I) { vals[i] = &(tcb_regs[arg->v_val]); ! if (vals[i]->v_id == CB_EMPTY_I) { ! MCB_XDEBUG(EINVAL, "Empty register " ! "in argument %d.", i); ! } continue; } *************** *** 334,345 **** } MCB_FREE(vals); ! MCB_XDEBUG("Error when allocating memory for " ! "temporary value.", ENOMEM); } if (arg->v_id == CB_LOCAL_I || arg->v_id == CB_ARG_I) { if ((error = fcb_getval(p, arg, vals[i])) != 0) { ! MCB_XDEBUG("Error when getting value.", ! error); } continue; --- 339,350 ---- } MCB_FREE(vals); ! MCB_XDEBUG(ENOMEM, "Error when allocating " ! "memory for temporary value %d.", i); } if (arg->v_id == CB_LOCAL_I || arg->v_id == CB_ARG_I) { if ((error = fcb_getval(p, arg, vals[i])) != 0) { ! MCB_XDEBUG(error, ! "Error when getting value %d.", i); } continue; *************** *** 354,367 **** } MCB_FREE(vals); ! MCB_XDEBUG("Error while executing " ! "fcb_rule_exec().", error); } } } ! uprintf("kcerb:DEBUG: Calling operation number %d.\n", rule->r_nfun); ! if ((error = rule->r_fun(p, vals, rule->r_nargs, retv, rule->r_nfun)) != 0) ! MCB_XDEBUG("Error while running operation.", error); /* Returning from syscall. */ --- 359,375 ---- } MCB_FREE(vals); ! MCB_XDEBUG(error, "Error while executing " ! "fcb_rule_exec() for argument %d.", i); } } } ! MCB_DEBUG("Calling operation number %d.", rule->r_nfun); ! if ((error = rule->r_fun(p, vals, rule->r_nargs, retv, ! rule->r_nfun)) != 0) { ! MCB_XDEBUG(error, "Error while running operation %d.", ! rule->r_nfun); ! } /* Returning from syscall. */ *************** *** 374,379 **** if (rule->r_true != NULL) { printf("kcerb:true\n"); ! if ((error = fcb_rule_exec(rule->r_true, p, retv)) != 0) ! MCB_XDEBUG("Error while running r_true", error); if (vcb_return) return (retv->v_val); --- 382,390 ---- if (rule->r_true != NULL) { printf("kcerb:true\n"); ! if ((error = fcb_rule_exec(rule->r_true, p, ! retv)) != 0) { ! MCB_XDEBUG(error, ! "Error while running r_true."); ! } if (vcb_return) return (retv->v_val); *************** *** 382,386 **** printf("kcerb:false\n"); if ((error = fcb_rule_exec(rule->r_false, p, retv)) != 0) ! MCB_XDEBUG("Error while running r_false", error); if (vcb_return) --- 393,397 ---- printf("kcerb:false\n"); if ((error = fcb_rule_exec(rule->r_false, p, retv)) != 0) ! MCB_XDEBUG(error, "Error while running r_false."); if (vcb_return) *************** *** 390,394 **** printf("kcerb:next\n"); if ((error = fcb_rule_exec(rule->r_next, p, retv)) != 0) ! MCB_XDEBUG("Error while running r_next", error); } --- 401,405 ---- printf("kcerb:next\n"); if ((error = fcb_rule_exec(rule->r_next, p, retv)) != 0) ! MCB_XDEBUG(error, "Error while running r_next."); } Index: cerb_urules.c =================================================================== RCS file: /cvsroot/cerber/cerb-ng/kcerb/cerb_urules.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** cerb_urules.c 14 Sep 2002 18:33:55 -0000 1.12 --- cerb_urules.c 15 Sep 2002 12:38:20 -0000 1.13 *************** *** 34,42 **** if ((error = suser_xxx(p->p_ucred, p, PRISON_ROOT)) != 0 || ccb_lockrules) { ! MCB_XDEBUG("Operation not permitted.", EPERM); } if (MCB_CHKADDR(uap->tab)) ! MCB_XDEBUG("Bad head address.", EFAULT); for (i = 1, nrules = 0; uap->tab[i].ur_op != 0; ++i) --- 34,42 ---- if ((error = suser_xxx(p->p_ucred, p, PRISON_ROOT)) != 0 || ccb_lockrules) { ! MCB_XDEBUG(EPERM, "Operation not permitted."); } if (MCB_CHKADDR(uap->tab)) ! MCB_XDEBUG(EFAULT, "Bad head address."); for (i = 1, nrules = 0; uap->tab[i].ur_op != 0; ++i) *************** *** 44,52 **** if (nrules > CB_MAXRULES_G) ! MCB_XDEBUG("Too many rules.", EFAULT); if ((addr = fcb_malloc("Adresses of rules in kernel space", nrules * sizeof(struct scb_rule *), M_NOWAIT)) == NULL) { ! MCB_XDEBUG("Can't allocate memory for rules pointers.", ENOMEM); } --- 44,52 ---- if (nrules > CB_MAXRULES_G) ! MCB_XDEBUG(EINVAL, "Too many rules (max=%d).", CB_MAXRULES_G); if ((addr = fcb_malloc("Adresses of rules in kernel space", nrules * sizeof(struct scb_rule *), M_NOWAIT)) == NULL) { ! MCB_XDEBUG(ENOMEM, "Can't allocate memory for rules pointers."); } *************** *** 58,62 **** MCB_FREE(addr[i - 1]); MCB_FREE(addr); ! MCB_XDEBUG("Can't allocate memory for rule.", ENOMEM); } addr[i]->r_true = NULL; --- 58,63 ---- MCB_FREE(addr[i - 1]); MCB_FREE(addr); ! MCB_XDEBUG(ENOMEM, "Can't allocate memory for rule %d.", ! i); } addr[i]->r_true = NULL; *************** *** 70,73 **** --- 71,75 ---- /* Getting new rules from userland. */ for (i = 0; i < nrules; ++i) { + MCB_DEBUG("Rule %d/%d.", i, nrules); if ((error = fcb_urule_fill(addr[i], i, &(uap->tab[i + 1]), addr, nrules)) > 0) { *************** *** 75,81 **** fcb_rule_free(&(addr[i - 1])); MCB_FREE(addr); ! MCB_XDEBUG("Error when filling rule.", error); } - MCB_DEBUG("Next rule."); } --- 77,82 ---- fcb_rule_free(&(addr[i - 1])); MCB_FREE(addr); ! MCB_XDEBUG(error, "Error when filling rule %d.", i); } } *************** *** 90,94 **** fcb_rule_free(&(tmp[i])); MCB_FREE(tmp); ! MCB_DEBUG("kcerb:debug: Rules lists switched over."); return (0); --- 91,95 ---- fcb_rule_free(&(tmp[i])); MCB_FREE(tmp); ! MCB_DEBUG("Rules lists switched over."); return (0); *************** *** 108,123 **** } else { if (MCB_CHKADDR(urule->ur_args)) ! MCB_XDEBUG("Bad args tab address.", EFAULT); for (i = 0; urule->ur_args[i].v_id != CB_EMPTY_I; ++i) nvals++; } ! if (nvals > CB_MAXVALS_G) ! MCB_XDEBUG("Too many arguments.", EFAULT); rule->r_nargs = nvals; if (urule->ur_true > nrules || urule->ur_true == nrule + 1) ! MCB_XDEBUG("Incorrect ,,true'' argument.", EFAULT); else if (urule->ur_true == 0) rule->r_true = NULL; --- 109,126 ---- } else { if (MCB_CHKADDR(urule->ur_args)) ! MCB_XDEBUG(EFAULT, "Bad arguments tab address."); for (i = 0; urule->ur_args[i].v_id != CB_EMPTY_I; ++i) nvals++; } ! if (nvals > CB_MAXVALS_G) { ! MCB_XDEBUG(EFAULT, "Too many arguments (max=%d).", ! CB_MAXVALS_G); ! } rule->r_nargs = nvals; if (urule->ur_true > nrules || urule->ur_true == nrule + 1) ! MCB_XDEBUG(EINVAL, "Incorrect ,,true'' argument."); else if (urule->ur_true == 0) rule->r_true = NULL; *************** *** 126,130 **** if (urule->ur_false > nrules || urule->ur_false == nrule + 1) ! MCB_XDEBUG("Incorrect ,,false'' argument.", EFAULT); else if (urule->ur_false == 0) rule->r_false = NULL; --- 129,133 ---- if (urule->ur_false > nrules || urule->ur_false == nrule + 1) ! MCB_XDEBUG(EINVAL, "Incorrect ,,false'' argument."); else if (urule->ur_false == 0) rule->r_false = NULL; *************** *** 133,137 **** if (urule->ur_next > nrules || urule->ur_next == nrule + 1) ! MCB_XDEBUG("Incorrect ,,next'' argument.", EFAULT); else if (urule->ur_next == 0) rule->r_next = NULL; --- 136,140 ---- if (urule->ur_next > nrules || urule->ur_next == nrule + 1) ! MCB_XDEBUG(EFAULT, "Incorrect ,,next'' argument."); else if (urule->ur_next == 0) rule->r_next = NULL; *************** *** 140,144 **** if ((rule->r_nfun = urule->ur_op) >= ECB_MAXFUN_O) ! MCB_XDEBUG("Function number too big.", EFAULT); rule->r_fun = tcb_op[urule->ur_op]; --- 143,147 ---- if ((rule->r_nfun = urule->ur_op) >= ECB_MAXFUN_O) ! MCB_XDEBUG(EFAULT, "Function number too big."); rule->r_fun = tcb_op[urule->ur_op]; *************** *** 148,152 **** if ((rule->r_args = fcb_malloc("urule_fill", sizeof (struct scb_val) * nvals, M_NOWAIT)) == NULL) { ! MCB_XDEBUG("Can't allocate memory for arguments.", ENOMEM); } --- 151,155 ---- if ((rule->r_args = fcb_malloc("urule_fill", sizeof (struct scb_val) * nvals, M_NOWAIT)) == NULL) { ! MCB_XDEBUG(ENOMEM, "Can't allocate memory for arguments."); } *************** *** 157,161 **** for (i = 0; i < nvals; ++i) { if (urule->ur_args[i].v_type >= CB_MAXTYPE_T) ! MCB_XDEBUG("Incorrent v_type value.", EFAULT); rule->r_args[i].v_size = 0; --- 160,164 ---- for (i = 0; i < nvals; ++i) { if (urule->ur_args[i].v_type >= CB_MAXTYPE_T) ! MCB_XDEBUG(EFAULT, "Incorrent v_type of value %d.", i); rule->r_args[i].v_size = 0; *************** *** 167,172 **** /* Don't fix in 80 chars! */ if (MCB_CHKADDR((void *)urule->ur_args[i].v_val)) { ! MCB_XDEBUG("Bad string address.", ! EFAULT); } strsize = strlen((char *)urule->ur_args[i].v_val) + 1; --- 170,175 ---- /* Don't fix in 80 chars! */ if (MCB_CHKADDR((void *)urule->ur_args[i].v_val)) { ! MCB_XDEBUG(EFAULT, "Bad string " ! "address for value %d.", i); } strsize = strlen((char *)urule->ur_args[i].v_val) + 1; *************** *** 174,179 **** (register_t)fcb_malloc("urule_fill:str " "allocation", strsize, M_NOWAIT)) == NULL) { ! MCB_XDEBUG("Can't allocate memory for " ! "string.", ENOMEM); } if ((error = --- 177,183 ---- (register_t)fcb_malloc("urule_fill:str " "allocation", strsize, M_NOWAIT)) == NULL) { ! MCB_XDEBUG(ENOMEM, "Can't allocate " ! "memory for string for value %d.", ! i); } if ((error = *************** *** 181,186 **** (char *)rule->r_args[i].v_val, strsize, NULL)) != 0) { ! MCB_XDEBUG("Error while coping string.", ! error); } rule->r_args[i].v_size = strsize; --- 185,190 ---- (char *)rule->r_args[i].v_val, strsize, NULL)) != 0) { ! MCB_XDEBUG(error, "Error while coping " ! "string for value %d.", i); } rule->r_args[i].v_size = strsize; *************** *** 191,195 **** break; default: ! MCB_XDEBUG("Incorrect type.", EFAULT); } rule->r_args[i].v_type = urule->ur_args[i].v_type; --- 195,200 ---- break; default: ! MCB_XDEBUG(EINVAL, "Incorrect type of " ! "value %d.", i); } rule->r_args[i].v_type = urule->ur_args[i].v_type; *************** *** 197,202 **** case CB_LOCAL_I: if ((u_int)urule->ur_args[i].v_val >= ECB_MAXLOCAL_L) { ! MCB_XDEBUG("Incorrect v_val for CB_LOCAL_I ID.", ! EFAULT); } rule->r_args[i].v_type = --- 202,207 ---- case CB_LOCAL_I: if ((u_int)urule->ur_args[i].v_val >= ECB_MAXLOCAL_L) { ! MCB_XDEBUG(EINVAL, "Incorrect v_val for " ! "CB_LOCAL_I ID for value %d.", i); } rule->r_args[i].v_type = *************** *** 206,211 **** case CB_ARG_I: if (urule->ur_args[i].v_val < 0) { ! MCB_XDEBUG("Incorrect v_val for CB_ARG_I ID.", ! EFAULT); } rule->r_args[i].v_type = urule->ur_args[i].v_type; --- 211,216 ---- case CB_ARG_I: if (urule->ur_args[i].v_val < 0) { ! MCB_XDEBUG(EINVAL, "Incorrect v_val for " ! "CB_ARG_I ID for value %d.", i); } rule->r_args[i].v_type = urule->ur_args[i].v_type; *************** *** 214,219 **** case CB_REG_I: if ((u_int)urule->ur_args[i].v_val >= CB_NREGS_G) { ! MCB_XDEBUG("Incorrect v_val for CB_REG_I ID.", ! EFAULT); } /* this field isn't important for CB_REG_I */ --- 219,224 ---- case CB_REG_I: if ((u_int)urule->ur_args[i].v_val >= CB_NREGS_G) { ! MCB_XDEBUG(EINVAL, "Incorrect v_val for " ! "CB_REG_I ID for value %d.", i); } /* this field isn't important for CB_REG_I */ *************** *** 225,230 **** urule->ur_args[i].v_val > nrules || urule->ur_args[i].v_val == nrule + 1) { ! MCB_XDEBUG("Incorrect v_val for CB_FUN_I ID.", ! EFAULT); } /* this field isn't important for CB_FUN_I ID */ --- 230,235 ---- urule->ur_args[i].v_val > nrules || urule->ur_args[i].v_val == nrule + 1) { ! MCB_XDEBUG(EINVAL, "Incorrect v_val for " ! "CB_FUN_I ID.", i); } /* this field isn't important for CB_FUN_I ID */ *************** *** 234,238 **** break; default: ! MCB_XDEBUG("Incorrect v_id value.", EFAULT); } --- 239,243 ---- break; default: ! MCB_XDEBUG(EINVAL, "Incorrect v_id for value %d.", i); } |