首页 > 其他分享 >【发现】我不喜欢_strlcpy

【发现】我不喜欢_strlcpy

时间:2024-07-18 11:42:01浏览次数:9  
标签:发现 strlcpy 缓冲区 strcpy 喜欢 使用 字符串 错误处理

https://nrk.neocities.org/articles/not-a-fan-of-strlcpy

作者讨论了 strcpy 的变体 strlcpy,并认为这个变体没有使用的意义。

他们都是把字符串拷贝到另一个位置的函数,strcpy 因为不限制目标位置的长度,容易产生缓冲区溢出,因此被很多人认为是不安全的。strlcpy 则改进了这种行为,通过传入目标位置字符串的长度来限制缓冲区溢出。

但本文作者通过分三种情况讨论,认为 strlcpy 没有合适的应用场景。

如果使用场景允许字符串截断,应该使用 memccpy 配合手动设置字符串尾,这比 strlcpy 更高效。

如果使用场景不允许字符串截断,那应该使用 strdup。

如果不允许字符串截断,但是又只能使用定长缓冲区,也应该像第一种情况一样要使用 memccpy。而且,这比第一种情况下,strlcpy 还要低效,甚至是逻辑混乱的。

评论

从这些分析看来,strcpy 本身也是一种不合理的设计。错误发生时的处理,不只是错误处理需求本身决定的,还是产生错误的需求决定的。错误处理很大程度上是需求的一部分,而不是需求的副产物。

标签:发现,strlcpy,缓冲区,strcpy,喜欢,使用,字符串,错误处理
From: https://www.cnblogs.com/plus7wist/p/18309184

相关文章

  • 【发现】croc_轻松安全地在电脑之间拷贝文件
    https://schollz.com/tinker/croc6作者宣发了croc:一种快速、安全和简单的文件传输工具。传输文件的方式有很多种,而对这些方式来说最重要的是三点:快速安全简单(最重要)croc目的是做出满足这三点的传输工具。croc使用中继传输而不是上传再下载,提高传输速度。使用基于pake......
  • 【发现】_croc_轻松安全地在电脑之间拷贝文件
    https://schollz.com/tinker/croc6作者宣发了croc:一种快速、安全和简单的文件传输工具。传输文件的方式有很多种,而对这些方式来说最重要的是三点:快速安全简单(最重要)croc目的是做出满足这三点的传输工具。croc使用中继传输而不是上传再下载,提高传输速度。使用基于pake......
  • 【发现】_我不喜欢_strlcpy
    https://nrk.neocities.org/articles/not-a-fan-of-strlcpy作者讨论了strcpy的变体strlcpy,并认为这个变体没有使用的意义。他们都是把字符串拷贝到另一个位置的函数,strcpy因为不限制目标位置的长度,容易产生缓冲区溢出,因此被很多人认为是不安全的。strlcpy则改进了这种行为......
  • 构建基于Spring Cloud和Consul的服务注册与发现系统
    构建基于SpringCloud和Consul的服务注册与发现系统大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!一、引言在微服务架构中,服务注册与发现是关键组件。SpringCloud与Consul的结合可以帮助我们轻松实现服务注册与发现功能。本文将介绍如何使用SpringCl......
  • PHP姓名配对测试源码 可查看朋友到底喜欢谁的趣味源码
    基于PHP+MYSQL开发制作的趣味测试网站源码。可在后台提前设置好缘分,自己手动在数据库里修改数据,数据库里有就会优先查询数据库的信息,没设置的话第一次查询缘分都是非常好的95-99,第二次查就比较差,所以如果要你女朋友查询你的名字觉得很好那就得是她第一反应是查和你的缘分......
  • 服务注册/发现-Eureka-微服务核心组件【分布式微服务笔记02】
    服务注册/发现-Eureka-微服务核心组件【分布式微服务笔记02】服务注册/发现-Eureka目前主流的服务注册&发现的组件是Nacos,但是Eureka作为一个老牌经典的服务注册&发现技术还是有必要学习一下,原因:一些早期的分布式微服务项目使用的是Eureka,在工作中,完全有可能遇到.后......
  • vmware安装在scsi磁盘上的grub无法发现/引导其它scsi磁盘
    #虚拟机盘结构virtual-disk-1(scsi,gpt)--fat32(EFI,grub)--ext4(empty)virutal-disk-2(scsi,gpt)--ext4(ubuntu,system,rootfs)virtual-disk-3(scsi,gpt)--ext4(empty)之前引导分区和ubuntu者在一个scsi盘上,所以没有注意到启动时有grub,进grubshell,但ls......
  • 你喜欢刚刚公布的Scrum联盟系列认证新徽章吗?
    我们非常激动地宣布,Scrum联盟重新设计了我们的徽章,以更好地展示我们会员的技能和成就。新的设计具有视觉更新和增强的功能,以提高可访问性和清晰度,并展示您在敏捷之旅中取得的成就。为什么重新设计徽章重新设计我们徽章的决定源于我们致力于检视和调整为会员提供的服务,并不断改进......
  • NEW_我不喜欢_strlcpy
    https://nrk.neocities.org/articles/not-a-fan-of-strlcpy作者讨论了strcpy的变体strlcpy,并认为这个变体没有使用的意义。他们都是把字符串拷贝到另一个位置的函数,strcpy因为不限制目标位置的长度,容易产生缓冲区溢出,因此被很多人认为是不安全的。strlcpy则改进了这种行为......
  • 定制化服务发现:Eureka中服务实例偏好的高级配置
    定制化服务发现:Eureka中服务实例偏好的高级配置在微服务架构中,服务实例的智能管理和优化是保证系统高效运行的关键。Eureka作为Netflix开源的服务注册与发现框架,提供了丰富的配置选项来满足不同场景下的需求。服务实例偏好配置允许开发者根据特定的业务需求,定制化服务实例......