lpr does not reject ``portable'' archive files. +Fix

Gary Winiger gww at beatnix.UUCP
Sun Mar 13 06:14:48 AEST 1988


Subject: lpr does not reject ``portable'' archive files. +Fix
Index:	lpr/{lp.local.h, lpr.c} 4.3BSD +Fix

Description:
	Lpr will queue an archive file in the ``portable'' archive format
	for printing.
Repeat-By:
	lpr /lib/libc.a
Fix:
	Correctly recognize that the magic number of a portable archive
	is a string an is not 0177545.
	The procedure test in lpr.c attempts to validate the file being queued
	for printing.  In the case of a portable archive file, it does not
	do so correctly.  lp.local.h defines the magic numbers to be tested and
	defines the ``old'' format magic number for an archive file.  The
	portable archive magic number is really the string "!<arch>\n".
	The attached code solves this problem at Elxsi.

Gary..
{ucbvax!sun,lll-lcc!lll-tis,amdahl!altos86,bridge2}!elxsi!gww
--------- cut --------- snip --------- :.,$w diff -------------
Index: lp.local.h
*** /tmp/,RCSt1002598	Mon Oct 19 11:40:19 1987
--- lp.local.h	Mon Oct 19 11:31:29 1987
***************
*** 1,6 ****
! /*	$Header: lp.local.h,v 1.1 87/06/16 16:25:38 gww Exp $ ENIX BSD
   *
   * $Log:	lp.local.h,v $
   * Revision 1.1  87/06/16  16:25:38  gww
   * Initial revision
   * 
--- 1,9 ----
! /*	$Header: lp.local.h,v 1.2 87/10/19 11:31:02 gww Exp $ ENIX BSD
   *
   * $Log:	lp.local.h,v $
+  * Revision 1.2  87/10/19  11:31:02  gww
+  * Correctly recognize archive files.
+  * 
   * Revision 1.1  87/06/16  16:25:38  gww
   * Initial revision
   * 
***************
*** 26,36 ****
  #include <ar.h>
  
  #ifndef A_MAGIC1	/* must be a VM/UNIX system */
  #	define A_MAGIC1	OMAGIC
  #	define A_MAGIC2	NMAGIC
  #	define A_MAGIC3	ZMAGIC
- #	undef ARMAG
- #	define ARMAG	0177545
  #endif
  
  /*
Index: lpr.c
*** /tmp/,RCSt1002656	Mon Oct 19 11:44:10 1987
--- lpr.c	Mon Oct 19 11:38:38 1987
***************
*** 1,5 ****
--- 1,8 ----
  /*
   * $Log:	lpr.c,v $
+  * Revision 1.3  87/10/19  11:38:18  gww
+  * Correctly recognize archive files.
+  * 
   * Revision 1.2  87/10/19  11:22:39  gww
   * Add ``u'' option to call pr -f for formfeeds to separate pages.
   * 
***************
*** 20,26 ****
  #endif not lint
  
  #ifndef lint
! static char *ERcsId = "$Header: lpr.c,v 1.2 87/10/19 11:22:39 gww Exp $ ENIX BSD";
  static char sccsid[] = "@(#)lpr.c	5.2 (Berkeley) 11/17/85";
  #endif not lint
  
--- 23,29 ----
  #endif not lint
  
  #ifndef lint
! static char *ERcsId = "$Header: lpr.c,v 1.3 87/10/19 11:38:18 gww Locked $ ENIX BSD";
  static char sccsid[] = "@(#)lpr.c	5.2 (Berkeley) 11/17/85";
  #endif not lint
  
***************
*** 550,558 ****
  			printf("%s: %s is an executable program", name, file);
  			goto error1;
  
! 		case ARMAG:
! 			printf("%s: %s is an archive file", name, file);
! 			goto error1;
  		}
  	(void) close(fd);
  	if (rflag) {
--- 553,563 ----
  			printf("%s: %s is an executable program", name, file);
  			goto error1;
  
! 		default:
! 			if (strncmp((char *)&execb, ARMAG, SARMAG) == 0) {
! 				printf("%s: %s is an archive file", name, file);
! 				goto error1;
! 			}
  		}
  	(void) close(fd);
  	if (rflag) {



More information about the Comp.bugs.4bsd.ucb-fixes mailing list