Avoid integer overflow in cursor helper functions 93/268793/1
authorBowon Ryu <bowon.ryu@samsung.com>
Mon, 3 Jan 2022 04:54:03 +0000 (13:54 +0900)
committerBowon Ryu <bowon.ryu@samsung.com>
Mon, 3 Jan 2022 04:54:03 +0000 (13:54 +0900)
Since index is uint, it can causes problems if totalNumberOfCharacters is 0.

Change-Id: I3a815474a42ddea9f02ab1e358f7edf8ec0f8dac
Signed-off-by: Bowon Ryu <bowon.ryu@samsung.com>
dali-toolkit/internal/text/cursor-helper-functions.cpp

index 7b08c47..2379bcc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -485,9 +485,9 @@ void GetCursorPosition(GetCursorPositionParameters& parameters,
   const GlyphInfo* const  glyphInfoBuffer          = parameters.visualModel->mGlyphs.Begin();
   CharacterIndex          index;
   GlyphMetrics            glyphMetrics;
-  MetricsPtr&             metrics = parameters.metrics;
-  GlyphIndex glyphIndex = 0u;
-  Length numberOfGlyphs = 0u;
+  MetricsPtr&             metrics        = parameters.metrics;
+  GlyphIndex              glyphIndex     = 0u;
+  Length                  numberOfGlyphs = 0u;
 
   if(isLastNewParagraph)
   {
@@ -503,8 +503,12 @@ void GetCursorPosition(GetCursorPositionParameters& parameters,
 
     cursorInfo.lineHeight = GetLineHeight(newLine);
 
+    index                                = 0u;
     const Length totalNumberOfCharacters = parameters.logicalModel->mText.Count();
-    index                                = totalNumberOfCharacters - 1;
+    if(totalNumberOfCharacters > 0u)
+    {
+      index = totalNumberOfCharacters - 1u;
+    }
 
     GetGlyphMetricsFromCharacterIndex(index, glyphInfoBuffer, charactersToGlyphBuffer, glyphsPerCharacterBuffer, metrics, glyphMetrics, glyphIndex, numberOfGlyphs);