lib: deprecate fromHexString on dodgy inputs
				
					
				
			See <https://github.com/NixOS/nixpkgs/pull/433710>.
This commit is contained in:
		
							parent
							
								
									449ad44f16
								
							
						
					
					
						commit
						3c7d67da23
					
				| @ -386,35 +386,21 @@ runTests { | ||||
|     expected = 9223372036854775807; | ||||
|   }; | ||||
| 
 | ||||
|   testFromHexStringLeadingZeroes = { | ||||
|     expr = fromHexString "00ffffffffffffff"; | ||||
|     expected = 72057594037927935; | ||||
|   }; | ||||
| 
 | ||||
|   testFromHexStringWithPrefix = { | ||||
|     expr = fromHexString "0Xf"; | ||||
|     expr = fromHexString "0xf"; | ||||
|     expected = 15; | ||||
|   }; | ||||
| 
 | ||||
|   # FIXME: This might be bad and should potentially be deprecated. | ||||
|   testFromHexStringQuestionableMixedCase = { | ||||
|   testFromHexStringMixedCase = { | ||||
|     expr = fromHexString "eEeEe"; | ||||
|     expected = 978670; | ||||
|   }; | ||||
| 
 | ||||
|   # FIXME: This is probably bad and should potentially be deprecated. | ||||
|   testFromHexStringQuestionableUnderscore = { | ||||
|     expr = fromHexString "F_f"; | ||||
|     expected = 255; | ||||
|   }; | ||||
| 
 | ||||
|   # FIXME: This is definitely bad and should be deprecated. | ||||
|   testFromHexStringBadComment = { | ||||
|     expr = fromHexString "0 # oops"; | ||||
|     expected = 0; | ||||
|   }; | ||||
| 
 | ||||
|   # FIXME: Oh my god. | ||||
|   testFromHexStringAwfulInjection = { | ||||
|     expr = fromHexString "1\nwhoops = {}"; | ||||
|     expected = 1; | ||||
|   }; | ||||
| 
 | ||||
|   testToBaseDigits = { | ||||
|     expr = toBaseDigits 2 6; | ||||
|     expected = [ | ||||
|  | ||||
| @ -1119,14 +1119,21 @@ in | ||||
|     ``` | ||||
|   */ | ||||
|   fromHexString = | ||||
|     value: | ||||
|     str: | ||||
|     let | ||||
|       noPrefix = lib.strings.removePrefix "0x" (lib.strings.toLower value); | ||||
|       match = builtins.match "(0x)?([0-7]?[0-9A-Fa-f]{1,15})" str; | ||||
|     in | ||||
|     let | ||||
|       parsed = builtins.fromTOML "v=0x${noPrefix}"; | ||||
|     in | ||||
|     parsed.v; | ||||
|     if match != null then | ||||
|       (builtins.fromTOML "v=0x${builtins.elemAt match 1}").v | ||||
|     else | ||||
|       # TODO: Turn this into a `throw` in 26.05. | ||||
|       assert lib.warn "fromHexString: ${ | ||||
|         lib.generators.toPretty { } str | ||||
|       } is not a valid input and will be rejected in 26.05" true; | ||||
|       let | ||||
|         noPrefix = lib.strings.removePrefix "0x" (lib.strings.toLower str); | ||||
|       in | ||||
|       (builtins.fromTOML "v=0x${noPrefix}").v; | ||||
| 
 | ||||
|   /** | ||||
|     Convert the given positive integer to a string of its hexadecimal | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Emily
						Emily