Просмотр исходного кода

dpkg: Fix memory leaks if archivefiles is called more than once

Use varbufreset instead of varbufinit, as the variables are global.
Guillem Jover лет назад: 18
Родитель
Сommit
b03ae3024d
2 измененных файлов с 10 добавлено и 3 удалено
  1. 5 0
      ChangeLog
  2. 5 3
      src/archives.c

+ 5 - 0
ChangeLog

@@ -1,3 +1,8 @@
+2008-06-04  Guillem Jover  <guillem@debian.org>
+
+	* src/archives.c (archivefiles): Use varbufreset instead of varbufinit
+	to avoid possible leaks if this function is called more than once.
+
 2008-06-04  Guillem Jover  <guillem@debian.org>
 
 	* lib/log.c (log_message): Switch log from a pointer to struct varbuf

+ 5 - 3
src/archives.c

@@ -1173,9 +1173,11 @@ void archivefiles(const char *const *argv) {
 
   currenttime = time(NULL);
 
-  varbufinit(&fnamevb);
-  varbufinit(&fnametmpvb);
-  varbufinit(&fnamenewvb);
+  /* Initialize fname variables contents. */
+
+  varbufreset(&fnamevb);
+  varbufreset(&fnametmpvb);
+  varbufreset(&fnamenewvb);
 
   varbufaddstr(&fnamevb,instdir); varbufaddc(&fnamevb,'/');
   varbufaddstr(&fnametmpvb,instdir); varbufaddc(&fnametmpvb,'/');