)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"58d305df4c0d0a1049ce25e1631d1a3f0905c7a8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"971d34e6_85a5a718","updated":"2026-05-20 16:33:24.000000000","message":"LGTM. However, I have not reviewed the compat implementation.","commit_id":"96d7c0ec791afbd3c412969bab407ac1a37314df"}],"src/openvpn/options_util.c":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"efde9109dcbff5c671872960b66db8581b05a984","unresolved":true,"context_lines":[{"line_number":48,"context_line":"        message \u003d strstr(reason, \"]\") + 1;"},{"line_number":49,"context_line":"        /* null terminate the substring to only looks for flags between [ and ] */"},{"line_number":50,"context_line":"        *endofflags \u003d \u0027\\x00\u0027;"},{"line_number":51,"context_line":"        char *lasts;"},{"line_number":52,"context_line":"        const char *token \u003d strtok_r(m, \"[,\", \u0026lasts);"},{"line_number":53,"context_line":"        while (token)"},{"line_number":54,"context_line":"        {"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"0fcc165a_f8562a96","line":51,"updated":"2026-05-20 15:48:21.000000000","message":"The Linux man page for strtok_r warns \"On some implementations, *saveptr is required to be NULL on the first call to strtok_r() that is being used to parse str.\" So maybe we should initialize it to NULL instead of giving it uninitialized?","commit_id":"c2db2045f18ba56609fadd81e23bf1bbd5830f11"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"cd976d57b12cc298823843829d0f6dcfc2a68a6c","unresolved":true,"context_lines":[{"line_number":48,"context_line":"        message \u003d strstr(reason, \"]\") + 1;"},{"line_number":49,"context_line":"        /* null terminate the substring to only looks for flags between [ and ] */"},{"line_number":50,"context_line":"        *endofflags \u003d \u0027\\x00\u0027;"},{"line_number":51,"context_line":"        char *lasts;"},{"line_number":52,"context_line":"        const char *token \u003d strtok_r(m, \"[,\", \u0026lasts);"},{"line_number":53,"context_line":"        while (token)"},{"line_number":54,"context_line":"        {"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"9ddf5d84_137b19de","line":51,"in_reply_to":"0fcc165a_f8562a96","updated":"2026-05-20 16:01:56.000000000","message":"Sounds good. Will amend the patch to do that.","commit_id":"c2db2045f18ba56609fadd81e23bf1bbd5830f11"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"e688182029ceea88afd13b725f86b6f83d078f46","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        message \u003d strstr(reason, \"]\") + 1;"},{"line_number":49,"context_line":"        /* null terminate the substring to only looks for flags between [ and ] */"},{"line_number":50,"context_line":"        *endofflags \u003d \u0027\\x00\u0027;"},{"line_number":51,"context_line":"        char *lasts;"},{"line_number":52,"context_line":"        const char *token \u003d strtok_r(m, \"[,\", \u0026lasts);"},{"line_number":53,"context_line":"        while (token)"},{"line_number":54,"context_line":"        {"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"be9f75b1_d2478461","line":51,"in_reply_to":"9ddf5d84_137b19de","updated":"2026-05-20 16:18:20.000000000","message":"Done","commit_id":"c2db2045f18ba56609fadd81e23bf1bbd5830f11"}]}
