Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/18/84 SMI; site sun.uucp Path: utzoo!watmath!clyde!cbosgd!ihnp4!mhuxn!mhuxr!ulysses!allegra!mit-eddie!genrad!decvax!decwrl!sun!guy From: guy@sun.uucp (Guy Harris) Newsgroups: net.bugs.usg Subject: Yet ANOTHER null pointer dereference problem (in "cat") Message-ID: <2826@sun.uucp> Date: Thu, 26-Sep-85 00:45:28 EDT Article-I.D.: sun.2826 Posted: Thu Sep 26 00:45:28 1985 Date-Received: Sun, 29-Sep-85 04:41:00 EDT Distribution: net Organization: Sun Microsystems, Inc. Lines: 31 PLEASE, people: argv[argc] does NOT point to a string. It is a null pointer. Code which dereferences it is illegal. If you want to write a program which reads standard input if 1) no arguments are given or 2) an argument of "-" is given, PLEASE check whether any arguments were given before checking if an argument of "-" was given! (One would think that it was obvious that one should first check if something exists before checking if it has a particular property, but there's a hell of a lot of code that seems not to...) *** cat.c.BAK Mon Sep 23 13:06:36 1985 --- cat.c Wed Sep 25 11:57:05 1985 *************** *** 85,91 for (argv = &argv[optind]; optind < argc && !ferror(stdout); optind++, argv++) { filenm = *argv; ! if (filenm[0]=='-' && filenm[1]=='\0' || stdinflg) { filenm = "standard input"; fi = stdin; } else { --- 85,91 ----- for (argv = &argv[optind]; optind < argc && !ferror(stdout); optind++, argv++) { filenm = *argv; ! if (stdinflg || (filenm[0]=='-' && filenm[1]=='\0')) { filenm = "standard input"; fi = stdin; } else { Guy Harris