Pārlūkot izejas kodu

dpkg: Fix memory leaks from deppossi iterators

Regression introduced in commit b274b0d96da80ef162d45f800777f11b11defe91.
Guillem Jover 14 gadi atpakaļ
vecāks
revīzija
d0984e6e92
1 mainītis faili ar 7 papildinājumiem un 2 dzēšanām
  1. 7 2
      src/depcon.c

+ 7 - 2
src/depcon.c

@@ -546,8 +546,10 @@ depisok(struct dependency *dep, struct varbuf *whynot,
                   pkgbin_name(pkg_pos, &pkg_pos->available, pnaw_nonambig),
                   versiondescribe(&pkg_pos->available.version, vdew_nonambig));
           varbuf_add_str(whynot, linebuf);
-          if (!canfixbyremove)
+          if (!canfixbyremove) {
+            deppossi_pkg_iter_free(possi_iter);
             return false;
+          }
           nconflicts++;
           *canfixbyremove = pkg_pos;
           break;
@@ -576,8 +578,10 @@ depisok(struct dependency *dep, struct varbuf *whynot,
                     versiondescribe(&pkg_pos->installed.version, vdew_nonambig),
                     gettext(statusstrings[pkg_pos->status]));
             varbuf_add_str(whynot, linebuf);
-            if (!canfixbyremove)
+            if (!canfixbyremove) {
+              deppossi_pkg_iter_free(possi_iter);
               return false;
+            }
             nconflicts++;
             *canfixbyremove = pkg_pos;
           }
@@ -586,6 +590,7 @@ depisok(struct dependency *dep, struct varbuf *whynot,
           internerr("unknown istobe conflict '%d'", pkg_pos->clientdata->istobe);
         }
       }
+      deppossi_pkg_iter_free(possi_iter);
     }
 
     /* If there was no version specified we try looking for Providers. */