gww@marduk.UUCP (Gary Winiger) (09/05/87)
Subject: bin/make dereferences a NULL pointer if VPATH is not defined. +Fix Index: bin/make/files.c 4.3BSD +Fix Description: If the macro VPATH is not defined in the Makefile, make attempts to determine this by dereferencing a NULL pointer. On certain systems this will cause a segmentation fault. Repeat-By: Running make against a Makefile without VPATH defined on a system that will not allow NULL pointer dereferencing. Fix: Check to see if the pointer is NULL before dereferencing it. The attached fix resolves this problem at our site. Gary.. {ucbvax!sun,lll-lcc!lll-tis,amdahl!altos86,bridge2}!elxsi!gww --------- cut --------- snip --------- :.,$w diff ------------- *** /tmp/,RCSt1000523 Fri Dec 12 17:30:39 1986 --- /usr/src/bin/make/files.c Fri Dec 12 17:28:15 1986 *************** *** 1,10 **** /* * $Log: files.c,v $ * Revision 1.1 86/12/11 12:53:15 gww * Initial revision * */ ! static char *ERcsId = "$Header: files.c,v 1.1 86/12/11 12:53:15 gww Exp $ ENIX BSD"; static char *sccsid = "@(#)files.c 4.12 (Berkeley) 86/01/09"; #include <fcntl.h> --- 1,17 ---- /* * $Log: files.c,v $ + * Revision 1.2 86/12/12 17:27:34 gww + * Don't dereference null pointer when VPATH is not defined. + * * Revision 1.1 86/12/11 12:53:15 gww * Initial revision * */ ! static char *ERcsId = "$Header: files.c,v 1.2 86/12/12 17:27:34 gww Exp $ ENIX BSD"; static char *sccsid = "@(#)files.c 4.12 (Berkeley) 86/01/09"; #include <fcntl.h> *************** *** 230,236 **** dirpref = ""; filepat = pat; cp = varptr("VPATH"); ! if (*cp->varval == 0) path = "."; else { path = pth; *path = '\0'; --- 237,243 ---- dirpref = ""; filepat = pat; cp = varptr("VPATH"); ! if (cp->varval == NULL || *cp->varval == 0) path = "."; else { path = pth; *path = '\0';