Date: Mon, 26 Jun 2000 23:12:45 +0200 (CEST) From: adrian@freebsd.org To: FreeBSD-gnats-submit@freebsd.org Subject: kern/19535: procfs_rlimit tidyup Message-ID: <200006262112.XAA00364@vader.creative.net.au>
next in thread | raw e-mail | index | archive | help
>Number: 19535 >Category: kern >Synopsis: procfs_rlimit tidyup >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Mon Jun 26 14:20:01 PDT 2000 >Closed-Date: >Last-Modified: >Originator: Adrian Chadd >Release: FreeBSD 5.0-CURRENT i386 >Organization: >Environment: FreeBSD vader.creative.net.au 5.0-CURRENT FreeBSD 5.0-CURRENT #6: Mon Jun 26 22:54:29 CEST 2000 adrian@vader.creative.net.au:/usr/src/sys/compile/VADER i386 >Description: A quick tidyup of procfs_rlimit.c. Specifically, making the code a little more style(9) compliant, and taking out a char[512] which is bad juju in kernel code. >How-To-Repeat: N/A >Fix: Apply this patch: Index: procfs_rlimit.c =================================================================== RCS file: /home/ncvs/src/sys/miscfs/procfs/procfs_rlimit.c,v retrieving revision 1.5 diff -u -r1.5 procfs_rlimit.c --- procfs_rlimit.c 1999/12/08 08:59:37 1.5 +++ procfs_rlimit.c 2000/06/26 21:10:33 @@ -52,6 +52,7 @@ #include <sys/resourcevar.h> #include <sys/resource.h> #include <sys/types.h> +#include <sys/malloc.h> #include <miscfs/procfs/procfs.h> @@ -66,41 +67,25 @@ int i; int xlen; int error; - char psbuf[512]; /* XXX - conservative */ + char *psbuf; if (uio->uio_rw != UIO_READ) return (EOPNOTSUPP); - - + psbuf = (char *)malloc(512 * sizeof(char), M_TEMP, M_WAITOK); + /* XXX conservative, but potentially overflowable */ ps = psbuf; - for (i = 0; i < RLIM_NLIMITS; i++) { - - /* - * Add the rlimit ident - */ - + /* Add the rlimit ident */ ps += sprintf(ps, "%s ", rlimit_ident[i]); - - /* - * Replace RLIM_INFINITY with -1 in the string - */ - - /* - * current limit - */ - + /* Replace RLIM_INFINITY with -1 in the string */ + /* current limit */ if (p->p_rlimit[i].rlim_cur == RLIM_INFINITY) { ps += sprintf(ps, "-1 "); } else { ps += sprintf(ps, "%llu ", (unsigned long long)p->p_rlimit[i].rlim_cur); } - - /* - * maximum limit - */ - + /* maximum limit */ if (p->p_rlimit[i].rlim_max == RLIM_INFINITY) { ps += sprintf(ps, "-1\n"); } else { @@ -108,12 +93,10 @@ (unsigned long long)p->p_rlimit[i].rlim_max); } } - /* * This logic is rather tasty - but its from procfs_status.c, so * I guess I'll use it here. */ - xlen = ps - psbuf; xlen -= uio->uio_offset; ps = psbuf + uio->uio_offset; @@ -122,7 +105,7 @@ error = 0; else error = uiomove(ps, xlen, uio); - + free(psbuf, M_TEMP); return (error); } >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200006262112.XAA00364>