From 6d63eee26296f94a0ebd90a5686c03b256890e1f Mon Sep 17 00:00:00 2001 From: a1xd <68629610+a1xd@users.noreply.github.com> Date: Thu, 23 Sep 2021 18:40:52 -0400 Subject: check number of points on LUT parse --- grapher/Models/Options/LUT/LUTPanelOptions.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'grapher/Models') diff --git a/grapher/Models/Options/LUT/LUTPanelOptions.cs b/grapher/Models/Options/LUT/LUTPanelOptions.cs index 4357619..3690c76 100644 --- a/grapher/Models/Options/LUT/LUTPanelOptions.cs +++ b/grapher/Models/Options/LUT/LUTPanelOptions.cs @@ -135,17 +135,31 @@ namespace grapher.Models.Options.LUT private static (Vec2[], int length) UserTextToPoints(string userText) { + const int MaxPoints = 256; + if (string.IsNullOrWhiteSpace(userText)) { throw new ApplicationException("Text must be entered in text box to fill Look Up Table."); } - Vec2[] points = new Vec2[256]; + Vec2[] points = new Vec2[MaxPoints]; var userTextSplit = userText.Trim().Trim(';').Split(';'); int index = 0; float lastX = 0; + int pointsCount = userTextSplit.Count(); + + if (pointsCount < 2) + { + throw new ApplicationException("At least 2 points required"); + } + + if (pointsCount > MaxPoints) + { + throw new ApplicationException($"Number of points exceeds max ({MaxPoints})"); + } + foreach(var pointEntry in userTextSplit) { var pointSplit = pointEntry.Trim().Split(','); -- cgit v1.2.3