记一次 Native Crash Abort message:‘FORTIPY :vsprintf:prevented 33-byte write into 32-byte buffer ’

2023-05-16

先贴上关键日志

第一眼看到日志,以为是缺少了Arm64 的so文件,查看后发现并没缺少;

无奈之下,只有复现这个Crash,一点点缩小排查范围;最终将问题的矛头指向了项目中Native 层Md5加密的地方:


extern "C" JNIEXPORT jstring JNICALL
Java_com_symbol_business_NdkMethods_signatureParams(JNIEnv *env, jclass type, jstring params_) {
    if (is_verify == 0) {
        return env->NewStringUTF("error signature");
    }
    const char *params = env->GetStringUTFChars(params_, 0);
    string signature_str(params);
    signature_str.insert(0, EXTRA_SIGNATURE);
    signature_str = signature_str.substr(0, signature_str.length() - 2);
    MD5_CTX *ctx = new MD5_CTX();
    MD5Init(ctx);
    MD5Update(ctx, (unsigned char *) signature_str.c_str(), (unsigned int) signature_str.length());
    unsigned char digest[16] = {0};
    MD5Final(ctx, digest);
    //char md5_str[32] = {0};
    char md5_str[33] = {0};
    for (int i = 0; i < 16; i++) {
        sprintf(md5_str, "%s%02x", md5_str, digest[i]);
    }
    env->ReleaseStringUTFChars(params_, params);
    return env->NewStringUTF(md5_str);
}  

根据报错日志,我将以上代码中注释掉的那一行改为下面那一行。异常崩溃就好了,我也是百思不得解;

Md5加密32位的不应该是md5_str[32]吗?

原来md5_str[32]应该是md5_str[33]留一位给/0结束符;

否则就会报错了;问题解决;如有不对,望指正;

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

记一次 Native Crash Abort message:‘FORTIPY :vsprintf:prevented 33-byte write into 32-byte buffer ’ 的相关文章

  • 来自设备的 dSYM 文件

    我的应用程序崩溃了 两天来我找不到重现崩溃的确切方法 所以 我想解码 dSYM 文件 看看有什么问题 希望有帮助 如何从设备获取 dSYM 文件 您可能需要从 Xcode 构建产品获取 dSYM 打开 Xcode 管理器 在 Xcode 中
  • Symfony2 自定义表单错误消息

    你能帮我了解如何使用 Symfony2 自定义表单中的错误消息吗 我想更改 HTML 布局 添加 div 类等 阅读指南 它给出了一段代码 可以放入一个名为的文件中fields errors html twig但它没有告诉将该文件放在哪里以
  • 为什么在 Android 上重定向 stdout/stderr 不起作用?

    我下载了 SDL 1 3 并在我的 android 2 2 设备上将其与 OpenGL ES 一起进行了测试 它工作正常 但我没有得到输出printf来电 我尝试了下面的命令 如安卓开发者页面 http developer android
  • RuntimeException在android中导致ANR而不是崩溃

    我两次都收到 ANR throw new NullPointerException random null pointer and while true 仅在异常部分VM实际关闭 D AndroidRuntime 关闭VM 第二个问题是 如
  • 我如何在编译时从 C# 调用未知的本机函数

    在运行时我提供了一个String名称 对象的排序数组以及有关本机函数的一些附加信息 dllpath calltype 等 假设所有信息都在CallInformation Object 我如何调用这个本机函数 笔记 在运行之前我没有提供 dl
  • 所有应用程序在断开连接时崩溃[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 突然之间 当我断开连接 iMac 和 iPhone 的电线时 我构建并发送到手机的任何应用程序都会立即崩溃 并且也没有任
  • 崩溃日志:什么是“ARM 线程状态”

    我正在尝试分析 iPhone 崩溃报告 还有一些我不明白的事情 Thread 6 crashed with ARM Thread State r0 0x00000000 r1 0x00000000 r2 0x00000001 r3 0x00
  • 来自本机的 Android O 设备序列号

    在 Android O 上从本机获取序列号而不调用 Java 的正确方法是什么Build getSerial 在 Android string serial read property ro boot serialno string rea
  • 添加 UIFont 并查找字体系列会因 EXC_BAD_ACCESS 崩溃

    我的问题是 当我添加描述的字体时here https stackoverflow com questions 3350131 how to add new font to xcode 3 2当我想检索字体系列名称时 UIFont famil
  • 向 Windows 窗体消息循环发送或发布消息

    我有一个线程从命名管道读取消息 它是阻塞读取 这就是它在自己的线程中的原因 当该线程读取消息时 我希望它通知主线程中运行的 Windows 窗体消息循环消息已准备就绪 我怎样才能做到这一点 在win32中我会做一个PostMessage 但
  • NuGet 崩溃 VS2010 Ultimate

    NuGet 包管理器使我的 VS2010 Ultimate 崩溃 有谁之前经历过这个吗 我卸载了扩展并重新安装 当我打开包管理器时 会弹出以下对话框 Microsoft Visual Studio 遇到问题 需要关闭 我正在运行 NuGet
  • 窗口中的图标属性导致 Windows XP SP2 中的应用程序崩溃

    假设我有这个
  • Eclipse 总是突然关闭

    最近我的 Eclipse 遇到了很多问题 它不断崩溃 突然关闭 根本无法正常工作 这种情况发生的次数太多了 比如每 10 15 分钟一次 发生这种情况时 CPU 和 RAM 可用 50 这是eclipse ini file startup
  • 使用带有 _O_U8TEXT 的 setmode 处理 unicode 时 C++ 崩溃

    我尝试打印 unicode 的是 setmode fileno stdout O U8TEXT string str u8 unicode hangul cout lt lt str lt lt endl 我使用 setmode 来正确显示
  • 防止 Windows 中的崩溃消息

    我的应用程序需要扫描经常导致崩溃的第三方文件 为了克服这个问题 它使用一个单独的进程来扫描这些文件并 每当这个进程崩溃时 我的应用程序就会实例化另一个应用程序 我的问题是 每次崩溃后我都会收到 Windows 崩溃消息 AuxScanner
  • .NET 中的线程中止

    我有一个线程正在分析文件并对数据库进行事务调用 每个事务都有一个审计条目作为其事务的一部分 调用 Thread Abort 来停止文件的处理有什么大问题吗 而不是到处散布丑陋的安全点 文件将在 Abort 调用后关闭 明显的问题是放弃交易的
  • 如何在使用cmake完成make后打印消息?

    我正在尝试使用 CMake 完成构建过程后打印消息 我只是想在之后通知用户make命令已完成 没有任何错误 我该怎么做 我试过add custom target 但我无法选择何时跑步 另外 我尝试过add custom command 它再
  • 有人尝试过用 C 或 C++ 为 Blackberry 平台进行开发吗?

    根据我在嵌入式计算方面的经验 我得到的每一个迹象都是 做这样的事情需要昂贵的设备才能访问平台 ICE 调试器 JTAG 探针 I2C 编程器等 但我一直想知道是否一些雄心勃勃的黑客已经找到了一种在黑莓设备上加载本机代码的方法 任何人 编辑
  • 有什么方法可以让 C/C++ 程序在 main() 之前崩溃吗?

    有什么办法可以让程序在 main 之前崩溃吗 使用 gcc 您可以使用以下标记函数构造函数属性 http gcc gnu org onlinedocs gcc Function Attributes html index g t 0040c
  • 从 Visual Studio 2015 Update 1 中的生成后事件执行 AL.EXE 时出现错误 -1073741819 (0xC0000005)

    使用 Visual Studio 2015 Update 1 在生成后事件中运行命令 AL EXE 时 我正在 Visual C CLR 类库项目 C CLI 中试验一个问题 Visual Studio 2015 中没有发生 AL EXE

随机推荐

  • 附录1:配置 containerd 加速

    以语雀 文档为准 说明 不推荐在 k8s 网络配置前加速 xff0c 可能会导致无法拉取镜像 xff08 原因可能是镜像的原因 xff0c 或者是配置的原因 xff0c 可以考虑事先或报错时手动拉取镜像 xff09 安装 span clas
  • 附录2:CentOS 下载

    以语雀 文档为准 视频演示 点击查看 bilibili CentOS Vault Mirror CentOS 7 8 最新版 xff08 含各大云厂商的镜像 xff09 CentOS 7 http isoredirect centos or
  • 附录3:Anolis 龙蜥 下载

    以语雀 文档为准 视频演示 点击查看 bilibili 官网 xff1a https openanolis cn 7 7 正式版 https mirrors openanolis cn anolis 7 7 isos GA x86 64 7
  • 附录4:Ubuntu 乌班图 下载

    以语雀 文档为准 https releases ubuntu com https old releases ubuntu com releases 版本号 版本代号 下载地址 14 04 5 Trusty Tahr https old re
  • 小工具1:tcping

    以语雀 文档为准 说明 tcping exe 是一个控制台应用程序 xff0c 其操作类似于 ping xff0c 但它在tcp端口上工作 在 Windows 上要查看指定 IP 端口 是否连通 xff0c 通常要使用 telnet xff
  • 小工具2:Windows curl.exe

    以语雀 文档为准 GitHub 仓库 xff1a https github com curl curlGitHub 仓库 Windows 版 xff1a https github com curl curl for win下载页面 xff1
  • 小工具3:Windows tail.exe

    以语雀 文档为准 文件 xff1a tail zip xff0c 文件来源于网络 xff0c 用于实时查看文件内容 xff0c 与 Linux 的 tail 有相同的用法 下载上述文件 xff0c 解压 xff0c 将 tail exe 放
  • 小工具4:Windows cports.exe

    以语雀 文档为准 文件 cports zip xff0c 文件来源于网络 xff0c 用于实时查看端口占用情况 xff0c 使用管理员权限运行时 xff0c 可杀端口 下载上述文件 xff0c 解压 xff0c 将 cports exe 放
  • 为何在 node 项目中使用固定版本号,而不使用 ~、^?

    以语雀 文档为准 使用 时吃过亏希望版本号掌握在自己手里 xff0c 作者自己升级 xff08 跟随官方进行升级 xff0c 就算麻烦作者 xff0c 也不想麻烦使用者 xff09 虽然 pnpm 很好用 xff0c 但是不希望在项目中用到
  • 导读 2、kubernetes(k8s)导读

    以语雀 文档为准 内容来自 Kubernetes 权威指南 第5版等 kubernetes 是什么 xff1f kubernetes是一个全新的基于容器技术的分布式架构领先方案 xff0c 是容器云的优秀平台选型方案 xff0c 已经成为新
  • 区块链——脱坑truffle

    使用truffle构建一个智能合约 实现输出 helloworld 的功能 网上有很多帖子 但也有很多坑 这里展示我的搭建过程 帮助大家绕过那些麻烦 一 安装web3 solc truffle npm g install solc npm
  • 使用fescar遇到can not register RM,err:can not connect to fescar-server.

    前提 如果你看到了这篇文章 xff0c 说明你已经成功跑起了阿里爸爸fescar官方提供的example和server xff0c 并且你的客户端和服务端之间心跳正常 xff0c 但是当客户端进行事务操作时却提示以下错误 com span
  • Arch常用软件

    常用软件 开发 gitandroid studiovim 图形界面 网络 pacman S networkmanager 启动其提供的服务 systemctl start NetworkManager service 让服务开机自启 sys
  • CentOS可以使用的yum仓库地址

    name 61 CentOS 6 6 Base baseurl 61 http mirrors aliyun com centos vault 6 6 os x86 64 gpgcheck 61 1 gpgkey 61 http mirro
  • pyqt错误:Unresolved reference 和 正确安装pycharm+python+pyqt5

    写如下代码 xff1a span class hljs keyword import span sys span class hljs keyword from span PyQt5 span class hljs keyword impo
  • 以下是adb工具包最新Google官方版下载地址:

    以下是adb工具包最新Google官方版下载地址 xff1a ADB和Fastboot for Windows https dl google com android repository platform tools latest win
  • java.lang.UnsupportedOperationException 及resultMap相关知识

    起因 今天在请求数据库数据时报错java lang UnsupportedOperationException xff0c 从字面上理解错误的含义就是不支持的操作异常 xff0c 后面定位到错误发生在数据库sql语句中 xff0c 具体原因
  • Spring Boot配置类处理

    ConfigurationClassPostProcessor处理所有配置类 xff0c 包括 64 Component 64 Bean 64 Import注解等 由于配置类可能会引入新的配置类 xff0c 新的配置类也需要被处理 xff0
  • 数据库范式1NF 2NF 3NF详细阐述

    范式 xff1a 关系数据库中的关系是要满足一定要求的 xff0c 满足不同程度要求的不同范式 满足最低要求的叫第一范式 xff0c 简称1NF xff0c 在第一范式中满足进一步要求的为第二范式 xff0c 其余以此类推 通俗来说是满足数
  • 记一次 Native Crash Abort message:‘FORTIPY :vsprintf:prevented 33-byte write into 32-byte buffer ’

    先贴上关键日志 第一眼看到日志 xff0c 以为是缺少了Arm64 的so文件 xff0c 查看后发现并没缺少 xff1b 无奈之下 xff0c 只有复现这个Crash xff0c 一点点缩小排查范围 xff1b 最终将问题的矛头指向了项目