在这个软件包上,程序读取比指定的(temp)大的2-4字节,会有什么问题呢?
size = nsgsout.Read(buf, 0, 2);
while (size != 2)
{
size += nsgsout.Read(buf, size, 2 - size);
}
temp = (buf[0] + buf[1] * 256);
size = nsgsout.Read(buf, 2, temp - 2);
while (size != temp - 2)
{
size += nsgsout.Read(buf, size + 2, temp - size + 2);
}
发布于 2014-01-08 14:42:32
我不认为这会像你想的那样:
temp - size+2
我怀疑你认为这意味着:
temp - (size + 2)
但它真的相当于
(temp - size) + 2
我怀疑你真的希望这个电话是:
size += nsgsout.Read(buf, size + 2, temp - size - 2);
还请注意,您可以更改以下内容:
size = nsgsout.Read(buf, 2, temp - 2);
只为
size = 0;
然后进入循环,让第一个读.
发布于 2014-01-08 14:39:18
2-大小可以是一个负数。你可能需要读2号尺寸的?!
https://stackoverflow.com/questions/20998535
复制相似问题