Преглед изворни кода

Fixed potential double-free when creating a renderer (thanks @Sackzement!)

Closes https://github.com/libsdl-org/SDL/pull/14371
Sam Lantinga пре 4 месеци
родитељ
комит
524739900a
1 измењених фајлова са 6 додато и 1 уклоњено
  1. 6 1
      src/render/SDL_render.c

+ 6 - 1
src/render/SDL_render.c

@@ -1111,7 +1111,12 @@ SDL_Renderer *SDL_CreateRendererWithProperties(SDL_PropertiesID props)
                 for (int i = 0; render_drivers[i]; i++) {
                     const SDL_RenderDriver *driver = render_drivers[i];
                     if ((driver_attempt_len == SDL_strlen(driver->name)) && (SDL_strncasecmp(driver->name, driver_attempt, driver_attempt_len) == 0)) {
-                        SDL_free(driver_error);
+                        if (driver_error) {
+                            // Free any previous driver error
+                            SDL_free(driver_error);
+                            driver_error = NULL;
+                        }
+
                         rc = driver->CreateRenderer(renderer, window, props);
                         if (rc) {
                             break;