无忧启动论坛

标题: grub4dos gzip 的问题 [打印本页]

作者: chenall    时间: 2014-11-23 18:04
标题: grub4dos gzip 的问题
简单的测试方法.

raw map /test.gz (rd)
raw cat --hex (rd)+1 正常
cat (rd)+1 正常
cat (rd)+1 再次执行失败,出错,(rd)的内容改变了,已经不是原来的内容

其中测试过把(rd)换成(fd0)等也是一样.
再测试加参数 --mem=xxxx 指定一个低端的内存,暂时还没有发现问题.

用lzma格式正常.

也就是说如果解压一个在内存中的gzip文件,这个文件内容有可能会被改变???

很早之前的版本就存在,我测试了今年最早的版本一样.

QEMU和实机测试一样.

请大家也测试一下,是不是一样存在这个问题.

注: 测试时需要把一个gz文件加载到内存中(不要自动解压)

然后访问这个文件内容.让它自动解压
作者: 不点    时间: 2014-11-23 18:56
自动解压,当然有可能破坏内存了。
内存处理以及解压代码,都需要经过严密的审查。目前可能都有问题。


作者: chenall    时间: 2014-11-23 20:09
看起来应该是这里的问题了,这个有必要改变一下,否则解压gz文件的时候就会改变顶端内存,我过两天再看一下.

比如默认情况下的rd设备就是使用了顶端的内存,这时如果再使用到gz文件那rd里面的文件内容就会被改变.

  1. static void
  2. reset_linalloc (void)
  3. {
  4.   linalloc_topaddr = RAW_ADDR ((saved_mem_upper << 10) + 0x100000);
  5. }
复制代码

作者: 不点    时间: 2014-11-24 09:02
chenall 发表于 2014-11-23 20:09
看起来应该是这里的问题了,这个有必要改变一下,否则解压gz文件的时候就会改变顶端内存,我过两天再看一下.
...

大胆搞,错了没关系,还可以退回去。

今后我就不能再关注此一阶段的 grub4dos 的开发了,我主要去做操作系统整合方面的工作。






欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3