Sfoglia il codice sorgente

fs/squashfs: sqfs_close/sqfs_read_sblk: set ctxt.sblk to NULL after free

This will prevent a double free error if sqfs_close() is called twice.

Signed-off-by: Richard Genoud <richard.genoud@posteo.net>
Richard Genoud 3 anni fa
parent
commit
7e932ac790
1 ha cambiato i file con 3 aggiunte e 1 eliminazioni
  1. 3 1
      fs/squashfs/sqfs.c

+ 3 - 1
fs/squashfs/sqfs.c

@@ -49,6 +49,7 @@ static int sqfs_read_sblk(struct squashfs_super_block **sblk)
 
 	if (sqfs_disk_read(0, 1, *sblk) != 1) {
 		free(*sblk);
+		sblk = NULL;
 		return -EINVAL;
 	}
 
@@ -1689,9 +1690,10 @@ free_strings:
 
 void sqfs_close(void)
 {
+	sqfs_decompressor_cleanup(&ctxt);
 	free(ctxt.sblk);
+	ctxt.sblk = NULL;
 	ctxt.cur_dev = NULL;
-	sqfs_decompressor_cleanup(&ctxt);
 }
 
 void sqfs_closedir(struct fs_dir_stream *dirs)