fix double-free if the number of languages is reduced to zero
authorMichael Schroeder <mls@suse.de>
Tue, 10 Dec 2013 15:15:38 +0000 (16:15 +0100)
committerMichael Schroeder <mls@suse.de>
Tue, 10 Dec 2013 15:15:38 +0000 (16:15 +0100)
src/pool.c

index 910a9c1..24a7fb4 100644 (file)
@@ -1661,12 +1661,9 @@ pool_set_languages(Pool *pool, const char **languages, int nlanguages)
 
   pool->languagecache = solv_free(pool->languagecache);
   pool->languagecacheother = 0;
-  if (pool->nlanguages)
-    {
-      for (i = 0; i < pool->nlanguages; i++)
-       free((char *)pool->languages[i]);
-      free(pool->languages);
-    }
+  for (i = 0; i < pool->nlanguages; i++)
+    free((char *)pool->languages[i]);
+  pool->languages = solv_free(pool->languages);
   pool->nlanguages = nlanguages;
   if (!nlanguages)
     return;