babl: make naming more defensive against overflow
authorØyvind Kolås <pippin@gimp.org>
Thu, 20 Apr 2023 20:08:15 +0000 (22:08 +0200)
committerØyvind Kolås <pippin@gimp.org>
Thu, 20 Apr 2023 20:39:27 +0000 (22:39 +0200)
Not neccesary while the static strings are 512 bytes, in regular
use we might however want to reduce this to 256bytes.

babl-format: make more more defensive

babl/babl-format.c
babl/babl-space.c

index 3a8e6c0de1ee55efb72547120670329111246bca..cbcc88066ad3e7a4331671a60e9edfd9de150d32 100644 (file)
@@ -140,8 +140,9 @@ format_new_from_format_with_space (const Babl *format,
 {
   Babl *ret;
   char new_name[256];
-  snprintf (new_name, sizeof (new_name), "%s-%s", babl_get_name ((void*)format),
+  snprintf (new_name, sizeof (new_name)-1, "%s-%s", babl_get_name ((void*)format),
                                                   babl_get_name ((void*)space));
+  new_name[255]=0;
   ret = babl_db_find (babl_format_db(), new_name);
   if (ret)
     return ret;
index 09233542697a6164dd5b7dcb3854aa4c85d92548..ff997467a983fca98c9b76b76d869ae134c6e278 100644 (file)
@@ -354,11 +354,13 @@ babl_space_from_rgbxyz_matrix (const char *name,
   if (name)
     snprintf (space_db[i].name, sizeof (space_db[i].name), "%s", name);
   else
-          /* XXX: this can get longer than 256bytes ! */
-    snprintf (space_db[i].name, sizeof (space_db[i].name),
+  {
+    snprintf (space_db[i].name, sizeof (space_db[i].name)-1,
              "space-%.4f,%.4f_%.4f,%.4f_%.4f,%.4f_%.4f,%.4f_%s,%s,%s",
              wx,wy,rx,ry,bx,by,gx,gy,babl_get_name (space.trc[0]),
              babl_get_name(space.trc[1]), babl_get_name(space.trc[2]));
+    space_db[i].name[sizeof (space_db[i].name)-1]=0;
+  }
 
   babl_space_get_icc ((Babl*)&space_db[i], NULL);
   return (Babl*)&space_db[i];