Fix a buffer overrun that was manifesting on OpenBSD; also fix a bounds check and some uninitialised variable problems.
This commit is contained in:
		
							parent
							
								
									fa5675d439
								
							
						
					
					
						commit
						2cdcc16bc2
					
				
					 1 changed files with 3 additions and 5 deletions
				
			
		|  | @ -66,8 +66,7 @@ short* set_val; | |||
| char* set_flag; | ||||
| #endif | ||||
| 
 | ||||
| unsigned codegen(codep, ply, toplevel, costlimit, forced) byte* codep; | ||||
| unsigned costlimit; | ||||
| unsigned codegen(byte* codep, int ply, int toplevel, unsigned costlimit, int forced) | ||||
| { | ||||
| #ifndef NDEBUG | ||||
| 	byte* origcp = codep; | ||||
|  | @ -75,7 +74,7 @@ unsigned costlimit; | |||
| #endif | ||||
| 	unsigned totalcost = 0; | ||||
| 	int inscoerc = 0; | ||||
| 	int procarg[MAXPROCARG + 1]; | ||||
| 	int procarg[MAXPROCARG + 1] = {}; | ||||
| #ifdef ALLOW_NEXTEM | ||||
| 	static int paniced; | ||||
| 	char* savebp = 0; | ||||
|  | @ -328,7 +327,6 @@ unsigned costlimit; | |||
| 				tokpatlen = (codep[-1] >> 5) & 07; | ||||
| 				for (i = 0; i < tokpatlen; i++) | ||||
| 					getint(tokexp[i], codep); | ||||
| 				tokexp[i] = 0; | ||||
| 				tp = &fakestack[stackheight - 1]; | ||||
| 				i = 0; | ||||
| 				while (i < tokpatlen && tp >= fakestack) | ||||
|  | @ -860,7 +858,7 @@ unsigned costlimit; | |||
| 					swtxt(); | ||||
| 					if (stringno > 10000) | ||||
| 					{ | ||||
| 						assert(stringno < 100001 + MAXPROCARG); | ||||
| 						assert(stringno < 10001 + MAXPROCARG); | ||||
| 						genstr(procarg[stringno - 10001]); | ||||
| 					} | ||||
| 					else | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue