go语言重大bug,make缓存读取数据漏洞,4096漏洞

2023-10-29

做一个小程序,需要对文件内容分片读取,但是读取过程中发现数据读取不全,经测试多个make缓存读取文件时发现问题。以下为漏洞测试部分:

一、生成测试文件(AAA.txt)

// 创建一个AAA.txt文件,写入1万个A
wFile, _ := os.OpenFile("AAA.txt", os.O_WRONLY|os.O_CREATE, 0666)
defer wFile.Close()
for i := 0; i < 10000; i++ {
    wFile.WriteString("A")
}

二、多缓存读取测试

rFile, _ := os.Open("AAA.txt")
defer rFile.Close()
read := bufio.NewReader(rFile)

buf1 := make([]byte, 1000)
read.Read(buf1)
buf2 := make([]byte, 1000)
read.Read(buf2)
buf3 := make([]byte, 2095)
read.Read(buf3)
buf4 := make([]byte, 5)   // bug行
read.Read(buf4)           // bug行
buf5 := make([]byte, 1000)
read.Read(buf5)
fmt.Println(buf4)        // 输出[65 0 0 0 0] ,只读取到2096,后面设置缓存再大也无法读取
fmt.Println(buf5)        // 正常输出

结论:经测试,创建多个缓存时,前面缓存总数小于4096时,总数为4096的数据在下一个缓存中时,本缓存中4096字节以后的数据全部为0。如果缓存最后一位正好4096时不影响。前一个缓存读取错误不影响下一个缓存数据。(遇到4096的倍数时,创建的新缓存读取数据就会出现bug)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

go语言重大bug,make缓存读取数据漏洞,4096漏洞 的相关文章

随机推荐

  • Chrome 89 更新 js 事件触发顺序,导致99%的文章都错了(包括MDN)

    大家好 我是秋风 嗯 我又来了 这次又是在 楠溪和的讨论中产生的问题 那事情是怎么样的呢 起因 最近楠溪在看事件相关的文章 然后就跑来和我讨论说以下代码的执行效果和网上的文章不一致 代码如下 div div
  • verdaccio内网离线搭建npm私有仓库

    使用场景 前端项目的编译运行开发中报下载经常出错 项目场景 通常我们前端项目开发搭建过程中通过npm管理前端js库 新建项目或内网开发过程中经常出现环境搭建的问题 例如常见错误Failed at the chromedriver 2 37
  • QT学习一:利用QT QAxObject读取Excel表格数据的两种方法比较

    目录 QAxObject QVariant 1 逐单元格读取表格内容 2 一次性读取工作表使用范围 利用QT的 QAxObject读取Excel表格数据的两种方法比较 完整的QT源码到此下载 ReadExcel rar 嵌入式文档类资源 C
  • 计算机视觉与深度学习-经典网络解析-VGG-[北邮鲁鹏]

    目录标题 VGG 参考 VGG网络贡献 使用尺寸更小的 3 times 3 卷积串联来获得更大的感受野 放弃使用 11 times 11 和 5 times 5 这样的大尺寸卷积核 深度更深 非线性更强 网络的参数也更少 去掉了AlexNe
  • 黑马并发编程JUC总结

    并发编程总结1 并发编程 2 进程和线程 2 1定义 2 2并发和并行 2 3应用 异步调用 并发应用 3 java线程 3 1线程创建 创建线程方法1 创建方法2 Thread和Runable的区别 创建方法3 3 2线程运行 3 3线程
  • [Coursera 数字图像和视频处理基础]第一周

    开始跟Coursera上的数字图像和视频处理基础这门课 这次学习笔记记录下第一周的学习内容 第一周的内容很少 介绍了一些非常基础的知识 概括如下 并且记录了最后的答题作业 课程主页截图 1 模拟VS数字信号 首先是信号的定义 我搜了一点资料
  • 稠密连接网络(DenseNet)

    ResNet极大地改变了如何参数化深层网络中函数的观点 稠密连接网络 DenseNet Huang et al 2017 在某种程度上是ResNet的逻辑扩展 让我们先从数学上了解一下 1 从ResNet到DenseNet 回想一下任意函数
  • python: 字典 (dict) 的使用

    摘要 在刷 leecode 的题目时 会经常使用哈希表 在 python 中称为字典 dict 由于本人平时不怎么多使用字典 在真正运用时经常忘记其常规用法 特别是其成员函数的使用 因此 本人根据自己在刷 leecode 时经常使用字典的方
  • 深度学习与计算机视觉系列(8)_神经网络训练与注意点

    作者 寒小阳 时间 2016年1月 出处 http blog csdn net han xiaoyang article details 50521064 声明 版权所有 转载请联系作者并注明出处 1 训练 在前一节当中我们讨论了神经网络静
  • Memcache查看列出所有key方法

    Memcached查看列出所有key方法 测试的过程中 发现Memcached没有一个比较简单的方法可以直接象redis那样keys 列出所有的Session key 并根据key get对应的session内容 具体操作如下 登录MemC
  • bugkuctf-Simple_SSTI_2

    方法一 tplmap 直接扫 python2 tplmap py u http 114 67 175 224 10589 flag 可以注入 使用 os shell提权 python2 tplmap py u http 114 67 175
  • 7.recurrent_neural_network

    device torch device cuda if torch cuda is available else cpu sequence length 28 input size 28 hidden size 128 num layers
  • windows环境与Linux环境下调用c++程序

    在此之前 需要在java编译软件IDEL中配置本地的Maven仓库等 可自行网上搜索配置 一 在Windows系统下调用c 软件生成的dll文件 1 在IDEL中创建Maven工程 配置下载jna包等 在pom文件中写入如下配置即可
  • 软件测试2019:第三次作业

    一 单元测试的任务有哪些 1 模块接口测试 2 模块局部数据结构测试 3 模块边界条件测试 4 模块中所有独立执行通路测试 5 模块的各条错误处理通路测试 二 代码评审方法有哪些 你认为哪一种比较有效 理由是什么 代码评审方法分为代码走查和
  • 什么时候开始使用Redis

    思考这个问题的本质就是要学会取舍和选型 技术选型非常重要 大多人为了技术而技术 这是不可取的 就想小彬认为微服务必须解决分布式事务一样 但他却不知道为什么要用分布式事务 从而不知道什么时候要用分布式事务 就想Redis一样 什么时候要用Re
  • jmap 文件解析_干货分享丨jvm系列:dump文件深度分析

    摘要 java内存dump是jvm运行时内存的一份快照 利用它可以分析是否存在内存浪费 可以检查内存管理是否合理 当发生OOM的时候 可以找出问题的原因 那么dump文件的内容是什么样的呢 JVM dump java内存dump是jvm运行
  • 【springboot】如何在自己的springboot项目中引用别的springboot项目jar

    正好今天碰到了 就在这里总结下 习惯了将公用的项目打包成jar 然后当做工具类引入到自己项目中 直接调用 感觉甚是方便 但有没有发现 平时我们引用的大部分情况下是一个maven项目 然后打包好的jar也是maven项目的结构 所以我们可以正
  • VS使用技巧汇总

    总目录 文章目录 总目录 前言 一 快捷技巧 1 代码片段快捷方式 2 选择性粘贴 3 快速停靠窗口 4 多行同步快速编辑 5 引用命名空间 6 整行上下移动 7 快捷键 二 VS功能 1 打开VS自带反编译 2 VS扩展插件 三 其他 总
  • win10远程登录Ubuntu14.04图形化界面

    一 使用场景 因工作原因 需要在window与Linux系统同时操作 由于虚拟机卡顿 十分影响工作效率 于是找领导又申请一台电脑 Ubuntu主机主要日常代码编译与git操作 window主机主要用于日常沟通 资料查询 测试研发 windo
  • go语言重大bug,make缓存读取数据漏洞,4096漏洞

    做一个小程序 需要对文件内容分片读取 但是读取过程中发现数据读取不全 经测试多个make缓存读取文件时发现问题 以下为漏洞测试部分 一 生成测试文件 AAA txt 创建一个AAA txt文件 写入1万个A wFile os OpenFil