Date: Thu, 17 May 2001 14:52:09 +0300 From: Ruslan Ermilov <ru@FreeBSD.ORG> To: Nik Clayton <nik@FreeBSD.ORG> Cc: arch@FreeBSD.ORG Subject: Re: [PATCH] syscons ioctl() to grab text mode buffer Message-ID: <20010517145209.C55371@sunbay.com> In-Reply-To: <20010517121902.A3047@catkin.nothing-going-on.org>; from nik@FreeBSD.ORG on Thu, May 17, 2001 at 12:19:02PM %2B0100 References: <20010517121902.A3047@catkin.nothing-going-on.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, May 17, 2001 at 12:19:02PM +0100, Nik Clayton wrote: > Two things for review. > [...] > The second, scrshot.c uses the ioctl to dump the contents of the video > memory to stdout. Usage is > > scrshot /dev/ttyv0 > shot.scr > There are some style(9) and -security issues with this: --- scrshot.c~ Thu May 17 14:42:40 2001 +++ scrshot.c Thu May 17 14:50:22 2001 @@ -28,9 +28,9 @@ * $FreeBSD$ */ +#include <sys/types.h> #include <sys/consio.h> #include <sys/ioctl.h> -#include <sys/types.h> #include <sys/uio.h> #include <err.h> @@ -48,7 +48,6 @@ main(int argc, char *argv[]) { int fd; - int result; scrshot_t shot; vid_info_t info; @@ -56,33 +55,24 @@ errx(1, "improper # of args"); fd = open(argv[1], O_RDWR); - if (fd < 0) { - perror(argv[1]); - exit(1); - } + if (fd < 0) + err(1, "%s", argv[1]); info.size = sizeof(info); - result = ioctl(fd, CONS_GETINFO, &info); - if (result != 0) { - perror("getinfo failed"); - exit(1); - } + if (ioctl(fd, CONS_GETINFO, &info) == -1) + err(1, "ioctl(CONS_GETINFO)"); shot.buf = malloc(info.mv_csz * info.mv_rsz * sizeof(u_int16_t)); - if (!shot.buf) { - perror("couldn't allocate shot space"); - exit(1); - } + if (shot.buf == NULL) + err(1, "couldn't allocate shot space"); shot.xsize = info.mv_csz; shot.ysize = info.mv_rsz; - result = ioctl (fd, CONS_SCRSHOT, &shot); - if (result != 0) { - perror("CONS_SCRSHOT failed"); - exit(1); - } + if (ioctl(fd, CONS_SCRSHOT, &shot) == -1) + err(1, "ioctl(CONS_SCRSHOT)"); - write(1, shot.buf, shot.xsize * shot.ysize * sizeof(u_int16_t)); + (void) write(STDOUT_FILENO, shot.buf, + shot.xsize * shot.ysize * sizeof(u_int16_t)); - return 0; + exit(0); } Cheers, -- Ruslan Ermilov Oracle Developer/DBA, ru@sunbay.com Sunbay Software AG, ru@FreeBSD.org FreeBSD committer, +380.652.512.251 Simferopol, Ukraine http://www.FreeBSD.org The Power To Serve http://www.oracle.com Enabling The Information Age To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010517145209.C55371>