shithub: puzzles

Download patch

ref: da2767a3f9bf4abb0436157972366202ad53a407
parent: e336513be755159158c5ba017c91b018ad4cd36c
author: Ben Harris <bjh21@bjh21.me.uk>
date: Mon Feb 13 16:00:11 EST 2023

Mosaic: don't duplicate the description being validated

Mosaic's validate_desc() doesn't write to the description string, so
it has no need to make a copy of it.  And if it doesn't copy it, it
can't leak the copy.

--- a/mosaic.c
+++ b/mosaic.c
@@ -832,21 +832,18 @@
                                  const char *desc)
 {
     int size_dest = params->height * params->width;
-    char *curr_desc = dupstr(desc);
-    char *desc_base = curr_desc;
     int length;
     length = 0;
 
-    while (*curr_desc != '\0') {
-        if (*curr_desc >= 'a' && *curr_desc <= 'z') {
-            length += *curr_desc - 'a';
-        } else if (*curr_desc < '0' || *curr_desc > '9')
+    while (*desc != '\0') {
+        if (*desc >= 'a' && *desc <= 'z') {
+            length += *desc - 'a';
+        } else if (*desc < '0' || *desc > '9')
             return "Invalid character in game description";
         length++;
-        curr_desc++;
+        desc++;
     }
 
-    sfree(desc_base);
     if (length != size_dest) {
         return "Desc size mismatch";
     }