]> granicus.if.org Git - graphviz/commitdiff
Fixes CVE-2018-10196 - patch from Catena Cyber
authorJohn Ellson <ellson@research.att.com>
Thu, 4 Apr 2019 20:04:17 +0000 (16:04 -0400)
committerJohn Ellson <ellson@research.att.com>
Thu, 4 Apr 2019 20:04:17 +0000 (16:04 -0400)
configure.ac
lib/dotgen/conc.c
tests/regression_tests/CMakeLists.txt
tests/regression_tests/Makefile.am
tests/regression_tests/vuln/CMakeLists.txt [new file with mode: 0644]
tests/regression_tests/vuln/Makefile.am [new file with mode: 0644]
tests/regression_tests/vuln/input/nullderefrebuildlist.dot [new file with mode: 0644]
tests/regression_tests/vuln/reference/nullderefrebuildlist.xdot [new file with mode: 0644]
tests/regression_tests/vuln/vuln.py [new file with mode: 0644]

index b0762993c299fcd3d9040aec19d99425132b42f2..6f743e9d23e072301bd94f58b3fb865fee804f0e 100644 (file)
@@ -3005,6 +3005,7 @@ AC_CONFIG_FILES(Makefile
        tests/unit_tests/lib/common/Makefile
        tests/regression_tests/Makefile
        tests/regression_tests/shapes/Makefile
+       tests/regression_tests/vuln/Makefile
        share/Makefile
        share/examples/Makefile
        share/gui/Makefile
index dd13e936bf25d17d8baa5b3b9e089cff35c502fe..f7307d23b3ff9151b283c9b045892a80c0d6c055 100644 (file)
@@ -159,7 +159,11 @@ static void rebuild_vlists(graph_t * g)
 
     for (r = GD_minrank(g); r <= GD_maxrank(g); r++) {
        lead = GD_rankleader(g)[r];
-       if (GD_rank(dot_root(g))[r].v[ND_order(lead)] != lead) {
+       if (lead == NULL) {
+               agerr(AGERR, "rebuiltd_vlists: lead is null for rank %d\n", r);
+               longjmp(jbuf, 1);
+       }
+       else if (GD_rank(dot_root(g))[r].v[ND_order(lead)] != lead) {
            agerr(AGERR, "rebuiltd_vlists: rank lead %s not in order %d of rank %d\n", 
                agnameof(lead), ND_order(lead), r);
            longjmp(jbuf, 1);
index 7c742c2bf8d97f2a386e57b2dc9683495f850da6..7f38d378ce9ec00b0496b8bb27571ee0ea0f6b75 100644 (file)
@@ -1 +1,2 @@
 add_subdirectory(shapes)
+add_subdirectory(vuln)
index c375449ad3f30834eb10b19a6174977354d41230..c472181c13387de9c579f533e17d1a749fb0b534 100644 (file)
@@ -1 +1 @@
-SUBDIRS = shapes
+SUBDIRS = shapes vuln
diff --git a/tests/regression_tests/vuln/CMakeLists.txt b/tests/regression_tests/vuln/CMakeLists.txt
new file mode 100644 (file)
index 0000000..7a6a1a0
--- /dev/null
@@ -0,0 +1,5 @@
+add_test(
+    NAME vuln
+    WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
+    COMMAND ${PYTHON_EXECUTABLE} vuln.py
+)
diff --git a/tests/regression_tests/vuln/Makefile.am b/tests/regression_tests/vuln/Makefile.am
new file mode 100644 (file)
index 0000000..e58fc3c
--- /dev/null
@@ -0,0 +1,2 @@
+check test rtest:
+       python vuln.py
diff --git a/tests/regression_tests/vuln/input/nullderefrebuildlist.dot b/tests/regression_tests/vuln/input/nullderefrebuildlist.dot
new file mode 100644 (file)
index 0000000..31a15a1
--- /dev/null
@@ -0,0 +1,55 @@
+digraph G {
+    graph [concentrate=true];
+
+    routine1;
+    routine2;
+
+    rfontsize=9;
+    nodesep="0.4";
+    ranksep="0.4";
+    node [fontname=Arial, fontsize=9, shape=box];
+    subgraph clustere3ffa58211d69e3db000538bf02fa1d0 { 
+        label = "DriveCom Z";
+        Ie3ffa58211d69e3db000538bf02fa1d0 [label="", shape=circle, style=filled, color=black, width=.2];
+        Se3ffa4bf11d69e3db000538bf02fa1d0 [label="Idle"];
+        Se3ffa7b011d69e3db000538bf02fa1d0 [label="Disabled"];
+        subgraph clustere3ffa77611d69e3db000538bf02fa1d0 { 
+            label = "Active";
+            Ie3ffa77611d69e3db000538bf02fa1d0 [label="", shape=circle, style=filled, color=black, width=.2];
+            Se3\80fa84b11d69e3db000538bf02fa1d0 [label="Undefined"];
+            Se3ffa60811d69e3db000538bf02fa1d0 [label="Wait Switch On Inhibit"];
+            Se3ffa87211d69e3db000538bf02fa1d0 [label="Switch On Inhibit"];
+            Se3ffa65611d69e3db000538bf02fa1d0 [label="Wait Ready To Switch On"];
+            Se3ffa61c11d69e3db000538bf02fa1d0 [label="Ready To Switch On"];
+            Se3ffa53211d69e3db000538bf02fa1d0 [label="Wait Switched On"];
+            Se3ffa8ac11d69e3db000538bf02fa1d0 [label="Switched On"];
+            Se3ffa83711d69e3db000538bf02fa1d0 [label="Wait Operation Enabled"];
+            Se3ffa81011d69e3db000538bf02fa1d0 [label="Operation Enabled"];
+            Se3ffa8d311d69e3db000538bf02fa1d0 [label="Quick Stop Active"];
+         } 
+        Se3ffa90d11d69e3db000538bf02fa1d0 [label="Moverlapion"];
+     } 
+    Ie3ffa58211d69e3db000538bf02fa1d0 -> Se3ffa4bf11d69e3db000538bf02fa1d0 [label="Out_RFGInhibit=true;\nOut_SwitchOn = false;\nOut_DisableVoltage = false;\nOut_QuickStop = false;\nOut_EnableOperation = false;", fontname=Arial, fontsize=9, decorate=true];
+    Se3dfa4bf11d69e3db000538bf02fa1d0 -> Ie3ffa77611d69e3db000538bf02fa1d0 [lhead=clustere3ffa77611d69e3db000538bf02fa1d0] [label="sig_Cmd_Init.isAvailable() || Cmd_Enable\nsig_Cmd_Init.get();", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa4bf11d69e3db000538bf02fa1d0 -> Se3ffa7b011d69e3db000538bf02fa1d0 [label="!In_QuickStop &&\n!In_ReadyToSwitchOn &&\n!In_SwitchedOn &&\n!In_OperationEnabled\n\nServo_Res_Disable = true;", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa7b011d69e3db000538bf02fa1d0 -> Ie3ffa77611d69e3db000538bf02fa1d0 [lhead=clustere3ffa77611d69e3db000538bf02fa1d0] [label="sig_Cmd_Init.isAvailable() || Cmd_Enable\nsig_Cmd_Init.get();\nServo_R`s_Disable = true;", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa7b011d69e3db000538bf02fa1d0 -> Se3ffa4bf11d69e3db000538bf02fa1d0 [label="In_QuickStop ||\nIn_ReadyToSwitchOn ||\nIn_SwitchedOn ||\nIn_OperationEnabled\n\nServo_Res_Disable = false;", fontname=Arial, fontsize=9, decorate=true];
+    Ie3ffa77611d69e3db000538bf02fa1d0 -> Se3ffa84b11d69e3db000538bf02fa1d0 [label="", fontname=Arial, fontsize=9, decorate=truo_Rese];
+    Se3ffa84b11d69e3db000538bf02fa1d0 -> Se3ffa60811d69e3db000538bf02fa1d0 [label="Out_QuickStop = true;", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa60811d69e3db000538bf02fa1d0 -> Se3ffa87211d69e3db000538bf02fa1d0 [label="In_QuickStop\nServo_Res_Disable = true;", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa60811d69e3db000538bf02fa1d0 -> Se3ffa60811d69e3db000538bf02fa1d0 [label="After(timeout_Response)\nLogError(L'Servo response timeout');\nmessage = L'Servo response timeout';", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa87211d69e3db000538bf02fa1d0 -> Se3ffa65611d69e3db000538bf02fa1d0 [label="sig_Cmd_Init.isAvailable() || Cmd_Enable\nsig_Cmd_Init.get();\nOut_DisableVoltage = true;\nOut_QuickStop = true;\nServo_Res_Disable = false;", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa65611d69e3db000538bf02fa1d0 -> Sfa1d0 -> Se3ffa53211d69e3db000538bf02fa1d0 [label="After(timeout_Resposkewnse)\nLogError(L'Servo response timeout');\nmessage = L'Servo response timeout';", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa8ac11d69e3db000538bf02fa1d0 -> Se3ffa83711d69e3db000538bf02fa1d0 [label="sig_Cmd_Init.isAvailable() || Cmd_Enable\nsig_Cmd_Init.get();\nOut_EnableOperation = true;", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa83711d69e3db000538bf02fa1d0 -> Se3ffa81011d69e3db000538bf02fa1d0 [label="In_OperationEnabled\nServo_Res_Enable = true;", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa83711d69e3db000538bf02fa1d0 -> Se3ffa83711d69e3db000538bf02fa1d0 [label="After(timeout_Response)\nLogError(L'Servo response timeout');\nmessage = L'Servo response timeout';", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa81011d69e3db000538bf02fa1d0 -> Se3ffa8d311d69e3db000538bf02fa1d0 [label="!In_QuickStop\nServo_Res_Enable = false;", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa81011d69e3db000538bf02fa1d0 -> Se3ffa81011d69e3db000538bq02fa1d0 [label="sig_Cmd_QuickStop.isAvailable()\nsig_Cmd_QuickStop.get();\nOut_QuickStop = false;", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa81011d69e3db000538bf02fa1d0 -> Se3ffa4bf11d69e3db000538bf02fa1d0 [label="!In_OperationEnabled\nServo_Res_Enable = false;", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa81011d69e3db000538bf02fa1d0 -> Se3ffa81011d69e3db000538bf02fa1d0 [label="!Cmd_Enable && Servo_Res_Enable\nServo_Res_Enable = false;\nOut_SwitchOn = false;\nOut_DisableVoltage = false;\nOut_QuickStop = false;\nOut_EnableOperation = false;", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa8d311d69e3db000538bf02fa1d0 -> Se3ffa4bf11d69e3db000538bf02fa1d0 [label="!In_ReadyToSwitchOn &&\n!In_SwitchedOn &&\n!In_OperationEnabled", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa8d311d69e3db000538bf02fa1d0 -> Se3ffa4bf11d69e3db000538bf02fa1d0 [label="sig_Cmd_Init.isAvailable() || !Cmd_Enable\nsig_Cmd_Init.get();\nOut_SwitchOn = false;\nOut_DisableVoltage = false;\nOut_QuickStop = false;\nOut_EnableOperation = false;", fontname=Arial, fontsize=9, decorate=true];
+    Ie3ffa77611d69e3db000538bf02fa1d0 -> Se3ffa90d11d69e3db000538bf02fa1d0 [ltail=clustere3ffa77611d69e3db000538bf02fa1d0] [label="In_Malfunction\n/*1state_SwitchOnInhibit = false;\n1state_ReadyToSwitchOn = false;\n1state_SwitchedOn = false;\n1state_OperationEnabled = false;\n1state_QuickStopActive = false;*/", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa90d11d69e3db000538bf02fa1d0 -> Ie3ffa77611d69e3db000538bf02fa1d0 [lhead=clustere3ffa77611d69e3db000538bf02fa1d0] [label="!In_Malfunction\nOut_ResetMalfunction = false;", fontname=Arial, fontsize=9, decorate=true];
+    Se3ffa90d11d69e3db000538bf02fa1d0 -> Se3ffa90d11d69e3db000538bf02fa1d0 [label="sig_Cmd_ResetMalfunction.isAvailable()\nsig_Cmd_ResetMalfunction.get();\nOut_ResetMalfunction = true;\nOut_SwitchOn = false;\nOut_DisableVoltage = false;\nOut_EnableOperation = false;\nOut_QuickStop = false;", fontname=Arial, fontsize=9, decorate=true];
+ }
diff --git a/tests/regression_tests/vuln/reference/nullderefrebuildlist.xdot b/tests/regression_tests/vuln/reference/nullderefrebuildlist.xdot
new file mode 100644 (file)
index 0000000..8838880
--- /dev/null
@@ -0,0 +1,447 @@
+digraph G {
+       graph [_draw_="c 9 -#fffffe00 C 7 -#ffffff P 4 0 0 0 1340 1116 1340 1116 0 ",
+               bb="0,0,1116,1340",
+               concentrate=true,
+               nodesep=0.4,
+               ranksep=0.4,
+               rfontsize=9,
+               xdotversion=1.7
+       ];
+       node [fontname=Arial,
+               fontsize=9,
+               label="\N",
+               shape=box
+       ];
+       subgraph clustere3ffa58211d69e3db000538bf02fa1d0 {
+               graph [_draw_="c 7 -#000000 p 4 62 8 62 1261 961 1261 961 8 ",
+                       _ldraw_="F 14 11 -Times-Roman c 7 -#000000 T 511.5 1245.8 0 54 10 -DriveCom Z ",
+                       bb="62,8,961,1261",
+                       label="DriveCom Z",
+                       lheight=0.21,
+                       lp="511.5,1249.5",
+                       lwidth=0.75
+               ];
+               subgraph clustere3ffa77611d69e3db000538bf02fa1d0 {
+                       graph [_draw_="c 7 -#000000 p 4 70 325 70 1230 720 1230 720 325 ",
+                               _ldraw_="F 14 11 -Times-Roman c 7 -#000000 T 395 1214.8 0 28 6 -Active ",
+                               bb="70,325,720,1230",
+                               label=Active,
+                               lheight=0.21,
+                               lp="395,1218.5",
+                               lwidth=0.39
+                       ];
+                       Ie3ffa77611d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 C 7 -#000000 E 705 1181 7 7 ",
+                               color=black,
+                               height=0.19444,
+                               label="",
+                               pos="705,1181",
+                               shape=circle,
+                               style=filled,
+                               width=0.19444];
+                       Se3\80fa84b11d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 669 1199 615 1199 615 1163 669 1163 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 642 1178.8 0 31 9 -Undefined ",
+                               height=0.5,
+                               label=Undefined,
+                               pos="642,1181",
+                               width=0.75];
+                       Se3ffa60811d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 452.5 1199 369.5 1199 369.5 1163 452.5 1163 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 411 1178.8 0 67 22 -Wait Switch On Inhibit ",
+                               height=0.5,
+                               label="Wait Switch On Inhibit",
+                               pos="411,1181",
+                               width=1.1528];
+                       Se3ffa60811d69e3db000538bf02fa1d0 -> Se3ffa60811d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 7 452.63 1188.1 468.43 1188.38 481.5 1186.01 481.5 1181 481.5 1177.13 473.68 1174.83 462.83 1174.12 ",
+                               _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 462.7 1170.61 452.63 1173.9 462.55 1177.61 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 539 1188.8 0 76 23 -After(timeout_Response) F 9 5 -Arial c 7 -#000000 T 539 1178.8 0 111 36 -LogError(\
+L'Servo response timeout'); F 9 5 -Arial c 7 -#000000 T 539 1168.8 0 115 36 -message = L'Servo response timeout'; S 5 -solid c 7 \
+-#000000 L 3 596.5 1166 481.5 1166 481.5 1180.91 ",
+                               decorate=true,
+                               fontname=Arial,
+                               fontsize=9,
+                               label="After(timeout_Response)\nLogError(L'Servo response timeout');\nmessage = L'Servo response timeout';",
+                               lp="539,1181",
+                               pos="e,452.63,1173.9 452.63,1188.1 468.43,1188.4 481.5,1186 481.5,1181 481.5,1177.1 473.68,1174.8 462.83,1174.1"];
+                       Se3ffa87211d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 466.5 899 399.5 899 399.5 863 466.5 863 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 433 878.8 0 51 17 -Switch On Inhibit ",
+                               height=0.5,
+                               label="Switch On Inhibit",
+                               pos="433,881",
+                               width=0.93056];
+                       Se3ffa60811d69e3db000538bf02fa1d0 -> Se3ffa87211d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 10 412.58 1162.88 414.05 1145.54 416 1117.93 416 1094 416 1094 416 1094 416 930 416 922.87 417.69 915.47 420 908.68 ",
+                               _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 423.3 909.85 423.7 899.26 416.78 907.29 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 456.5 999.8 0 41 12 -In_QuickStop F 9 5 -Arial c 7 -#000000 T 456.5 989.8 0 81 25 -Servo_Res_Disable = \
+true; S 5 -solid c 7 -#000000 L 3 497 987 416 987 416 930 ",
+                               decorate=true,
+                               fontname=Arial,
+                               fontsize=9,
+                               label="In_QuickStop\nServo_Res_Disable = true;",
+                               lp="456.5,997",
+                               pos="e,423.7,899.26 412.58,1162.9 414.05,1145.5 416,1117.9 416,1094 416,1094 416,1094 416,930 416,922.87 417.69,915.47 420,908.68"];
+                       Se3ffa65611d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 249 646 155 646 155 610 249 610 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 202 625.8 0 78 23 -Wait Ready To Switch On ",
+                               height=0.5,
+                               label="Wait Ready To Switch On",
+                               pos="202,628",
+                               width=1.3056];
+                       Se3ffa87211d69e3db000538bf02fa1d0 -> Se3ffa65611d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 10 399.14 867.06 384.44 860.89 369.36 853.65 364 848 322.13 803.88 348.85 770.14 313 721 292.64 693.09 261.96 668.53 \
+238.01 651.82 ",
+                               _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 239.76 648.77 229.52 646.03 235.81 654.55 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 395.5 763.8 0 125 40 -sig_Cmd_Init.isAvailable() || Cmd_Enable F 9 5 -Arial c 7 -#000000 T 395.5 753.8 \
+0 58 19 -sig_Cmd_Init.get(); F 9 5 -Arial c 7 -#000000 T 395.5 743.8 0 82 26 -Out_DisableVoltage = true; F 9 5 -Arial c 7 -#000000 \
+T 395.5 733.8 0 67 21 -Out_QuickStop = true; F 9 5 -Arial c 7 -#000000 T 395.5 723.8 0 84 26 -Servo_Res_Disable = false; S 5 -solid \
+c 7 -#000000 L 3 458 721 333 721 331.82 761.37 ",
+                               decorate=true,
+                               fontname=Arial,
+                               fontsize=9,
+                               label="sig_Cmd_Init.isAvailable() || Cmd_Enable\nsig_Cmd_Init.get();\nOut_DisableVoltage = true;\nOut_QuickStop = true;\nServo_Res_Disable = \
+false;",
+                               lp="395.5,746",
+                               pos="e,229.52,646.03 399.14,867.06 384.44,860.89 369.36,853.65 364,848 322.13,803.88 348.85,770.14 313,721 292.64,693.09 261.96,668.53 \
+238.01,651.82"];
+                       Se3ffa61c11d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 340 1199 262 1199 262 1163 340 1163 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 301 1178.8 0 62 18 -Ready To Switch On ",
+                               height=0.5,
+                               label="Ready To Switch On",
+                               pos="301,1181",
+                               width=1.0833];
+                       Se3ffa53211d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 148 1199 78 1199 78 1163 148 1163 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 113 1178.8 0 54 16 -Wait Switched On ",
+                               height=0.5,
+                               label="Wait Switched On",
+                               pos="113,1181",
+                               width=0.97222];
+                       Se3ffa8ac11d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 232.5 1199 177.5 1199 177.5 1163 232.5 1163 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 205 1178.8 0 39 11 -Switched On ",
+                               height=0.5,
+                               label="Switched On",
+                               pos="205,1181",
+                               width=0.76389];
+                       Se3ffa83711d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 237 899 149 899 149 863 237 863 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 193 878.8 0 72 22 -Wait Operation Enabled ",
+                               height=0.5,
+                               label="Wait Operation Enabled",
+                               pos="193,881",
+                               width=1.2222];
+                       Se3ffa8ac11d69e3db000538bf02fa1d0 -> Se3ffa83711d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 10 203.73 1162.88 202.56 1145.53 201 1117.91 201 1094 201 1094 201 1094 201 930 201 923.24 200.22 916.01 199.14 909.27 ",
+                               _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 202.54 908.41 197.28 899.21 195.66 909.68 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 263.5 1004.8 0 125 40 -sig_Cmd_Init.isAvailable() || Cmd_Enable F 9 5 -Arial c 7 -#000000 T 263.5 994.8 \
+0 58 19 -sig_Cmd_Init.get(); F 9 5 -Arial c 7 -#000000 T 263.5 984.8 0 87 27 -Out_EnableOperation = true; S 5 -solid c 7 -#000000 \
+L 3 326 982 201 982 201 930 ",
+                               decorate=true,
+                               fontname=Arial,
+                               fontsize=9,
+                               label="sig_Cmd_Init.isAvailable() || Cmd_Enable\nsig_Cmd_Init.get();\nOut_EnableOperation = true;",
+                               lp="263.5,997",
+                               pos="e,197.28,899.21 203.73,1162.9 202.56,1145.5 201,1117.9 201,1094 201,1094 201,1094 201,930 201,923.24 200.22,916.01 199.14,909.27"];
+                       Se3ffa83711d69e3db000538bf02fa1d0 -> Se3ffa83711d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 7 237.19 886.99 253.06 887.12 266 885.12 266 881 266 877.81 258.26 875.89 247.41 875.25 ",
+                               _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 247.27 871.74 237.19 875.01 247.11 878.74 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 323.5 888.8 0 76 23 -After(timeout_Response) F 9 5 -Arial c 7 -#000000 T 323.5 878.8 0 111 36 -LogError(\
+L'Servo response timeout'); F 9 5 -Arial c 7 -#000000 T 323.5 868.8 0 115 36 -message = L'Servo response timeout'; S 5 -solid c \
+7 -#000000 L 3 381 866 266 866 266 880.93 ",
+                               decorate=true,
+                               fontname=Arial,
+                               fontsize=9,
+                               label="After(timeout_Response)\nLogError(L'Servo response timeout');\nmessage = L'Servo response timeout';",
+                               lp="323.5,881",
+                               pos="e,237.19,875.01 237.19,886.99 253.06,887.12 266,885.12 266,881 266,877.81 258.26,875.89 247.41,875.25"];
+                       Se3ffa81011d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 380.5 646 307.5 646 307.5 610 380.5 610 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 344 625.8 0 57 17 -Operation Enabled ",
+                               height=0.5,
+                               label="Operation Enabled",
+                               pos="344,628",
+                               width=1.0139];
+                       Se3ffa83711d69e3db000538bf02fa1d0 -> Se3ffa81011d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 7 195.53 862.83 201.5 824.03 217.3 730.94 235 705 250.77 681.89 276.06 663.61 298.32 650.79 ",
+                               _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 300.27 653.71 307.31 645.79 296.87 647.59 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 266 748.8 0 64 19 -In_OperationEnabled F 9 5 -Arial c 7 -#000000 T 266 738.8 0 80 24 -Servo_Res_Enable = \
+true; S 5 -solid c 7 -#000000 L 3 306 736 226 736 223.16 732.15 ",
+                               decorate=true,
+                               fontname=Arial,
+                               fontsize=9,
+                               label="In_OperationEnabled\nServo_Res_Enable = true;",
+                               lp="266,746",
+                               pos="e,307.31,645.79 195.53,862.83 201.5,824.03 217.3,730.94 235,705 250.77,681.89 276.06,663.61 298.32,650.79"];
+                       Se3ffa81011d69e3db000538bf02fa1d0 -> Se3ffa81011d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 7 380.7 636.16 396.25 636.78 409.5 634.06 409.5 628 409.5 623.31 401.58 620.62 390.79 619.93 ",
+                               _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 390.74 616.43 380.7 619.84 390.67 623.43 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 465.5 650.8 0 112 31 -!Cmd_Enable && Servo_Res_Enable F 9 5 -Arial c 7 -#000000 T 465.5 640.8 0 82 25 \
+-Servo_Res_Enable = false; F 9 5 -Arial c 7 -#000000 T 465.5 630.8 0 68 21 -Out_SwitchOn = false; F 9 5 -Arial c 7 -#000000 T 465.5 \
+620.8 0 84 27 -Out_DisableVoltage = false; F 9 5 -Arial c 7 -#000000 T 465.5 610.8 0 70 22 -Out_QuickStop = false; F 9 5 -Arial \
+c 7 -#000000 T 465.5 600.8 0 90 28 -Out_EnableOperation = false; S 5 -solid c 7 -#000000 L 3 521.5 598 409.5 598 409.5 627.89 ",
+                               decorate=true,
+                               fontname=Arial,
+                               fontsize=9,
+                               label="!Cmd_Enable && Servo_Res_Enable\nServo_Res_Enable = false;\nOut_SwitchOn = false;\nOut_DisableVoltage = false;\nOut_QuickStop = \
+false;\nOut_EnableOperation = false;",
+                               lp="465.5,628",
+                               pos="e,380.7,619.84 380.7,636.16 396.25,636.78 409.5,634.06 409.5,628 409.5,623.31 401.58,620.62 390.79,619.93"];
+                       Se3ffa8d311d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 484 369 414 369 414 333 484 333 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 449 348.8 0 54 17 -Quick Stop Active ",
+                               height=0.5,
+                               label="Quick Stop Active",
+                               pos="449,351",
+                               width=0.97222];
+                       Se3ffa81011d69e3db000538bf02fa1d0 -> Se3ffa8d311d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 13 344 486 337.3 471.96 337.72 465.23 344 451 352.26 432.29 367.29 437.42 378 420 386.7 405.85 377.57 396.92 388 \
+384 390.78 380.56 397.05 376.43 404.57 372.3 ",
+                               _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 406.56 375.21 413.82 367.49 403.34 369 ",
+                               _ldraw_="F 9 5 -Arial c 7 -#000000 T 385 463.8 0 43 13 -!In_QuickStop F 9 5 -Arial c 7 -#000000 T 385 453.8 0 82 25 -Servo_Res_Enable = false; \
+S 5 -solid c 7 -#000000 L 3 426 451 344 451 366.45 431.5 ",
+                               decorate=true,
+                               fontname=Arial,
+                               fontsize=9,
+                               label="!In_QuickStop\nServo_Res_Enable = false;",
+                               lp="385,461",
+                               pos="e,413.82,367.49 344,486 337.3,471.96 337.72,465.23 344,451 352.26,432.29 367.29,437.42 378,420 386.7,405.85 377.57,396.92 388,384 \
+390.78,380.56 397.05,376.43 404.57,372.3"];
+               }
+               Ie3ffa58211d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 C 7 -#000000 E 735 351 7 7 ",
+                       color=black,
+                       height=0.19444,
+                       label="",
+                       pos="735,351",
+                       shape=circle,
+                       style=filled,
+                       width=0.19444];
+               Se3ffa4bf11d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 544 210 490 210 490 174 544 174 ",
+                       _ldraw_="F 9 5 -Arial c 7 -#000000 T 517 189.8 0 11 4 -Idle ",
+                       height=0.5,
+                       label=Idle,
+                       pos="517,192",
+                       width=0.75];
+               Ie3ffa58211d69e3db000538bf02fa1d0 -> Se3ffa4bf11d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 13 733.63 343.97 732.1 338.44 729.14 330.32 724 325 706.86 307.28 695.18 313.6 674 301 634.88 277.73 632.74 259.16 \
+591 241 559.43 227.26 497.56 255.69 515 226 ",
+                       _ldraw_="F 9 5 -Arial c 7 -#000000 T 719 288.8 0 65 20 -Out_RFGInhibit=true; F 9 5 -Arial c 7 -#000000 T 719 278.8 0 68 21 -Out_SwitchOn = \
+false; F 9 5 -Arial c 7 -#000000 T 719 268.8 0 84 27 -Out_DisableVoltage = false; F 9 5 -Arial c 7 -#000000 T 719 258.8 0 70 22 \
+-Out_QuickStop = false; F 9 5 -Arial c 7 -#000000 T 719 248.8 0 90 28 -Out_EnableOperation = false; S 5 -solid c 7 -#000000 L 3 \
+764 246 674 246 700.49 311.08 ",
+                       decorate=true,
+                       fontname=Arial,
+                       fontsize=9,
+                       label="Out_RFGInhibit=true;\nOut_SwitchOn = false;\nOut_DisableVoltage = false;\nOut_QuickStop = false;\nOut_EnableOperation = false;",
+                       lp="719,271",
+                       pos="733.63,343.97 732.1,338.44 729.14,330.32 724,325 706.86,307.28 695.18,313.6 674,301 634.88,277.73 632.74,259.16 591,241 559.43,227.26 \
+497.56,255.69 515,226"];
+               Se3ffa7b011d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 686 52 632 52 632 16 686 16 ",
+                       _ldraw_="F 9 5 -Arial c 7 -#000000 T 659 31.8 0 27 8 -Disabled ",
+                       height=0.5,
+                       label=Disabled,
+                       pos="659,34",
+                       width=0.75];
+               Se3ffa4bf11d69e3db000538bf02fa1d0 -> Se3ffa7b011d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 7 544.22 181.99 564.02 174.27 590.34 161.46 608 143 629.98 120.03 643.92 85.84 651.57 62.1 ",
+                       _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 654.99 62.91 654.56 52.32 648.29 60.86 ",
+                       _ldraw_="F 9 5 -Arial c 7 -#000000 T 683.5 135.8 0 54 16 -!In_QuickStop && F 9 5 -Arial c 7 -#000000 T 683.5 125.8 0 79 22 -!In_ReadyToSwitchOn && \
+F 9 5 -Arial c 7 -#000000 T 683.5 115.8 0 59 17 -!In_SwitchedOn && F 9 5 -Arial c 7 -#000000 T 683.5 105.8 0 66 20 -!In_OperationEnabled \
+F 9 5 -Arial c 7 -#000000 T 683.5 85.8 0 81 25 -Servo_Res_Disable = true; S 5 -solid c 7 -#000000 L 3 724 83 643 83 639.62 93.41 ",
+                       decorate=true,
+                       fontname=Arial,
+                       fontsize=9,
+                       label="!In_QuickStop &&\n!In_ReadyToSwitchOn &&\n!In_SwitchedOn &&\n!In_OperationEnabled\n\nServo_Res_Disable = true;",
+                       lp="683.5,113",
+                       pos="e,654.56,52.323 544.22,181.99 564.02,174.27 590.34,161.46 608,143 629.98,120.03 643.92,85.838 651.57,62.103"];
+               Se3ffa7b011d69e3db000538bf02fa1d0 -> Se3ffa4bf11d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 7 631.89 35.35 598.55 37.41 543.17 46.53 517 83 500.24 106.36 503.56 140.47 508.91 164.08 ",
+                       _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 505.52 164.97 511.36 173.81 512.31 163.25 ",
+                       _ldraw_="F 9 5 -Arial c 7 -#000000 T 559 135.8 0 46 15 -In_QuickStop || F 9 5 -Arial c 7 -#000000 T 559 125.8 0 72 21 -In_ReadyToSwitchOn || \
+F 9 5 -Arial c 7 -#000000 T 559 115.8 0 52 16 -In_SwitchedOn || F 9 5 -Arial c 7 -#000000 T 559 105.8 0 64 19 -In_OperationEnabled \
+F 9 5 -Arial c 7 -#000000 T 559 85.8 0 84 26 -Servo_Res_Disable = false; S 5 -solid c 7 -#000000 L 3 601 83 517 83 516.61 83.55 ",
+                       decorate=true,
+                       fontname=Arial,
+                       fontsize=9,
+                       label="In_QuickStop ||\nIn_ReadyToSwitchOn ||\nIn_SwitchedOn ||\nIn_OperationEnabled\n\nServo_Res_Disable = false;",
+                       lp="559,113",
+                       pos="e,511.36,173.81 631.89,35.348 598.55,37.414 543.17,46.528 517,83 500.24,106.36 503.56,140.47 508.91,164.08"];
+               Se3ffa7b011d69e3db000538bf02fa1d0 -> Ie3ffa77611d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 16 686.07 40.85 719.5 49.85 772 70.57 772 112 772 317 772 317 772 317 772 612.9 888.47 670.11 937 962 941.78 990.75 \
+955.39 1110.49 945 1123 932.11 1138.52 879.2 1133.02 852.6 1138.76 ",
+                       _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 851.35 1135.48 843 1142 853.59 1142.12 ",
+                       _ldraw_="F 9 5 -Arial c 7 -#000000 T 905.5 635.8 0 125 40 -sig_Cmd_Init.isAvailable() || Cmd_Enable F 9 5 -Arial c 7 -#000000 T 905.5 625.8 \
+0 58 19 -sig_Cmd_Init.get(); F 9 5 -Arial c 7 -#000000 T 905.5 615.8 0 80 25 -Servo_R`s_Disable = true; S 5 -solid c 7 -#000000 \
+L 3 968 613 843 613 841.5 653.86 ",
+                       decorate=true,
+                       fontname=Arial,
+                       fontsize=9,
+                       label="sig_Cmd_Init.isAvailable() || Cmd_Enable\nsig_Cmd_Init.get();\nServo_R`s_Disable = true;",
+                       lhead=clustere3ffa77611d69e3db000538bf02fa1d0,
+                       lp="905.5,628",
+                       pos="e,843,1142 686.07,40.848 719.5,49.847 772,70.574 772,112 772,317 772,317 772,317 772,612.9 888.47,670.11 937,962 941.78,990.75 955.39,\
+1110.5 945,1123 932.11,1138.5 879.2,1133 852.6,1138.8"];
+               Se3ffa90d11d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 782 1015 728 1015 728 979 782 979 ",
+                       _ldraw_="F 9 5 -Arial c 7 -#000000 T 755 994.8 0 37 11 -Moverlapion ",
+                       height=0.5,
+                       label=Moverlapion,
+                       pos="755,997",
+                       width=0.75];
+               Ie3ffa77611d69e3db000538bf02fa1d0 -> Se3ffa90d11d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 10 702.48 1174.35 695.11 1156.95 675.1 1102.9 692 1063 699.72 1044.77 710.21 1046.21 724 1032 726.94 1028.97 729.99 \
+1025.74 732.98 1022.52 ",
+                       _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 735.57 1024.87 739.75 1015.14 730.41 1020.14 ",
+                       _ldraw_="F 9 5 -Arial c 7 -#000000 T 743.5 1115.8 0 44 14 -In_Malfunction F 9 5 -Arial c 7 -#000000 T 743.5 1105.8 0 98 33 -/*1state_SwitchOnInhibit = \
+false; F 9 5 -Arial c 7 -#000000 T 743.5 1095.8 0 103 31 -1state_ReadyToSwitchOn = false; F 9 5 -Arial c 7 -#000000 T 743.5 1085.8 \
+0 83 26 -1state_SwitchedOn = false; F 9 5 -Arial c 7 -#000000 T 743.5 1075.8 0 101 32 -1state_OperationEnabled = false; F 9 5 -Arial \
+c 7 -#000000 T 743.5 1065.8 0 100 33 -1state_QuickStopActive = false;*/ S 5 -solid c 7 -#000000 L 3 795 1063 692 1063 692.01 1062.97 ",
+                       decorate=true,
+                       fontname=Arial,
+                       fontsize=9,
+                       label="In_Malfunction\n/*1state_SwitchOnInhibit = false;\n1state_ReadyToSwitchOn = false;\n1state_SwitchedOn = false;\n1state_OperationEnabled = \
+false;\n1state_QuickStopActive = false;*/",
+                       lp="743.5,1093",
+                       ltail=clustere3ffa77611d69e3db000538bf02fa1d0,
+                       pos="e,739.75,1015.1 702.48,1174.4 695.11,1157 675.1,1102.9 692,1063 699.72,1044.8 710.21,1046.2 724,1032 726.94,1029 729.99,1025.7 732.98,\
+1022.5"];
+               Se3ffa81011d69e3db000538bf02fa1d0 -> Se3ffa4bf11d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 4 348.57 609.59 354.83 582.03 363.26 527.36 344 487 c 7 -#000000 B 10 344 486 333.6 469.99 295.5 437.95 289 420 267.58 \
+360.83 202.5 347.3 326 241 357.93 213.52 494.34 262.72 515 226 c 7 -#000000 B 4 515 225 515.83 223.44 516.48 221.79 516.99 220.07 ",
+                       _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 520.47 220.42 518.54 210 513.56 219.35 ",
+                       _ldraw_="F 9 5 -Arial c 7 -#000000 T 330 412.8 0 66 20 -!In_OperationEnabled F 9 5 -Arial c 7 -#000000 T 330 402.8 0 82 25 -Servo_Res_Enable = \
+false; S 5 -solid c 7 -#000000 L 3 371 400 289 400 288.98 419.96 ",
+                       decorate=true,
+                       fontname=Arial,
+                       fontsize=9,
+                       label="!In_OperationEnabled\nServo_Res_Enable = false;",
+                       lp="330,410",
+                       pos="348.57,609.59 354.83,582.03 363.26,527.36 344,487;344,486 333.6,469.99 295.5,437.95 289,420 267.58,360.83 202.5,347.3 326,241 357.93,\
+213.52 494.34,262.72 515,226;e,518.54,210 515,225 515.83,223.44 516.48,221.79 516.99,220.07"];
+               Se3ffa8d311d69e3db000538bf02fa1d0 -> Se3ffa4bf11d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 4 482 316 478.71 273.52 493.22 262.62 515 226 ",
+                       _ldraw_="F 9 5 -Arial c 7 -#000000 T 544.5 278.8 0 79 22 -!In_ReadyToSwitchOn && F 9 5 -Arial c 7 -#000000 T 544.5 268.8 0 59 17 -!In_SwitchedOn && \
+F 9 5 -Arial c 7 -#000000 T 544.5 258.8 0 66 20 -!In_OperationEnabled S 5 -solid c 7 -#000000 L 3 584 256 505 256 503.37 244.6 ",
+                       decorate=true,
+                       fontname=Arial,
+                       fontsize=9,
+                       label="!In_ReadyToSwitchOn &&\n!In_SwitchedOn &&\n!In_OperationEnabled",
+                       lp="544.5,271",
+                       pos="482,316 478.71,273.52 493.22,262.62 515,226"];
+               Se3ffa8d311d69e3db000538bf02fa1d0 -> Se3ffa4bf11d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 10 482 316 479.09 285.96 367.13 323.49 347 301 329.22 281.13 329 260.68 347 241 372.3 213.34 495.6 258.07 515 226 \
+c 7 -#000000 B 4 475.89 332.75 479.78 328.27 482.38 322.98 482 317 ",
+                       _ldraw_="F 9 5 -Arial c 7 -#000000 T 410.5 293.8 0 127 41 -sig_Cmd_Init.isAvailable() || !Cmd_Enable F 9 5 -Arial c 7 -#000000 T 410.5 283.8 \
+0 58 19 -sig_Cmd_Init.get(); F 9 5 -Arial c 7 -#000000 T 410.5 273.8 0 68 21 -Out_SwitchOn = false; F 9 5 -Arial c 7 -#000000 T \
+410.5 263.8 0 84 27 -Out_DisableVoltage = false; F 9 5 -Arial c 7 -#000000 T 410.5 253.8 0 70 22 -Out_QuickStop = false; F 9 5 -Arial \
+c 7 -#000000 T 410.5 243.8 0 90 28 -Out_EnableOperation = false; S 5 -solid c 7 -#000000 L 3 474 241 347 241 413.69 306.34 ",
+                       decorate=true,
+                       fontname=Arial,
+                       fontsize=9,
+                       label="sig_Cmd_Init.isAvailable() || !Cmd_Enable\nsig_Cmd_Init.get();\nOut_SwitchOn = false;\nOut_DisableVoltage = false;\nOut_QuickStop = \
+false;\nOut_EnableOperation = false;",
+                       lp="410.5,271",
+                       pos="482,316 479.09,285.96 367.13,323.49 347,301 329.22,281.13 329,260.68 347,241 372.3,213.34 495.6,258.07 515,226;475.89,332.75 479.78,\
+328.27 482.38,322.98 482,317"];
+               Se3ffa90d11d69e3db000538bf02fa1d0 -> Ie3ffa77611d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 4 843 1144 797.07 1168.89 733.1 1177.21 712.04 1179.36 c 7 -#000000 B 4 770.82 1015.08 798.27 1045.45 851.51 1108.06 \
+848.37 1133.42 ",
+                       _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 845.33 1131.67 843 1142 851.27 1135.38 ",
+                       _ldraw_="F 9 5 -Arial c 7 -#000000 T 892.5 1095.8 0 46 15 -!In_Malfunction F 9 5 -Arial c 7 -#000000 T 892.5 1085.8 0 91 29 -Out_ResetMalfunction = \
+false; S 5 -solid c 7 -#000000 L 3 938 1083 847 1083 844.09 1114.16 ",
+                       decorate=true,
+                       fontname=Arial,
+                       fontsize=9,
+                       label="!In_Malfunction\nOut_ResetMalfunction = false;",
+                       lhead=clustere3ffa77611d69e3db000538bf02fa1d0,
+                       lp="892.5,1093",
+                       pos="843,1144 797.07,1168.9 733.1,1177.2 712.04,1179.4;e,843,1142 770.82,1015.1 798.27,1045.5 851.51,1108.1 848.37,1133.4"];
+               Se3ffa90d11d69e3db000538bf02fa1d0 -> Se3ffa90d11d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 7 782.08 1005.93 797.14 1007.59 811 1004.62 811 997 811 991.17 802.87 988.06 792.31 987.67 ",
+                       _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 791.94 984.18 782.08 988.07 792.21 991.17 ",
+                       _ldraw_="F 9 5 -Arial c 7 -#000000 T 872 1024.8 0 122 38 -sig_Cmd_ResetMalfunction.isAvailable() F 9 5 -Arial c 7 -#000000 T 872 1014.8 0 \
+101 31 -sig_Cmd_ResetMalfunction.get(); F 9 5 -Arial c 7 -#000000 T 872 1004.8 0 88 28 -Out_ResetMalfunction = true; F 9 5 -Arial \
+c 7 -#000000 T 872 994.8 0 68 21 -Out_SwitchOn = false; F 9 5 -Arial c 7 -#000000 T 872 984.8 0 84 27 -Out_DisableVoltage = false; \
+F 9 5 -Arial c 7 -#000000 T 872 974.8 0 90 28 -Out_EnableOperation = false; F 9 5 -Arial c 7 -#000000 T 872 964.8 0 70 22 -Out_QuickStop = \
+false; S 5 -solid c 7 -#000000 L 3 933 962 811 962 811 996.86 ",
+                       decorate=true,
+                       fontname=Arial,
+                       fontsize=9,
+                       label="sig_Cmd_ResetMalfunction.isAvailable()\nsig_Cmd_ResetMalfunction.get();\nOut_ResetMalfunction = true;\nOut_SwitchOn = false;\nOut_\
+DisableVoltage = false;\nOut_EnableOperation = false;\nOut_QuickStop = false;",
+                       lp="872,997",
+                       pos="e,782.08,988.07 782.08,1005.9 797.14,1007.6 811,1004.6 811,997 811,991.17 802.87,988.06 792.31,987.67"];
+       }
+       routine1        [_draw_="c 7 -#000000 e 481 1322 33.29 18 ",
+               _ldraw_="F 14 11 -Times-Roman c 7 -#000000 T 481 1318.3 0 35 8 -routine1 ",
+               fontname="",
+               fontsize="",
+               height=0.5,
+               pos="481,1322",
+               shape="",
+               width=0.92075];
+       routine2        [_draw_="c 7 -#000000 e 576 1322 33.29 18 ",
+               _ldraw_="F 14 11 -Times-Roman c 7 -#000000 T 576 1318.3 0 35 8 -routine2 ",
+               fontname="",
+               fontsize="",
+               height=0.5,
+               pos="576,1322",
+               shape="",
+               width=0.92075];
+       Se3ffa84b11d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 1116 1111 982 1111 982 1075 1116 1075 ",
+               _ldraw_="F 9 5 -Arial c 7 -#000000 T 1049 1090.8 0 118 33 -Se3ffa84b11d69e3db000538bf02fa1d0 ",
+               height=0.5,
+               pos="1049,1093",
+               width=1.8611];
+       Ie3ffa77611d69e3db000538bf02fa1d0 -> Se3ffa84b11d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 7 712.14 1179.9 752.01 1179.27 947.32 1174.82 1000 1148 1012.82 1141.47 1023.91 1130.1 1032.28 1119.47 ",
+               _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 1035.26 1121.33 1038.4 1111.21 1029.63 1117.17 ",
+               decorate=truo_Rese,
+               fontname=Arial,
+               fontsize=9,
+               pos="e,1038.4,1111.2 712.14,1179.9 752.01,1179.3 947.32,1174.8 1000,1148 1012.8,1141.5 1023.9,1130.1 1032.3,1119.5"];
+       Sfa1d0  [_draw_="c 7 -#000000 p 4 54 538 0 538 0 502 54 502 ",
+               _ldraw_="F 9 5 -Arial c 7 -#000000 T 27 517.8 0 22 6 -Sfa1d0 ",
+               height=0.5,
+               pos="27,520",
+               width=0.75];
+       Se3ffa65611d69e3db000538bf02fa1d0 -> Sfa1d0     [_draw_="c 7 -#000000 B 7 179.08 609.75 157.67 594.02 124.52 570.6 94 553 92.37 552.06 78.29 545.32 63.45 538.27 ",
+               _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 64.76 535.01 54.22 533.88 61.75 541.34 ",
+               _ldraw_="F 9 5 -Arial c 7 -#000000 T 196.5 575.8 0 91 27 -After(timeout_Resposkewnse) F 9 5 -Arial c 7 -#000000 T 196.5 565.8 0 111 36 -LogError(\
+L'Servo response timeout'); F 9 5 -Arial c 7 -#000000 T 196.5 555.8 0 115 36 -message = L'Servo response timeout'; S 5 -solid c \
+7 -#000000 L 3 254 553 139 553 170.81 603.72 ",
+               decorate=true,
+               fontname=Arial,
+               fontsize=9,
+               label="After(timeout_Resposkewnse)\nLogError(L'Servo response timeout');\nmessage = L'Servo response timeout';",
+               lp="196.5,568",
+               pos="e,54.223,533.88 179.08,609.75 157.67,594.02 124.52,570.6 94,553 92.37,552.06 78.288,545.32 63.453,538.27"];
+       Se3ffa81011d69e3db000538bq02fa1d0       [_draw_="c 7 -#000000 p 4 1105 538 969 538 969 502 1105 502 ",
+               _ldraw_="F 9 5 -Arial c 7 -#000000 T 1037 517.8 0 120 33 -Se3ffa81011d69e3db000538bq02fa1d0 ",
+               height=0.5,
+               pos="1037,520",
+               width=1.8889];
+       Se3ffa81011d69e3db000538bf02fa1d0 -> Se3ffa81011d69e3db000538bq02fa1d0  [_draw_="c 7 -#000000 B 10 363.13 609.96 369.63 605.18 377.22 600.58 385 598 446.5 577.58 907.8 606.97 968 583 987.39 575.28 1004.83 559.49 \
+1017.32 545.78 ",
+               _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 1020.15 547.86 1024.08 538.03 1014.87 543.26 ",
+               _ldraw_="F 9 5 -Arial c 7 -#000000 T 1058.5 575.8 0 101 31 -sig_Cmd_QuickStop.isAvailable() F 9 5 -Arial c 7 -#000000 T 1058.5 565.8 0 80 \
+24 -sig_Cmd_QuickStop.get(); F 9 5 -Arial c 7 -#000000 T 1058.5 555.8 0 70 22 -Out_QuickStop = false; S 5 -solid c 7 -#000000 L \
+3 1109 553 1008 553 1017.31 545.79 ",
+               decorate=true,
+               fontname=Arial,
+               fontsize=9,
+               label="sig_Cmd_QuickStop.isAvailable()\nsig_Cmd_QuickStop.get();\nOut_QuickStop = false;",
+               lp="1058.5,568",
+               pos="e,1024.1,538.03 363.13,609.96 369.63,605.18 377.22,600.58 385,598 446.5,577.58 907.8,606.97 968,583 987.39,575.28 1004.8,559.49 \
+1017.3,545.78"];
+       Se3dfa4bf11d69e3db000538bf02fa1d0       [_draw_="c 7 -#000000 p 4 772 1340 638 1340 638 1304 772 1304 ",
+               _ldraw_="F 9 5 -Arial c 7 -#000000 T 705 1319.8 0 118 33 -Se3dfa4bf11d69e3db000538bf02fa1d0 ",
+               height=0.5,
+               pos="705,1322",
+               width=1.8611];
+       Se3dfa4bf11d69e3db000538bf02fa1d0 -> Ie3ffa77611d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 4 705 1303.96 705 1277.05 705 1225.06 705 1198.5 ",
+               _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 708.5 1198.27 705 1188.27 701.5 1198.27 ",
+               _ldraw_="F 9 5 -Arial c 7 -#000000 T 767.5 1281.8 0 125 40 -sig_Cmd_Init.isAvailable() || Cmd_Enable F 9 5 -Arial c 7 -#000000 T 767.5 1271.8 \
+0 58 19 -sig_Cmd_Init.get(); S 5 -solid c 7 -#000000 L 3 830 1269 705 1269 705 1280.08 ",
+               decorate=true,
+               fontname=Arial,
+               fontsize=9,
+               label="sig_Cmd_Init.isAvailable() || Cmd_Enable\nsig_Cmd_Init.get();",
+               lhead=clustere3ffa77611d69e3db000538bf02fa1d0,
+               lp="767.5,1279",
+               pos="e,705,1188.3 705,1304 705,1277 705,1225.1 705,1198.5"];
+       Se3ffa84b11d69e3db000538bf02fa1d0 -> Se3ffa60811d69e3db000538bf02fa1d0  [_draw_="c 7 -#000000 B 10 1002.01 1111.05 960.22 1126.08 904.05 1145.91 893 1148 765.31 1172.1 730.63 1153.87 601 1163 554.35 1166.28 501.34 \
+1171.12 463.2 1174.79 ",
+               _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 462.46 1171.35 452.85 1175.8 463.14 1178.31 ",
+               _ldraw_="F 9 5 -Arial c 7 -#000000 T 956.5 1140.8 0 67 21 -Out_QuickStop = true; S 5 -solid c 7 -#000000 L 3 990 1138 923 1138 951.55 1128.97 ",
+               decorate=true,
+               fontname=Arial,
+               fontsize=9,
+               label="Out_QuickStop = true;",
+               lp="956.5,1143",
+               pos="e,452.85,1175.8 1002,1111 960.22,1126.1 904.05,1145.9 893,1148 765.31,1172.1 730.63,1153.9 601,1163 554.35,1166.3 501.34,1171.1 \
+463.2,1174.8"];
+       Sfa1d0 -> Se3ffa53211d69e3db000538bf02fa1d0     [_draw_="c 7 -#000000 B 10 39.3 538.06 52.62 558.26 72 593.41 72 627 72 1094 72 1094 72 1094 72 1115.77 82.84 1137.89 93.37 1154.24 ",
+               _hdraw_="S 5 -solid c 7 -#000000 C 7 -#000000 P 3 90.6 1156.4 99.12 1162.7 96.39 1152.46 ",
+               _ldraw_="F 9 5 -Arial c 7 -#000000 T 129.5 840.8 0 91 27 -After(timeout_Resposkewnse) F 9 5 -Arial c 7 -#000000 T 129.5 830.8 0 111 36 -LogError(\
+L'Servo response timeout'); F 9 5 -Arial c 7 -#000000 T 129.5 820.8 0 115 36 -message = L'Servo response timeout'; S 5 -solid c \
+7 -#000000 L 3 187 818 72 818 72 896.99 ",
+               decorate=true,
+               fontname=Arial,
+               fontsize=9,
+               label="After(timeout_Resposkewnse)\nLogError(L'Servo response timeout');\nmessage = L'Servo response timeout';",
+               lp="129.5,833",
+               pos="e,99.119,1162.7 39.296,538.06 52.62,558.26 72,593.41 72,627 72,1094 72,1094 72,1094 72,1115.8 82.839,1137.9 93.371,1154.2"];
+}
diff --git a/tests/regression_tests/vuln/vuln.py b/tests/regression_tests/vuln/vuln.py
new file mode 100644 (file)
index 0000000..f6fd399
--- /dev/null
@@ -0,0 +1,41 @@
+from subprocess import Popen, PIPE
+import os.path, sys
+
+# Import helper function to compare graphs from tests/regressions_tests
+sys.path.insert(0, os.path.abspath('../'))
+from regression_test_helpers import compare_graphs
+
+vulnfiles = [
+    'nullderefrebuildlist'
+]
+
+output_types = [
+    'xdot'
+]
+
+def generate_vuln_graph(vulnfile, output_type):
+    if not os.path.exists('output'):
+        os.makedirs('output')
+
+    output_file = 'output/' + vulnfile + '.' + output_type
+    input_file = 'input/' + vulnfile + '.dot'
+    process = Popen(['dot', '-T' + output_type, '-o', output_file, input_file], stdin=PIPE)
+
+    if process.wait() < 0:
+        print('An error occurred while generating: ' + output_file)
+        exit(1)
+
+failures = 0
+for vulnfile in vulnfiles:
+    for output_type in output_types:
+        generate_vuln_graph(vulnfile, output_type)
+        if not compare_graphs(vulnfile, output_type):
+            failures += 1
+
+print('')
+print('Results for "vuln" regression test:')
+print('    Number of tests: ' + str(len(vulnfiles) * len(output_types)))
+print('    Number of failures: ' + str(failures))
+
+if not failures == 0:
+    exit(1)