| Summary: | Memory Leak issue in src/video/x11/edid-parse.c file | ||
|---|---|---|---|
| Product: | SDL | Reporter: | Nitz <nitin.j4> |
| Component: | video | Assignee: | Sam Lantinga <slouken> |
| Status: | RESOLVED FIXED | QA Contact: | Sam Lantinga <slouken> |
| Severity: | critical | ||
| Priority: | P2 | ||
| Version: | 2.0.0 | ||
| Hardware: | x86 | ||
| OS: | Linux | ||
Fixed, thanks! http://hg.libsdl.org/SDL/rev/1d9b4b7a8ce3 |
In Function, MonitorInfo * decode_edid (const uchar *edid) { MonitorInfo *info = calloc (1, sizeof (MonitorInfo)); decode_check_sum (edid, info); if (!decode_header (edid)) return NULL; if (!decode_vendor_and_product_identification (edid, info)) return NULL; if (!decode_edid_version (edid, info)) return NULL; if (!decode_display_parameters (edid, info)) return NULL; if (!decode_color_characteristics (edid, info)) return NULL; if (!decode_established_timings (edid, info)) return NULL; if (!decode_standard_timings (edid, info)) return NULL; if (!decode_descriptors (edid, info)) return NULL; return info; } In this function "info" is going out of scope and leaks the storage it points to, if the first if condition get true: if (!decode_header (edid)) return NULL; So while returning from this if statement there should be free for "info" pointer.