)]}'
{"src/openvpn/platform.c":[{"author":{"_account_id":1000030,"name":"MaxF","email":"max@max-fillinger.net","username":"MaxF"},"change_message_id":"6bf6c44f76ae12d2c9397c98b71b1f0e5ecfa16f","unresolved":true,"context_lines":[{"line_number":84,"context_line":"    {"},{"line_number":85,"context_line":"#if defined(HAVE_GETPWNAM) \u0026\u0026 defined(HAVE_SETUID)"},{"line_number":86,"context_line":"        const struct passwd *pw \u003d getpwnam(username);"},{"line_number":87,"context_line":"        if (!pw)"},{"line_number":88,"context_line":"        {"},{"line_number":89,"context_line":"            msg(M_ERR, \"failed to find UID for user %s\", username);"},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":"        else"},{"line_number":92,"context_line":"        {"},{"line_number":93,"context_line":"            state-\u003euid \u003d pw-\u003epw_uid;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"933bb202_973498c6","line":90,"range":{"start_line":87,"start_character":0,"end_line":90,"end_character":9},"updated":"2025-09-24 16:33:31.000000000","message":"Shouldn\u0027t we set user_valid to false here? Or do we assume that the struct is initialized with 0?","commit_id":"ad0eb9957b50fd378ece5d2cb66f76dc3e307c95"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e9fd5ae1e8b7a1ffaf68b00af655641412fb55d8","unresolved":true,"context_lines":[{"line_number":84,"context_line":"    {"},{"line_number":85,"context_line":"#if defined(HAVE_GETPWNAM) \u0026\u0026 defined(HAVE_SETUID)"},{"line_number":86,"context_line":"        const struct passwd *pw \u003d getpwnam(username);"},{"line_number":87,"context_line":"        if (!pw)"},{"line_number":88,"context_line":"        {"},{"line_number":89,"context_line":"            msg(M_ERR, \"failed to find UID for user %s\", username);"},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":"        else"},{"line_number":92,"context_line":"        {"},{"line_number":93,"context_line":"            state-\u003euid \u003d pw-\u003epw_uid;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"a79064f0_5ff830e6","line":90,"range":{"start_line":87,"start_character":0,"end_line":90,"end_character":9},"in_reply_to":"933bb202_973498c6","updated":"2025-09-24 16:38:22.000000000","message":"Note the CLEAR() at the top of the function","commit_id":"ad0eb9957b50fd378ece5d2cb66f76dc3e307c95"},{"author":{"_account_id":1000030,"name":"MaxF","email":"max@max-fillinger.net","username":"MaxF"},"change_message_id":"fd188dcc70f926fdab4a7bc8275d451788f2c178","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    {"},{"line_number":85,"context_line":"#if defined(HAVE_GETPWNAM) \u0026\u0026 defined(HAVE_SETUID)"},{"line_number":86,"context_line":"        const struct passwd *pw \u003d getpwnam(username);"},{"line_number":87,"context_line":"        if (!pw)"},{"line_number":88,"context_line":"        {"},{"line_number":89,"context_line":"            msg(M_ERR, \"failed to find UID for user %s\", username);"},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":"        else"},{"line_number":92,"context_line":"        {"},{"line_number":93,"context_line":"            state-\u003euid \u003d pw-\u003epw_uid;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"cfa9da6d_0cb4d448","line":90,"range":{"start_line":87,"start_character":0,"end_line":90,"end_character":9},"in_reply_to":"a79064f0_5ff830e6","updated":"2025-09-26 16:16:40.000000000","message":"Oops, you\u0027re right!","commit_id":"ad0eb9957b50fd378ece5d2cb66f76dc3e307c95"},{"author":{"_account_id":1000030,"name":"MaxF","email":"max@max-fillinger.net","username":"MaxF"},"change_message_id":"6bf6c44f76ae12d2c9397c98b71b1f0e5ecfa16f","unresolved":true,"context_lines":[{"line_number":128,"context_line":"    {"},{"line_number":129,"context_line":"#if defined(HAVE_GETGRNAM) \u0026\u0026 defined(HAVE_SETGID)"},{"line_number":130,"context_line":"        const struct group *gr \u003d getgrnam(groupname);"},{"line_number":131,"context_line":"        if (!gr)"},{"line_number":132,"context_line":"        {"},{"line_number":133,"context_line":"            msg(M_ERR, \"failed to find GID for group %s\", groupname);"},{"line_number":134,"context_line":"        }"},{"line_number":135,"context_line":"        else"},{"line_number":136,"context_line":"        {"},{"line_number":137,"context_line":"            state-\u003egid \u003d gr-\u003egr_gid;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"a4d30325_3994e017","line":134,"range":{"start_line":131,"start_character":0,"end_line":134,"end_character":9},"updated":"2025-09-24 16:33:31.000000000","message":"Shouldn\u0027t we set group_valid to false here?","commit_id":"ad0eb9957b50fd378ece5d2cb66f76dc3e307c95"},{"author":{"_account_id":1000030,"name":"MaxF","email":"max@max-fillinger.net","username":"MaxF"},"change_message_id":"fd188dcc70f926fdab4a7bc8275d451788f2c178","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    {"},{"line_number":129,"context_line":"#if defined(HAVE_GETGRNAM) \u0026\u0026 defined(HAVE_SETGID)"},{"line_number":130,"context_line":"        const struct group *gr \u003d getgrnam(groupname);"},{"line_number":131,"context_line":"        if (!gr)"},{"line_number":132,"context_line":"        {"},{"line_number":133,"context_line":"            msg(M_ERR, \"failed to find GID for group %s\", groupname);"},{"line_number":134,"context_line":"        }"},{"line_number":135,"context_line":"        else"},{"line_number":136,"context_line":"        {"},{"line_number":137,"context_line":"            state-\u003egid \u003d gr-\u003egr_gid;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"65848078_10dc0c02","line":134,"range":{"start_line":131,"start_character":0,"end_line":134,"end_character":9},"in_reply_to":"98e9e861_73fba2fc","updated":"2025-09-26 16:16:40.000000000","message":"Done","commit_id":"ad0eb9957b50fd378ece5d2cb66f76dc3e307c95"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e9fd5ae1e8b7a1ffaf68b00af655641412fb55d8","unresolved":true,"context_lines":[{"line_number":128,"context_line":"    {"},{"line_number":129,"context_line":"#if defined(HAVE_GETGRNAM) \u0026\u0026 defined(HAVE_SETGID)"},{"line_number":130,"context_line":"        const struct group *gr \u003d getgrnam(groupname);"},{"line_number":131,"context_line":"        if (!gr)"},{"line_number":132,"context_line":"        {"},{"line_number":133,"context_line":"            msg(M_ERR, \"failed to find GID for group %s\", groupname);"},{"line_number":134,"context_line":"        }"},{"line_number":135,"context_line":"        else"},{"line_number":136,"context_line":"        {"},{"line_number":137,"context_line":"            state-\u003egid \u003d gr-\u003egr_gid;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"98e9e861_73fba2fc","line":134,"range":{"start_line":131,"start_character":0,"end_line":134,"end_character":9},"in_reply_to":"a4d30325_3994e017","updated":"2025-09-24 16:38:22.000000000","message":"Note the CLEAR() at the top of the function","commit_id":"ad0eb9957b50fd378ece5d2cb66f76dc3e307c95"}]}
