]> glassweightruler.freedombox.rocks Git - Ventoy.git/blobdiff - GRUB2/MOD_SRC/grub-2.04/grub-core/fs/squash4.c
Support unattended auto install for Deepin/UOS
[Ventoy.git] / GRUB2 / MOD_SRC / grub-2.04 / grub-core / fs / squash4.c
index 5dbad6e1425788b8ab9e7589baf4412fd41f45b5..06a4a3c05369bbc43c93cbcb092f9c9fa6179a56 100644 (file)
@@ -405,24 +405,16 @@ static grub_ssize_t zstd_decompress_wrap(char *inbuf, grub_size_t insize, grub_o
 {
   char *udata = NULL;
   int usize = data->blksz;
+  if (usize < 8192)
+    usize = 8192;
 
-  if (off == 0)
-  {
-    ZSTD_decompress(outbuf, len, inbuf, insize);      
-  }
-  else
-  {
-    if (usize < 8192)
-      usize = 8192;
-
-    udata = grub_malloc (usize);
-    if (!udata)
-      return -1;
+  udata = grub_malloc (usize);
+  if (!udata)
+    return -1;
   
-    ZSTD_decompress(udata, usize, inbuf, insize);      
-    grub_memcpy(outbuf, udata + off, len);
-    grub_free(udata);
-  }
+  ZSTD_decompress(udata, usize, inbuf, insize);      
+  grub_memcpy(outbuf, udata + off, len);
+  grub_free(udata);
   
   return len;
 }
@@ -551,7 +543,7 @@ grub_squash_iterate_dir (grub_fshelp_node_t dir,
       break;
     case grub_cpu_to_le16_compile_time (SQUASH_TYPE_LONG_DIR):
       off = grub_le_to_cpu16 (dir->ino.long_dir.offset);
-      endoff = grub_le_to_cpu16 (dir->ino.long_dir.size) + off - 3;
+      endoff = grub_le_to_cpu32 (dir->ino.long_dir.size) + off - 3;
       chunk = grub_le_to_cpu32 (dir->ino.long_dir.chunk);
       break;
     default: