Be more careful when doing el_parse() - only do it when el is
authorJoerg Sonnenberger <joerg@dragonflybsd.org>
Tue, 15 Feb 2005 16:32:46 +0000 (16:32 +0000)
committerJoerg Sonnenberger <joerg@dragonflybsd.org>
Tue, 15 Feb 2005 16:32:46 +0000 (16:32 +0000)
properly initialized, that happens when lpc is called from a tty.
Without this change, it's possible to get SIGSEGV simply doing:
        echo "..:" | lpc

Reported by:    Wojciech A. Koszek <dunstan at freebsd czest pl>
PR:             77462 (patch rewritten by myself)

lpc.c, 1.29
Obtained-from: FreeBSD
Submitted-by: Xin Li (delphij@freebsd)

usr.sbin/lpr/lpc/lpc.c

index feba680..2422aee 100644 (file)
@@ -34,7 +34,7 @@
  * @(#) Copyright (c) 1983, 1993 The Regents of the University of California.  All rights reserved.
  * @(#)lpc.c   8.3 (Berkeley) 4/28/95
  * $FreeBSD: src/usr.sbin/lpr/lpc/lpc.c,v 1.13.2.11 2002/07/26 03:12:07 gad Exp $
- * $DragonFly: src/usr.sbin/lpr/lpc/lpc.c,v 1.4 2004/03/22 22:32:50 cpressey Exp $
+ * $DragonFly: src/usr.sbin/lpr/lpc/lpc.c,v 1.5 2005/02/15 16:32:46 joerg Exp $
  */
 
 #include <sys/param.h>
@@ -190,7 +190,7 @@ cmdscanner(void)
                makeargv();
                if (margc == 0)
                        continue;
-               if (el_parse(el, margc, margv) != -1)
+               if (el != NULL && el_parse(el, margc, margv) != -1)
                        continue;
 
                c = getcmd(margv[0]);