Skip to content

Commit de55584

Browse files
committed
Make sure we don't leak in the error paths
1 parent 94c5cfd commit de55584

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

src/sentry_os.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,12 +233,12 @@ static
233233
sentry_value_t
234234
get_linux_os_release(const char *os_rel_path)
235235
{
236-
sentry_value_t os_dist = sentry_value_new_object();
237236
const int fd = open(os_rel_path, O_RDONLY);
238237
if (fd == -1) {
239238
return sentry_value_new_null();
240239
}
241240

241+
sentry_value_t os_dist = sentry_value_new_object();
242242
char buffer[OS_RELEASE_MAX_LINE_SIZE];
243243
ssize_t bytes_read;
244244
ssize_t buffer_rest = 0;
@@ -284,8 +284,8 @@ static
284284
}
285285

286286
if (bytes_read == -1) {
287-
close(fd);
288-
return sentry_value_new_null();
287+
sentry_value_decref(os_dist);
288+
os_dist = sentry_value_new_null();
289289
}
290290

291291
close(fd);

tests/unit/test_os_release.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,3 +182,13 @@ SENTRY_TEST(os_releases_snapshot)
182182
sentry__path_free(test_data_path);
183183
#endif // !defined(SENTRY_PLATFORM_LINUX) || defined(SENTRY_PLATFORM_ANDROID)
184184
}
185+
186+
SENTRY_TEST(os_release_non_existent_files)
187+
{
188+
#if !defined(SENTRY_PLATFORM_LINUX) || defined(SENTRY_PLATFORM_ANDROID)
189+
SKIP_TEST();
190+
#else
191+
sentry_value_t os_release = get_linux_os_release("invalid_path");
192+
TEST_ASSERT(sentry_value_is_null(os_release));
193+
#endif // !defined(SENTRY_PLATFORM_LINUX) || defined(SENTRY_PLATFORM_ANDROID)
194+
}

tests/unit/tests.inc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ XX(options_sdk_name_custom)
6060
XX(options_sdk_name_defaults)
6161
XX(options_sdk_name_invalid)
6262
XX(os)
63+
XX(os_release_non_existent_files)
6364
XX(os_releases_snapshot)
6465
XX(overflow_spans)
6566
XX(page_allocator)

0 commit comments

Comments
 (0)