mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	conversions.c: Specify that we only want to parse decimal numbers.
Passing 0 as the last argument to strtoimax() or strtoumax() causes octal and hexadecimal to be accepted which was not originally intended. So we now force to only accept decimal. ASTERISK-29950 #close Change-Id: I93baf0f273441e8280354630a463df263a8c0edd
This commit is contained in:
		
				
					committed by
					
						 Kevin Harwell
						Kevin Harwell
					
				
			
			
				
	
			
			
			
						parent
						
							70a958a051
						
					
				
				
					commit
					bf825a5050
				
			| @@ -48,6 +48,7 @@ AST_TEST_DEFINE(str_to_int) | ||||
| 	const char *spaces = "  "; | ||||
| 	const char *valid = "7"; | ||||
| 	const char *valid_spaces = "  7"; | ||||
| 	const char *valid_decimal = "08"; | ||||
| 	int val; | ||||
| 	char str[64]; | ||||
|  | ||||
| @@ -73,6 +74,7 @@ AST_TEST_DEFINE(str_to_int) | ||||
| 	ast_test_validate(test, ast_str_to_int(spaces, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_int(valid, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_int(valid_spaces, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_int(valid_decimal, &val)); | ||||
|  | ||||
| 	ast_test_validate(test, snprintf(str, sizeof(str), "%d", INT_MAX) > 0); | ||||
| 	ast_test_validate(test, !ast_str_to_int(str, &val)); | ||||
| @@ -95,6 +97,7 @@ AST_TEST_DEFINE(str_to_uint) | ||||
| 	const char *spaces = "  "; | ||||
| 	const char *valid = "7"; | ||||
| 	const char *valid_spaces = "  7"; | ||||
| 	const char *valid_decimal = "08"; | ||||
| 	unsigned int val; | ||||
| 	char str[64]; | ||||
|  | ||||
| @@ -119,6 +122,7 @@ AST_TEST_DEFINE(str_to_uint) | ||||
| 	ast_test_validate(test, ast_str_to_uint(spaces, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_uint(valid, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_uint(valid_spaces, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_uint(valid_decimal, &val)); | ||||
|  | ||||
| 	ast_test_validate(test, snprintf(str, sizeof(str), "%u", UINT_MAX) > 0); | ||||
| 	ast_test_validate(test, !ast_str_to_uint(str, &val)); | ||||
| @@ -138,6 +142,7 @@ AST_TEST_DEFINE(str_to_long) | ||||
| 	const char *spaces = "  "; | ||||
| 	const char *valid = "7"; | ||||
| 	const char *valid_spaces = "  7"; | ||||
| 	const char *valid_decimal = "08"; | ||||
| 	long val; | ||||
| 	char str[64]; | ||||
|  | ||||
| @@ -163,6 +168,7 @@ AST_TEST_DEFINE(str_to_long) | ||||
| 	ast_test_validate(test, ast_str_to_long(spaces, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_long(valid, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_long(valid_spaces, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_long(valid_decimal, &val)); | ||||
|  | ||||
| 	ast_test_validate(test, snprintf(str, sizeof(str), "%ld", LONG_MAX) > 0); | ||||
| 	ast_test_validate(test, !ast_str_to_long(str, &val)); | ||||
| @@ -185,6 +191,7 @@ AST_TEST_DEFINE(str_to_ulong) | ||||
| 	const char *spaces = "  "; | ||||
| 	const char *valid = "7"; | ||||
| 	const char *valid_spaces = "  7"; | ||||
| 	const char *valid_decimal = "08"; | ||||
| 	unsigned long val; | ||||
| 	char str[64]; | ||||
|  | ||||
| @@ -209,6 +216,7 @@ AST_TEST_DEFINE(str_to_ulong) | ||||
| 	ast_test_validate(test, ast_str_to_ulong(spaces, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_ulong(valid, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_ulong(valid_spaces, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_ulong(valid_decimal, &val)); | ||||
|  | ||||
| 	ast_test_validate(test, snprintf(str, sizeof(str), "%lu", ULONG_MAX) > 0); | ||||
| 	ast_test_validate(test, !ast_str_to_ulong(str, &val)); | ||||
| @@ -228,6 +236,7 @@ AST_TEST_DEFINE(str_to_imax) | ||||
| 	const char *spaces = "  "; | ||||
| 	const char *valid = "7"; | ||||
| 	const char *valid_spaces = "  7"; | ||||
| 	const char *valid_decimal = "08"; | ||||
| 	intmax_t val; | ||||
| 	char str[64]; | ||||
|  | ||||
| @@ -253,6 +262,7 @@ AST_TEST_DEFINE(str_to_imax) | ||||
| 	ast_test_validate(test, ast_str_to_imax(spaces, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_imax(valid, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_imax(valid_spaces, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_imax(valid_decimal, &val)); | ||||
|  | ||||
| 	ast_test_validate(test, snprintf(str, sizeof(str), "%jd", INTMAX_MAX) > 0); | ||||
| 	ast_test_validate(test, !ast_str_to_imax(str, &val)); | ||||
| @@ -276,6 +286,7 @@ AST_TEST_DEFINE(str_to_umax) | ||||
| 	const char *spaces = "  "; | ||||
| 	const char *valid = "7"; | ||||
| 	const char *valid_spaces = "  7"; | ||||
| 	const char *valid_decimal = "08"; | ||||
| 	uintmax_t val; | ||||
| 	char str[64]; | ||||
|  | ||||
| @@ -300,6 +311,7 @@ AST_TEST_DEFINE(str_to_umax) | ||||
| 	ast_test_validate(test, ast_str_to_umax(spaces, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_umax(valid, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_umax(valid_spaces, &val)); | ||||
| 	ast_test_validate(test, !ast_str_to_umax(valid_decimal, &val)); | ||||
|  | ||||
| 	ast_test_validate(test, snprintf(str, sizeof(str), "%ju", UINTMAX_MAX) > 0); | ||||
| 	ast_test_validate(test, !ast_str_to_umax(str, &val)); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user