Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!decvax!wivax!linus!genrad!grkermit!mit-vax!eagle!harpo!utah-cs!sask!hssg40!adec23!eric
From: eric@adec23.UUCP
Newsgroups: net.lang.c
Subject: Re: Wideranging Bug in /lib/cpp
Message-ID: <59@adec23.UUCP>
Date: Wed, 1-Jun-83 11:02:50 EDT
Article-I.D.: adec23.59
Posted: Wed Jun  1 11:02:50 1983
Date-Received: Tue, 7-Jun-83 12:16:51 EDT
References: populi.583
Lines: 20

The problem noted by Harry Weeks (ucbvax!G:alpines) is caused by an error
in the lexical analyzer portion of the C preprocessor.
The character to hexadecimal conversion code looks like:

	case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': 
		t = c-'a'; if (b>10) break;
	case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': 
		t = c - 'A'; if (b>10) break;

The bug can be fixed by changing this to:

	case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': 
		t = c-'a'+10; if (b>10) break;
	case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': 
		t = c - 'A'+10; if (b>10) break;


		Eric Norum
		Advanced Digital Engineering Corporation
		(..!utah-cs!sask!hssg40!adec23!eric)