mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	Fixed RTLIL::SigSpec::parse() for out-of-range bit- and part-selects
This commit is contained in:
		
							parent
							
								
									6b05a9e807
								
							
						
					
					
						commit
						3be5fa053f
					
				
					 1 changed files with 8 additions and 1 deletions
				
			
		|  | @ -2980,7 +2980,10 @@ bool RTLIL::SigSpec::parse(RTLIL::SigSpec &sig, RTLIL::Module *module, std::stri | ||||||
| 			sigspec_parse_split(index_tokens, indices.substr(1, indices.size()-2), ':'); | 			sigspec_parse_split(index_tokens, indices.substr(1, indices.size()-2), ':'); | ||||||
| 			if (index_tokens.size() == 1) { | 			if (index_tokens.size() == 1) { | ||||||
| 				cover("kernel.rtlil.sigspec.parse.bit_sel"); | 				cover("kernel.rtlil.sigspec.parse.bit_sel"); | ||||||
| 				sig.append(RTLIL::SigSpec(wire, atoi(index_tokens.at(0).c_str()))); | 				int a = atoi(index_tokens.at(0).c_str()); | ||||||
|  | 				if (a < 0 || a >= wire->width) | ||||||
|  | 					return false; | ||||||
|  | 				sig.append(RTLIL::SigSpec(wire, a)); | ||||||
| 			} else { | 			} else { | ||||||
| 				cover("kernel.rtlil.sigspec.parse.part_sel"); | 				cover("kernel.rtlil.sigspec.parse.part_sel"); | ||||||
| 				int a = atoi(index_tokens.at(0).c_str()); | 				int a = atoi(index_tokens.at(0).c_str()); | ||||||
|  | @ -2989,6 +2992,10 @@ bool RTLIL::SigSpec::parse(RTLIL::SigSpec &sig, RTLIL::Module *module, std::stri | ||||||
| 					int tmp = a; | 					int tmp = a; | ||||||
| 					a = b, b = tmp; | 					a = b, b = tmp; | ||||||
| 				} | 				} | ||||||
|  | 				if (a < 0 || a >= wire->width) | ||||||
|  | 					return false; | ||||||
|  | 				if (b < 0 || b >= wire->width) | ||||||
|  | 					return false; | ||||||
| 				sig.append(RTLIL::SigSpec(wire, a, b-a+1)); | 				sig.append(RTLIL::SigSpec(wire, a, b-a+1)); | ||||||
| 			} | 			} | ||||||
| 		} else | 		} else | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue