[Bro-Dev] [JIRA] (BIT-1176) Using an undefined function in a when statement causes a segfault
[ https://bro-tracker.atlassian.net/browse/BIT-1176?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=18610#comment-18610 ] Jon Siwek commented on BIT-1176: What's the expected behavior? It doesn't look like something easily detected at parse-time, so ideas: (1) fatal error message at run-time with a core dump should the code ever be executed (which may be infrequently if it's buried within complicated logic). (2) nonfatal error message at run-time, but the when body can still be triggered as normal if the RHS is ever assigned a value. topic/jsiwek/bit-1176 does (2). If that seems ok, please flip ticket to a merge request. Using an undefined function in a when statement causes a segfault - Key: BIT-1176 URL: https://bro-tracker.atlassian.net/browse/BIT-1176 Project: Bro Issue Tracker Issue Type: Problem Components: Bro Affects Versions: git/master Reporter: Johanna Amann Fix For: 2.4 Attachments: crashme.bro Running the following script crashes bro with a null-pointer exception: {code:title=crashMe.bro} global crashMe: function():string; when( local result = crashMe() ) { print result; } {code} Backtrace: {code} * thread #1: tid = 0x226111, 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x30) frame #0: 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323 320 321int Val::IsZero() const 322{ - 323switch ( type-InternalType() ) { 324case TYPE_INTERNAL_INT: return val.int_val == 0; 325case TYPE_INTERNAL_UNSIGNED:return val.uint_val == 0; 326case TYPE_INTERNAL_DOUBLE: return val.double_val == 0.0; (lldb) bt * thread #1: tid = 0x226111, 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x30) * frame #0: 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323 frame #1: 0x00010020b452 bro`Trigger::Eval(this=0x000105d45d60) + 578 at Trigger.cc:209 frame #2: 0x00010020ae95 bro`Trigger(this=0x000105d45d60, arg_cond=0x000104a00390, arg_body=0x000104a00500, arg_timeout_stmts=0x, arg_timeout=0x, arg_frame=0x7fff5fbfec80, arg_is_return=false, arg_location=0x0001049fb7a0) + 1285 at Trigger.cc:140 frame #3: 0x00010020a98a bro`Trigger(this=0x000105d45d60, arg_cond=0x000104a00390, arg_body=0x000104a00500, arg_timeout_stmts=0x, arg_timeout=0x, arg_frame=0x7fff5fbfec80, arg_is_return=false, arg_location=0x0001049fb7a0) + 106 at Trigger.cc:147 frame #4: 0x00010020566f bro`WhenStmt::Exec(this=0x000104a00900, f=0x7fff5fbfec80, flow=0x7fff5fbfece8) const + 239 at Stmt.cc:2041 frame #5: 0x000100203204 bro`StmtList::Exec(this=0x0001049fbe80, f=0x7fff5fbfec80, flow=0x7fff5fbfece8) const + 228 at Stmt.cc:1639 frame #6: 0x00010003d244 bro`main(argc=2, argv=0x7fff5fbffa40) + 15476 at main.cc:1116 {code} -- This message was sent by Atlassian JIRA (v6.4-OD-07-004#64005) ___ bro-dev mailing list bro-dev@bro.org http://mailman.icsi.berkeley.edu/mailman/listinfo/bro-dev
[Bro-Dev] [JIRA] (BIT-1176) Using an undefined function in a when statement causes a segfault
[ https://bro-tracker.atlassian.net/browse/BIT-1176?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Johanna Amann updated BIT-1176: --- Status: Merge Request (was: Open) Using an undefined function in a when statement causes a segfault - Key: BIT-1176 URL: https://bro-tracker.atlassian.net/browse/BIT-1176 Project: Bro Issue Tracker Issue Type: Problem Components: Bro Affects Versions: git/master Reporter: Johanna Amann Fix For: 2.4 Attachments: crashme.bro Running the following script crashes bro with a null-pointer exception: {code:title=crashMe.bro} global crashMe: function():string; when( local result = crashMe() ) { print result; } {code} Backtrace: {code} * thread #1: tid = 0x226111, 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x30) frame #0: 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323 320 321int Val::IsZero() const 322{ - 323switch ( type-InternalType() ) { 324case TYPE_INTERNAL_INT: return val.int_val == 0; 325case TYPE_INTERNAL_UNSIGNED:return val.uint_val == 0; 326case TYPE_INTERNAL_DOUBLE: return val.double_val == 0.0; (lldb) bt * thread #1: tid = 0x226111, 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x30) * frame #0: 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323 frame #1: 0x00010020b452 bro`Trigger::Eval(this=0x000105d45d60) + 578 at Trigger.cc:209 frame #2: 0x00010020ae95 bro`Trigger(this=0x000105d45d60, arg_cond=0x000104a00390, arg_body=0x000104a00500, arg_timeout_stmts=0x, arg_timeout=0x, arg_frame=0x7fff5fbfec80, arg_is_return=false, arg_location=0x0001049fb7a0) + 1285 at Trigger.cc:140 frame #3: 0x00010020a98a bro`Trigger(this=0x000105d45d60, arg_cond=0x000104a00390, arg_body=0x000104a00500, arg_timeout_stmts=0x, arg_timeout=0x, arg_frame=0x7fff5fbfec80, arg_is_return=false, arg_location=0x0001049fb7a0) + 106 at Trigger.cc:147 frame #4: 0x00010020566f bro`WhenStmt::Exec(this=0x000104a00900, f=0x7fff5fbfec80, flow=0x7fff5fbfece8) const + 239 at Stmt.cc:2041 frame #5: 0x000100203204 bro`StmtList::Exec(this=0x0001049fbe80, f=0x7fff5fbfec80, flow=0x7fff5fbfece8) const + 228 at Stmt.cc:1639 frame #6: 0x00010003d244 bro`main(argc=2, argv=0x7fff5fbffa40) + 15476 at main.cc:1116 {code} -- This message was sent by Atlassian JIRA (v6.4-OD-07-004#64005) ___ bro-dev mailing list bro-dev@bro.org http://mailman.icsi.berkeley.edu/mailman/listinfo/bro-dev
[Bro-Dev] [JIRA] (BIT-1176) Using an undefined function in a when statement causes a segfault
[ https://bro-tracker.atlassian.net/browse/BIT-1176?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=18611#comment-18611 ] Johanna Amann commented on BIT-1176: (2) is fine from my point of view, flipping to merge request. Thank you. Using an undefined function in a when statement causes a segfault - Key: BIT-1176 URL: https://bro-tracker.atlassian.net/browse/BIT-1176 Project: Bro Issue Tracker Issue Type: Problem Components: Bro Affects Versions: git/master Reporter: Johanna Amann Fix For: 2.4 Attachments: crashme.bro Running the following script crashes bro with a null-pointer exception: {code:title=crashMe.bro} global crashMe: function():string; when( local result = crashMe() ) { print result; } {code} Backtrace: {code} * thread #1: tid = 0x226111, 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x30) frame #0: 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323 320 321int Val::IsZero() const 322{ - 323switch ( type-InternalType() ) { 324case TYPE_INTERNAL_INT: return val.int_val == 0; 325case TYPE_INTERNAL_UNSIGNED:return val.uint_val == 0; 326case TYPE_INTERNAL_DOUBLE: return val.double_val == 0.0; (lldb) bt * thread #1: tid = 0x226111, 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x30) * frame #0: 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323 frame #1: 0x00010020b452 bro`Trigger::Eval(this=0x000105d45d60) + 578 at Trigger.cc:209 frame #2: 0x00010020ae95 bro`Trigger(this=0x000105d45d60, arg_cond=0x000104a00390, arg_body=0x000104a00500, arg_timeout_stmts=0x, arg_timeout=0x, arg_frame=0x7fff5fbfec80, arg_is_return=false, arg_location=0x0001049fb7a0) + 1285 at Trigger.cc:140 frame #3: 0x00010020a98a bro`Trigger(this=0x000105d45d60, arg_cond=0x000104a00390, arg_body=0x000104a00500, arg_timeout_stmts=0x, arg_timeout=0x, arg_frame=0x7fff5fbfec80, arg_is_return=false, arg_location=0x0001049fb7a0) + 106 at Trigger.cc:147 frame #4: 0x00010020566f bro`WhenStmt::Exec(this=0x000104a00900, f=0x7fff5fbfec80, flow=0x7fff5fbfece8) const + 239 at Stmt.cc:2041 frame #5: 0x000100203204 bro`StmtList::Exec(this=0x0001049fbe80, f=0x7fff5fbfec80, flow=0x7fff5fbfece8) const + 228 at Stmt.cc:1639 frame #6: 0x00010003d244 bro`main(argc=2, argv=0x7fff5fbffa40) + 15476 at main.cc:1116 {code} -- This message was sent by Atlassian JIRA (v6.4-OD-07-004#64005) ___ bro-dev mailing list bro-dev@bro.org http://mailman.icsi.berkeley.edu/mailman/listinfo/bro-dev
[Bro-Dev] [JIRA] (BIT-1176) Using an undefined function in a when statement causes a segfault
[ https://bro-tracker.atlassian.net/browse/BIT-1176?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Johanna Amann updated BIT-1176: --- Assignee: Robin Sommer Using an undefined function in a when statement causes a segfault - Key: BIT-1176 URL: https://bro-tracker.atlassian.net/browse/BIT-1176 Project: Bro Issue Tracker Issue Type: Problem Components: Bro Affects Versions: git/master Reporter: Johanna Amann Assignee: Robin Sommer Fix For: 2.4 Attachments: crashme.bro Running the following script crashes bro with a null-pointer exception: {code:title=crashMe.bro} global crashMe: function():string; when( local result = crashMe() ) { print result; } {code} Backtrace: {code} * thread #1: tid = 0x226111, 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x30) frame #0: 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323 320 321int Val::IsZero() const 322{ - 323switch ( type-InternalType() ) { 324case TYPE_INTERNAL_INT: return val.int_val == 0; 325case TYPE_INTERNAL_UNSIGNED:return val.uint_val == 0; 326case TYPE_INTERNAL_DOUBLE: return val.double_val == 0.0; (lldb) bt * thread #1: tid = 0x226111, 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x30) * frame #0: 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323 frame #1: 0x00010020b452 bro`Trigger::Eval(this=0x000105d45d60) + 578 at Trigger.cc:209 frame #2: 0x00010020ae95 bro`Trigger(this=0x000105d45d60, arg_cond=0x000104a00390, arg_body=0x000104a00500, arg_timeout_stmts=0x, arg_timeout=0x, arg_frame=0x7fff5fbfec80, arg_is_return=false, arg_location=0x0001049fb7a0) + 1285 at Trigger.cc:140 frame #3: 0x00010020a98a bro`Trigger(this=0x000105d45d60, arg_cond=0x000104a00390, arg_body=0x000104a00500, arg_timeout_stmts=0x, arg_timeout=0x, arg_frame=0x7fff5fbfec80, arg_is_return=false, arg_location=0x0001049fb7a0) + 106 at Trigger.cc:147 frame #4: 0x00010020566f bro`WhenStmt::Exec(this=0x000104a00900, f=0x7fff5fbfec80, flow=0x7fff5fbfece8) const + 239 at Stmt.cc:2041 frame #5: 0x000100203204 bro`StmtList::Exec(this=0x0001049fbe80, f=0x7fff5fbfec80, flow=0x7fff5fbfece8) const + 228 at Stmt.cc:1639 frame #6: 0x00010003d244 bro`main(argc=2, argv=0x7fff5fbffa40) + 15476 at main.cc:1116 {code} -- This message was sent by Atlassian JIRA (v6.4-OD-07-004#64005) ___ bro-dev mailing list bro-dev@bro.org http://mailman.icsi.berkeley.edu/mailman/listinfo/bro-dev
[Bro-Dev] [JIRA] (BIT-1176) Using an undefined function in a when statement causes a segfault
[ https://bro-tracker.atlassian.net/browse/BIT-1176?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=18609#comment-18609 ] Johanna Amann commented on BIT-1176: As Christian described in BIT-1282 with another testcase, this does not only work with functions but with all kinds of variables. Using an undefined function in a when statement causes a segfault - Key: BIT-1176 URL: https://bro-tracker.atlassian.net/browse/BIT-1176 Project: Bro Issue Tracker Issue Type: Problem Components: Bro Affects Versions: git/master Reporter: Johanna Amann Fix For: 2.4 Attachments: crashme.bro Running the following script crashes bro with a null-pointer exception: {code:title=crashMe.bro} global crashMe: function():string; when( local result = crashMe() ) { print result; } {code} Backtrace: {code} * thread #1: tid = 0x226111, 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x30) frame #0: 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323 320 321int Val::IsZero() const 322{ - 323switch ( type-InternalType() ) { 324case TYPE_INTERNAL_INT: return val.int_val == 0; 325case TYPE_INTERNAL_UNSIGNED:return val.uint_val == 0; 326case TYPE_INTERNAL_DOUBLE: return val.double_val == 0.0; (lldb) bt * thread #1: tid = 0x226111, 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x30) * frame #0: 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323 frame #1: 0x00010020b452 bro`Trigger::Eval(this=0x000105d45d60) + 578 at Trigger.cc:209 frame #2: 0x00010020ae95 bro`Trigger(this=0x000105d45d60, arg_cond=0x000104a00390, arg_body=0x000104a00500, arg_timeout_stmts=0x, arg_timeout=0x, arg_frame=0x7fff5fbfec80, arg_is_return=false, arg_location=0x0001049fb7a0) + 1285 at Trigger.cc:140 frame #3: 0x00010020a98a bro`Trigger(this=0x000105d45d60, arg_cond=0x000104a00390, arg_body=0x000104a00500, arg_timeout_stmts=0x, arg_timeout=0x, arg_frame=0x7fff5fbfec80, arg_is_return=false, arg_location=0x0001049fb7a0) + 106 at Trigger.cc:147 frame #4: 0x00010020566f bro`WhenStmt::Exec(this=0x000104a00900, f=0x7fff5fbfec80, flow=0x7fff5fbfece8) const + 239 at Stmt.cc:2041 frame #5: 0x000100203204 bro`StmtList::Exec(this=0x0001049fbe80, f=0x7fff5fbfec80, flow=0x7fff5fbfece8) const + 228 at Stmt.cc:1639 frame #6: 0x00010003d244 bro`main(argc=2, argv=0x7fff5fbffa40) + 15476 at main.cc:1116 {code} -- This message was sent by Atlassian JIRA (v6.4-OD-07-004#64005) ___ bro-dev mailing list bro-dev@bro.org http://mailman.icsi.berkeley.edu/mailman/listinfo/bro-dev
[Bro-Dev] [JIRA] (BIT-1176) Using an undefined function in a when statement causes a segfault
Bernhard Amann created BIT-1176: --- Summary: Using an undefined function in a when statement causes a segfault Key: BIT-1176 URL: https://bro-tracker.atlassian.net/browse/BIT-1176 Project: Bro Issue Tracker Issue Type: Problem Components: Bro Affects Versions: git/master Reporter: Bernhard Amann Fix For: 2.3 Attachments: crashme.bro Running the following script crashes bro with a null-pointer exception: {code:title=crashMe.bro} global crashMe: function():string; when( local result = crashMe() ) { print result; } {code} Backtrace: {code} * thread #1: tid = 0x226111, 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x30) frame #0: 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323 320 321 int Val::IsZero() const 322 { - 323 switch ( type-InternalType() ) { 324 case TYPE_INTERNAL_INT: return val.int_val == 0; 325 case TYPE_INTERNAL_UNSIGNED:return val.uint_val == 0; 326 case TYPE_INTERNAL_DOUBLE: return val.double_val == 0.0; (lldb) bt * thread #1: tid = 0x226111, 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x30) * frame #0: 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323 frame #1: 0x00010020b452 bro`Trigger::Eval(this=0x000105d45d60) + 578 at Trigger.cc:209 frame #2: 0x00010020ae95 bro`Trigger(this=0x000105d45d60, arg_cond=0x000104a00390, arg_body=0x000104a00500, arg_timeout_stmts=0x, arg_timeout=0x, arg_frame=0x7fff5fbfec80, arg_is_return=false, arg_location=0x0001049fb7a0) + 1285 at Trigger.cc:140 frame #3: 0x00010020a98a bro`Trigger(this=0x000105d45d60, arg_cond=0x000104a00390, arg_body=0x000104a00500, arg_timeout_stmts=0x, arg_timeout=0x, arg_frame=0x7fff5fbfec80, arg_is_return=false, arg_location=0x0001049fb7a0) + 106 at Trigger.cc:147 frame #4: 0x00010020566f bro`WhenStmt::Exec(this=0x000104a00900, f=0x7fff5fbfec80, flow=0x7fff5fbfece8) const + 239 at Stmt.cc:2041 frame #5: 0x000100203204 bro`StmtList::Exec(this=0x0001049fbe80, f=0x7fff5fbfec80, flow=0x7fff5fbfece8) const + 228 at Stmt.cc:1639 frame #6: 0x00010003d244 bro`main(argc=2, argv=0x7fff5fbffa40) + 15476 at main.cc:1116 {code} -- This message was sent by Atlassian JIRA (v6.3-OD-01-067#6307) ___ bro-dev mailing list bro-dev@bro.org http://mailman.icsi.berkeley.edu/mailman/listinfo/bro-dev
[Bro-Dev] [JIRA] (BIT-1176) Using an undefined function in a when statement causes a segfault
[ https://bro-tracker.atlassian.net/browse/BIT-1176?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Robin Sommer updated BIT-1176: -- Fix Version/s: (was: 2.3) 2.4 Using an undefined function in a when statement causes a segfault - Key: BIT-1176 URL: https://bro-tracker.atlassian.net/browse/BIT-1176 Project: Bro Issue Tracker Issue Type: Problem Components: Bro Affects Versions: git/master Reporter: Bernhard Amann Fix For: 2.4 Attachments: crashme.bro Running the following script crashes bro with a null-pointer exception: {code:title=crashMe.bro} global crashMe: function():string; when( local result = crashMe() ) { print result; } {code} Backtrace: {code} * thread #1: tid = 0x226111, 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x30) frame #0: 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323 320 321int Val::IsZero() const 322{ - 323switch ( type-InternalType() ) { 324case TYPE_INTERNAL_INT: return val.int_val == 0; 325case TYPE_INTERNAL_UNSIGNED:return val.uint_val == 0; 326case TYPE_INTERNAL_DOUBLE: return val.double_val == 0.0; (lldb) bt * thread #1: tid = 0x226111, 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x30) * frame #0: 0x00010022bddf bro`Val::IsZero(this=0x) const + 15 at Val.cc:323 frame #1: 0x00010020b452 bro`Trigger::Eval(this=0x000105d45d60) + 578 at Trigger.cc:209 frame #2: 0x00010020ae95 bro`Trigger(this=0x000105d45d60, arg_cond=0x000104a00390, arg_body=0x000104a00500, arg_timeout_stmts=0x, arg_timeout=0x, arg_frame=0x7fff5fbfec80, arg_is_return=false, arg_location=0x0001049fb7a0) + 1285 at Trigger.cc:140 frame #3: 0x00010020a98a bro`Trigger(this=0x000105d45d60, arg_cond=0x000104a00390, arg_body=0x000104a00500, arg_timeout_stmts=0x, arg_timeout=0x, arg_frame=0x7fff5fbfec80, arg_is_return=false, arg_location=0x0001049fb7a0) + 106 at Trigger.cc:147 frame #4: 0x00010020566f bro`WhenStmt::Exec(this=0x000104a00900, f=0x7fff5fbfec80, flow=0x7fff5fbfece8) const + 239 at Stmt.cc:2041 frame #5: 0x000100203204 bro`StmtList::Exec(this=0x0001049fbe80, f=0x7fff5fbfec80, flow=0x7fff5fbfece8) const + 228 at Stmt.cc:1639 frame #6: 0x00010003d244 bro`main(argc=2, argv=0x7fff5fbffa40) + 15476 at main.cc:1116 {code} -- This message was sent by Atlassian JIRA (v6.3-OD-01-067#6307) ___ bro-dev mailing list bro-dev@bro.org http://mailman.icsi.berkeley.edu/mailman/listinfo/bro-dev