realpath() 的安全替代方案是什么?

2024-04-18

我正在开发一个使用 realpath() 来获取文件的绝对路径的程序。不幸的是,这个函数需要一个字符串缓冲区,预计它足够大,当这个应用程序必须跨多个平台运行时,这是不安全的。该函数是否有一个安全版本可以避免缓冲区溢出问题,也许使用动态内存分配?


有关安全和便携式使用的信息,请参阅此处realpath:

http://www.opengroup.org/onlinepubs/9699919799/functions/realpath.html http://www.opengroup.org/onlinepubs/9699919799/functions/realpath.html

基本上,现代标准允许您传递 NULL 指针,并且realpath将分配适当长度的缓冲区。如果您想移植到不支持此标准的遗留系统,只需检查#ifdef PATH_MAX并使用长度固定大小的缓冲区PATH_MAX。据我所知,没有一个遗留系统缺乏恒定的PATH_MAX但不支持 NULL 参数realpath.

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

realpath() 的安全替代方案是什么? 的相关文章

随机推荐

  • Cython指定固定长度字符串的numpy数组

    我有一个函数 我想使用 Cython 来处理大量固定长度的字符串 对于标准 cython 函数 我可以像这样声明数组的类型 cpdef double g double in arr cdef double out arr np zeros
  • 对话框的对象位置 Libgdx

    我有一个对话框 Dialog dialog new Dialog style dialog setSize 400 500 dialog setPosition Gdx graphics getWidth 2 200 Gdx graphic
  • 使用自动 bash 脚本检查 FTP 中是否存在文件

    我想自动化执行以下操作的批处理作业 检查我的file txt存在于FTP服务器中 我将其重命名为file trt 检查我的file txt and file trt存在 如果存在我发送电子邮件 我运行另一个脚本 最后我删除file trt
  • Ruby+Anemone Web Crawler:正则表达式匹配以一系列数字结尾的 URL

    假设我正在尝试抓取一个网站并跳过一个像这样结束的页面 我目前正在 Ruby 中使用 Anemone gem 来构建爬虫 我正在使用skip links like方法 但我的模式似乎永远不匹配 我试图使其尽可能通用 因此它不依赖于子页面 而只
  • 为什么这个 Sql 语句(有 2 个表连接)需要 5 分钟才能完成?

    更新 下面添加了 3 个更新 以下sql语句需要5分钟才能完成 我只是 不 得到 它 第一个表有 6861534 行 第二个表少了一点 第三个表 包含 4 个地理字段 与第一个表相同 Those GEOGRAPHY第三个表中的字段 它们不应
  • 错误域=FIRFirestoreErrorDomain 代码=7“权限缺失或不足。”

    所以我有以下代码从 firestore 检索文档 该函数在我的 viewDidLoad 中调用 func loadAnnotations db collection jumpSpotAnnotations getDocuments quer
  • 将静态库链接到共享库

    我正在尝试在 Ubuntu Linux 上使用 g 5 4 0 创建共享库 我已经构建了 Poco C 库的静态库 a 文件 我想将它们静态链接到我的共享库中 但它不起作用 我已将以下字符串添加到我的构建脚本中 Wl whole archi
  • 如何使用c#读取EPS的属性或颜色信息?

    我的要求是读取另外50个EPS文件并导出EPS的属性 颜色模式 这可能吗 颜色模式有灰度 RGB 和 CMYK 到目前为止 我尝试使用 BitmapImage 来读取 EPS 但我没有运气 BitmapImage 不读取 EPS 因为它是矢
  • ANDROID:如何将视频文件下载到 SD 卡?

    我在网站上有一个 MP4 格式的视频文件 我希望用户能够通过单击链接将该视频下载到他们的 SD 卡上 是否有捷径可寻 我目前有这段代码 但它不起作用 不知道我做错了什么 谢谢你的帮助 import java io BufferedInput
  • Titan 加载弹性搜索问题

    我使用以下代码来加载泰坦 TitanFactory Builder config TitanFactory build config set storage backend berkeleyje config set storage dir
  • 指针的大小以及该大小是否取决于体系结构

    好吧 抱歉这个问题 更像是一个一般文化问题 尚未找到准确的答案 如果我有类似的东西 char Field or void Field or double pointers 指针的大小是一样的吗 据我记得大学时它是 4 个字节 但是 根据CP
  • 类型错误 - Python 中的类

    我是 Python 的初学者 刚刚开始掌握课程 我确信这可能是非常基本的东西 但为什么这段代码是这样的 class Television def init self print Welcome your TV self volume 10
  • 多个函数聚合的结果不可用于进一步计算。为什么?

    我对 R 中聚合函数的结果有疑问 我的目标是从数据集中选择某些鸟类并计算密度 调查区域内观察到的个体的数量 为此 我获取了主数据文件的子集 然后在区域上进行聚合 计算 平均值和个体数量 由向量长度表示 然后我想用计算出的平均面积和个体数量来
  • 异或数据包中的所有数据

    我需要一个可以根据用户输入计算校验和的小程序 不幸的是 我对校验和的了解只是它是数据包中所有数据的异或 我试图在网上搜索一个例子 但没有运气 我知道我是否有一个字符串 41 4D 02 41 21 04 02 02 00 00 00 00
  • 如何在 Android 上的 Camera2 API 中设置“CONTROL_AE_EXPOSURE_COMPENSATION”?

    我目前正在开发 Androids Camera 2 API 当前的问题是我无法设置 CONTROL AE EXPOSURE COMPENSATION 我的代码 1 0 public void setExposure double expos
  • 如何让 Spring 连接我的 JmsComponent

    我正在编写一个使用 Akka Akka Camel 和 Spring 进行配置的应用程序 应用程序需要充当针对各种应用程序服务器的独立 JMS 客户端 为此 它需要使用 JNDI 设置 JMS 连接工厂 我正在用 jBoss 测试这个 我对
  • 如何在 xsl 中检查字符串是否不区分大小写

    我有一个要求需要检查DB dbtype oracle 不区分大小写 我怎样才能做到这一点 这是我的代码
  • 使用 NX monorepo 的 Azure 管道有条件发布

    我们有一个 NX monorepo 里面有多个项目 并且正在使用 nx受影响来确定哪些项目已被触及 这对于我们的构建管道非常有效 但我们希望仅在项目实际发生更改时才发布它们 我们希望每个项目都有多个发布管道 只有在实际接触时才会触发 经过调
  • 如何将CSS仅应用于顶级元素

    在我的 HTML 中 我在单独的部分中有一些页脚元素 然后是该页面的一个全局页脚元素 我只想使全局页脚出现在视口的底部 如果我这样做 它将影响所有页脚 footer position fixed bottom 0px 如果我这样做 它会按预
  • realpath() 的安全替代方案是什么?

    我正在开发一个使用 realpath 来获取文件的绝对路径的程序 不幸的是 这个函数需要一个字符串缓冲区 预计它足够大 当这个应用程序必须跨多个平台运行时 这是不安全的 该函数是否有一个安全版本可以避免缓冲区溢出问题 也许使用动态内存分配