Skip to content

Commit d5f42a5

Browse files
committed
Fix memory leak and redundant syscall in minidump writer
- Fix memory leak: free 'resolved' array in error paths at lines 1634 and 1646 - Fix redundant uname() syscall: reuse first call result for CSD version string
1 parent ca086e6 commit d5f42a5

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

src/backends/native/minidump/sentry_minidump_linux.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -515,17 +515,14 @@ write_system_info_stream(minidump_writer_t *writer, minidump_directory_t *dir)
515515

516516
// Populate OS version from uname(), matching Crashpad behavior
517517
struct utsname uts;
518+
char csd_version[256] = "";
518519
if (uname(&uts) == 0) {
519520
int major = 0, minor = 0, patch = 0;
520521
sscanf(uts.release, "%d.%d.%d", &major, &minor, &patch);
521522
sysinfo.major_version = (uint32_t)major;
522523
sysinfo.minor_version = (uint32_t)minor;
523524
sysinfo.build_number = (uint32_t)patch;
524-
}
525525

526-
// Write CSD version string with full uname info, matching Crashpad
527-
char csd_version[256] = "";
528-
if (uname(&uts) == 0) {
529526
snprintf(csd_version, sizeof(csd_version), "%s %s %s %s", uts.sysname,
530527
uts.release, uts.version, uts.machine);
531528
}
@@ -1634,6 +1631,7 @@ write_module_list_stream(minidump_writer_t *writer, minidump_directory_t *dir)
16341631
SENTRY_WARN("failed to write module list structure");
16351632
sentry_free(mod_infos);
16361633
sentry_free(module_list);
1634+
sentry_free(resolved);
16371635
return -1;
16381636
}
16391637

@@ -1645,6 +1643,7 @@ write_module_list_stream(minidump_writer_t *writer, minidump_directory_t *dir)
16451643
"name/CV patching");
16461644
sentry_free(mod_infos);
16471645
sentry_free(module_list);
1646+
sentry_free(resolved);
16481647
return dir->rva ? 0 : -1;
16491648
}
16501649

0 commit comments

Comments
 (0)