]> git.sur5r.net Git - i3/i3/commitdiff
Fix v3 to v4 crash with a variable with longer name than value
authorOrestis Floros <orestisf1993@gmail.com>
Sat, 9 Dec 2017 17:50:43 +0000 (19:50 +0200)
committerOrestis Floros <orestisf1993@gmail.com>
Sat, 9 Dec 2017 17:50:43 +0000 (19:50 +0200)
src/config_parser.c
testcases/t/183-config-variables.t

index 4e66c91109f3f8f37d0dfddbeacc2da6545cb23c..a27cfc5f2bee9879d2fde8049334630e39201fe7 100644 (file)
@@ -1065,7 +1065,7 @@ bool parse_file(const char *f, bool use_nagbar) {
     int version = detect_version(buf);
     if (version == 3) {
         /* We need to convert this v3 configuration */
-        char *converted = migrate_config(new, stbuf.st_size);
+        char *converted = migrate_config(new, strlen(new));
         if (converted != NULL) {
             ELOG("\n");
             ELOG("****************************************************************\n");
index 4b225214addca64097047ac2722408fb18395ebe..d135ed59ccf145f42beacce4ebf2f26357abd32e 100644 (file)
@@ -95,7 +95,19 @@ EOT
 
 is(launch_get_border($config), 'none', 'no border');
 
+#####################################################################
+# test that variables with longer name than value don't crash i3 with
+# v3 to v4 conversion.
+# See: #3076
+#####################################################################
+
+$config = <<'EOT';
+set $var a
+EOT
 
+my $pid = launch_with_config($config);
+does_i3_live;
+exit_gracefully($pid);
 
 done_testing;