Skip to content

Commit f4007a6

Browse files
committed
Enhance input validation for MyNumber verification and check digit endpoints
1 parent c8bf6c5 commit f4007a6

2 files changed

Lines changed: 16 additions & 4 deletions

File tree

MyNumberNET/MyNumber.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,11 @@ public static int CalculateCheckDigits(int[] number)
4040
throw new MyNumberMalformedException("Malformed sequence. Must be 11 digits.");
4141
if (Array.Exists(number, n => n < 0 || n > 9))
4242
throw new MyNumberMalformedException("All digits must be between 0 and 9.");
43-
Array.Reverse(number);
4443
var sum = 0;
4544
for (var n = 1; n < 7; n++)
46-
sum += (n + 1) * number[n - 1];
45+
sum += (n + 1) * number[11 - n];
4746
for (var n = 7; n < 12; n++)
48-
sum += (n - 5) * number[n - 1];
49-
Array.Reverse(number);
47+
sum += (n - 5) * number[11 - n];
5048
if (sum % 11 <= 1)
5149
return 0;
5250
return 11 - sum % 11;

MyNumberNET_ApiServer/Controllers/MyNumberController.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ public class MyNumberController : ControllerBase
1818
[HttpPost("verify")]
1919
public ActionResult<bool> Verify([FromBody] int[] number)
2020
{
21+
// Input validation before calling business logic
22+
if (number == null)
23+
return BadRequest("Input array is null.");
24+
if (number.Length != 12)
25+
return BadRequest("Malformed sequence. Must be 12 digits.");
26+
if (number.Any(n => n < 0 || n > 9))
27+
return BadRequest("All digits must be between 0 and 9.");
2128
try
2229
{
2330
bool isValid = MyNumber.VerifyNumber(number);
@@ -37,6 +44,13 @@ public ActionResult<bool> Verify([FromBody] int[] number)
3744
[HttpPost("checkdigit")]
3845
public ActionResult<int> CheckDigit([FromBody] int[] number)
3946
{
47+
// Input validation before calling business logic
48+
if (number == null)
49+
return BadRequest("Input array is null.");
50+
if (number.Length != 11)
51+
return BadRequest("Malformed sequence. Must be 11 digits.");
52+
if (number.Any(n => n < 0 || n > 9))
53+
return BadRequest("All digits must be between 0 and 9.");
4054
try
4155
{
4256
int checkDigit = MyNumber.CalculateCheckDigits(number);

0 commit comments

Comments
 (0)